Eli Zaretskii writes: >> From: Alex >> Date: Sat, 10 Jun 2017 19:37:49 -0600 >> Cc: 5624@debbugs.gnu.org >> This appears to be because in etags.c, all languages use the same >> `notinname' procedure to determine a valid identifier. > > Yes. But there are exceptions from this rule, where that is deemed > necessary. For example, Ruby_functions has this: > > /* Ruby method names can end in a '='. Also, operator overloading can > define operators whose names include '='. */ > while (!notinname (*cp) || *cp == '=') > cp++; > >> Shouldn't each language (optionally) use a different procedure to >> determine the bounds of an identifier? Lisp and Scheme, for instance, >> would not have '=' in their respective `notinname' procedures. > > Feel free to work on this, if you want to scratch that particular > itch. Alternatively, just augment notinname in language-specific > support code, like some of the supported languages already do. > > TIA. One issue is that the Lisp and Scheme functions use get_tag, which uses notinname. What do you think about the following diff? It adds a wrapper to notinname which get_tag uses. I had to add an additional parameter to get_tag.