[திங்கள் செப்டம்பர் 11, 2017] Dmitry Gutov wrote: > On 9/10/17 7:23 PM, Tom Tromey wrote: >> It would be nice if imenu were a back end for xref. >> Then M-. could also use symbols found by imenu. >> A further wrinkle on this would be if xref, project, and imenu >> worked >> together, so that M-. would automatically know to look at imenu results >> for other buffers in the same project. > > Agreed. It could be a nice default for when no tags table is currently > visited. I tried to write a general imenu backend in attached file (extracted from my init.el) but I hit quite a few roadblocks, 1. I activate the imenu backend iff there are no tags table defined for the buffer but this means that one cannot use the imenu backend to jump to definitions for symbols that TAGS do not know of currently. I can think of two ways to solve this problem, (a) Check if the symbol is in TAGS table. (b) Modify the etags backend so that the user can say "I have no TAGS table for this file/project/whatever." (a) is definitely not clean, and (b) sounds feasible but similar situation can also exist with other backends (like elisp). I'm lost on how to solve this problem. 2. I have not defined all the methods and the completion-table does not handle the nested case of the index alist. AFAIU from `(elisp) Programmed Completion', completion "ends" when `try-completion' returns t but I seem to be mistaken. I have to rewrite completion-table to be like `imenu--completion-buffer' but I don't know how to pull that off. 3. `imenu-xref--in-alist' is mostly a 1-1 copy of `imenu--in-alist' with the only difference being my function returns all matches of the symbol instead of just the first one. This should be easy enough to fix by adding an optional argument INCLUDE-ALL to `imenu--in-alist'. I'm testing in python-mode with the following settings, (setq imenu-name-lookup-function (lambda (symbol item) (string-prefix-p symbol item)) python-imenu-format-parent-item-jump-label-function (lambda (_ name) name))