aboutsummaryrefslogtreecommitdiffstats
path: root/exec
diff options
context:
space:
mode:
authorLaurent Stacul2025-03-31 20:30:27 +0200
committerEli Zaretskii2025-04-03 08:50:59 +0300
commit8db310ce8b4d453cda8114c3a06cd0f328f99a1b (patch)
treef8fddfb6984ae4edb3148ef0059902fd830263ae /exec
parent5039ad24a362d88ac43d79f9fa5a5ba11f0da61b (diff)
downloademacs-8db310ce8b4d453cda8114c3a06cd0f328f99a1b.tar.gz
emacs-8db310ce8b4d453cda8114c3a06cd0f328f99a1b.zip
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
Diffstat (limited to 'exec')
0 files changed, 0 insertions, 0 deletions