[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: xref-find-matches and stuff
From: |
Vitalie Spinu |
Subject: |
Re: xref-find-matches and stuff |
Date: |
Tue, 05 May 2015 16:35:06 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) |
I got a bit of time to look through the abstractions. Here is my
concrete suggestion.
As I already said in other place, current old-school polymorphism with
`xref-find-function`, xref-identifier-at-point-function' and
`xref-identifier-completion-table-function` is rather clumsy if you want
to build an UI for backend manipulation.
You are already using class machinery, so how about to shift the focus
on backends and use generics instead. More concretely:
(cl-defmethod xref-definitions ((b (eql elisp)) id)
(message "elisp definitions: %s" id))
(cl-defmethod xref-references ((b (eql etags)) id)
(message "etags references: %s" id))
(cl-defmethod xref-apropos ((b (eql elisp)) pattern)
(message "elisp apropos: %s" pattern))
(cl-defmethod xref-matches ((b (eql elisp)) pattern)
(message "elisp matches: %s" pattern))
Then you can simply.
(xref-definitions 'etags "blabla")
(xref-matches 'elisp "blabla")
Once that's done, you can introduce
(setq xref-backends '(elisp etags ...))
for current backends. Then adding functionality to add/remove backends
from current list and rotate through different preset configurations of
backends is a piece of cake.
Alternatively you can still go with more monolithic
(cl-defmethod xref-find ((b (eql elisp) action id)))
but this has an obvious drawback that whenever you add a new
`xref-find-SOMETHING` you need to go back and modify all `xref-find`
methods. Not quite an option for a good design IMO.
As to removing duplicates, I don't see it as a big deal. You can define
`xref-loc-name` methods for location objects to extract a
wanna-be-unique name to be specifically used in comparison between
backends. Even if you cannot get rid of all duplicates it's the task of
the *xref* UI to provide sorting and duplication removal on specific
attributes.
If you are willing to wait till 20th of May I can propose patches for
this abstraction change and other UI ideas that we have discussed
elsewhere.
Vitalie
- Re: xref-find-matches and stuff, (continued)
- Re: xref-find-matches and stuff, Eli Zaretskii, 2015/05/05
- Re: xref-find-matches and stuff, Dmitry Gutov, 2015/05/05
- Re: xref-find-matches and stuff, Eli Zaretskii, 2015/05/05
- Re: xref-find-matches and stuff, Dmitry Gutov, 2015/05/05
- Re: xref-find-matches and stuff, Eli Zaretskii, 2015/05/05
- Re: xref-find-matches and stuff, Dmitry Gutov, 2015/05/06
- Re: xref-find-matches and stuff, Dmitry Gutov, 2015/05/06
- Re: xref-find-matches and stuff, Eli Zaretskii, 2015/05/06
- Re: xref-find-matches and stuff, Dmitry Gutov, 2015/05/06
- Re: xref-find-matches and stuff, Eli Zaretskii, 2015/05/07
Re: xref-find-matches and stuff,
Vitalie Spinu <=
- Re: xref-find-matches and stuff, Dmitry Gutov, 2015/05/05
- Re: xref-find-matches and stuff, Vitalie Spinu, 2015/05/05
- Re: xref-find-matches and stuff, Dmitry Gutov, 2015/05/05
- Re: xref-find-matches and stuff, Vitalie Spinu, 2015/05/06
- Re: xref-find-matches and stuff, Dmitry Gutov, 2015/05/06
- Re: xref-find-matches and stuff, Vitalie Spinu, 2015/05/07
- Re: xref-find-matches and stuff, Dmitry Gutov, 2015/05/08
- Re: xref-find-matches and stuff, Francesco Potortì, 2015/05/08
- Re: xref-find-matches and stuff, Dmitry Gutov, 2015/05/08
- Re: xref-find-matches and stuff, martin rudalics, 2015/05/10