mirror of
https://github.com/masscollaborationlabs/emacs.git
synced 2025-07-03 02:43:23 +00:00
Fix etags for Ruby module definitions with ::
Problem: In Ruby we can define a nested module/class the safe way (in the sense, if the parent module does not exist, it will define it: module M module N end end If M already exists, we can also write: module M::N; end With the later notation, the tag generated by etags will be M::N. When browsing the code, using xref-find-definitions when the point is on N, will not be able to find the definition of N because the implicit tag name is M::N. This is the same problem with nested classes or even some rare allowed definitions like explicitely defining a module/class from the global namespace: class ::A; end Solution: We need to give an explicit tag name. To achieve this, on module/class definition we truncate the name to the last found column. * lib-src/etags.c (Ruby_functions): Support "::" in module definitions. * test/manual/etags/README: Update instructions. * test/manual/etags/ruby-src/test1.ru: Add identifiers with "::". * test/manual/etags/CTAGS.good: * test/manual/etags/CTAGS.good_crlf: * test/manual/etags/CTAGS.good_update: * test/manual/etags/ETAGS.good_1: * test/manual/etags/ETAGS.good_2: * test/manual/etags/ETAGS.good_3: * test/manual/etags/ETAGS.good_4: * test/manual/etags/ETAGS.good_5: * test/manual/etags/ETAGS.good_6: * test/manual/etags/ETAGS.good_7: Adapt expected results to the change. (Bug#77421) Copyright-paperwork-exempt: yes
This commit is contained in:
parent
5039ad24a3
commit
8db310ce8b
13 changed files with 5072 additions and 5034 deletions
|
@ -5069,7 +5069,10 @@ Ruby_functions (FILE *inf)
|
|||
/* Ruby method names can end in a '='. Also, operator overloading can
|
||||
define operators whose names include '='. */
|
||||
while (!notinname (*cp) || *cp == '=')
|
||||
cp++;
|
||||
{
|
||||
cp++;
|
||||
if (*(cp - 1) == ':') name = cp;
|
||||
}
|
||||
|
||||
/* Remove "self." from the method name. */
|
||||
if (cp - name > self_size1
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue