all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Vitalie Spinu <spinuvit@gmail.com>
To: Dmitry Gutov <dgutov@yandex.ru>
Cc: Helmut Eller <eller.helmut@gmail.com>, emacs-devel <emacs-devel@gnu.org>
Subject: Re: xref-find-matches and stuff
Date: Tue, 05 May 2015 19:17:22 +0200	[thread overview]
Message-ID: <87mw1jndul.fsf@gmail.com> (raw)
In-Reply-To: <5548E08A.4090305@yandex.ru> (Dmitry Gutov's message of "Tue, 5 May 2015 18:23:54 +0300")

 >>> Dmitry Gutov on Tue, 5 May 2015 18:23:54 +0300 wrote:

 > Nope:

 >      (setq xref-backend 'elisp)

 >> 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.

 > You would do (setq xref-backend 'xref-multi) in your minor mode, and write
 > implementations delegating to the list that your mode stores
 > internally.

I don't quite understand your opposition. Multiple backends is such a
common requirement that you will need to set 'xref-multi by
default. Having a parallel xref-multi engine would necessary involve
replication of variable names and, hence, needless burden on the users
and developers. What's the point?

Anyways, I expect it to be no more than 100 lines of code. So I can
implement it both ways and we can see which one is better afterwards.

 >> 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.

 > That's an interesting proposition. Will it help with duplication between

 > (defun system-name)

 > from elisp and

 > DEFUN ("system-name", Fsystem_name,

 > from etags?

Of course. This one is a particularly interesting example. Both etags
and elisp return name and file, but elisp doesn't return a line. So in
order to make them compatible you must avoid using lines in the uniform
identifier. So it could be in file:symbol:type format, or
editfnc.c:system-name:defun in your example.

I think this is a general enough convention that will probably work
reasonably well in most of the cases. You can also have several levels
of "uniqueness" of the uniform identifier, xref-uname-lax, xref-uname
and xref-uname-strict. The lax one can be file:symbol; the strict one
can be file:symbol:type:line:column.

In *xref* buffer you might have a command that will rotate through
levels of "uniqueness".

 >> 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.

 > I don't really understand this, but I probably disagree. :)

I meant that if you already got into *xref* buffer with many
alternatives there should be commands to refine duplicates on different
criteria, just as I have described above.

The problem still remains when you have small number of matches that
give the same location. You don't want to popup *xref* in that case. But
I think the above uniform identifier idea will reduce this problem to
minimum.

 >> 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.

 > Changing backends to use generics is fairly orthogonal to what I have
 > planned next, so please do that at your convenience.

Ok.

 > As for the UI, if you don't simply mean the said mode, but also the
 > alternative xref output, I'd rather you wait with that for a
 > while. The generics-based rendering and the grouping widgets will
 > bring a lot of changes.

This looks like an over-engineering to me. Why to allow locations to
display differently? To bother users with different colors and
arrangements? Do you have examples when different location classes need
to display differently and simple non-generic display would not work?

Anyways, I want my locations to display the same and have same UI for
all backends, so I am sticking to my tabular display. Would be nice if
your new generic system would allow me to easily overwrite the default
display methods for all xref-locations at once. I don't want to hunt
them one by one afterwards.

Thanks,

 Vitalie





  reply	other threads:[~2015-05-05 17:17 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-04  2:45 xref-find-matches and stuff Dmitry Gutov
2015-05-04  9:17 ` Helmut Eller
2015-05-04 12:39   ` Dmitry Gutov
2015-05-04 16:17 ` Eli Zaretskii
2015-05-04 16:37   ` Óscar Fuentes
2015-05-04 16:42     ` Eli Zaretskii
2015-05-04 16:49       ` Óscar Fuentes
2015-05-04 19:09         ` Stefan Monnier
2015-05-04 18:24     ` Dmitry Gutov
2015-05-04 20:27   ` Dmitry Gutov
2015-05-05  7:07     ` Helmut Eller
2015-05-05 13:20       ` Dmitry Gutov
2015-05-06 12:23       ` Dmitry Gutov
2015-05-06 17:45         ` Helmut Eller
2015-05-06 18:21           ` Dmitry Gutov
2015-05-06 18:34             ` Helmut Eller
2015-05-06 20:17               ` Dmitry Gutov
2015-05-05 15:40     ` Eli Zaretskii
2015-05-05 16:10       ` Dmitry Gutov
2015-05-05 16:33         ` Eli Zaretskii
2015-05-05 16:37           ` Dmitry Gutov
2015-05-05 16:45             ` Eli Zaretskii
2015-05-05 16:48               ` Dmitry Gutov
2015-05-05 17:20                 ` Eli Zaretskii
2015-05-05 17:29                   ` Dmitry Gutov
2015-05-05 18:33                     ` Eli Zaretskii
2015-05-05 18:38                       ` Dmitry Gutov
2015-05-05 19:11                         ` Eli Zaretskii
2015-05-05 21:44                           ` Dmitry Gutov
2015-05-06  2:40                             ` Eli Zaretskii
2015-05-06 12:36                               ` Dmitry Gutov
2015-05-06 13:04                                 ` Dmitry Gutov
2015-05-06 15:30                                 ` Eli Zaretskii
2015-05-06 22:37                                   ` Dmitry Gutov
2015-05-07  4:06                                     ` Eli Zaretskii
2015-07-20  1:55                                   ` Dmitry Gutov
2015-07-20 16:09                                     ` Eli Zaretskii
2015-07-14  8:30       ` Andreas Politz
2015-07-14 15:52         ` Dmitry Gutov
2015-07-16 18:59           ` Andreas Politz
2015-07-17  1:49             ` Vaidheeswaran C
2015-07-19 18:00             ` Dmitry Gutov
2015-07-20  8:19               ` Andreas Politz
2015-05-05 14:35 ` Vitalie Spinu
2015-05-05 15:23   ` Dmitry Gutov
2015-05-05 17:17     ` Vitalie Spinu [this message]
2015-05-06  0:48       ` Dmitry Gutov
2015-05-06 13:54         ` Vitalie Spinu
2015-05-07  0:09           ` Dmitry Gutov
2015-05-07 12:24             ` Vitalie Spinu
2015-05-08 12:47               ` Dmitry Gutov
2015-05-08 13:02                 ` Francesco Potortì
2015-05-08 17:15                   ` Dmitry Gutov
2015-05-10 12:31                   ` martin rudalics
2015-05-10 14:46                     ` Eli Zaretskii
2015-05-11 10:08                       ` martin rudalics
2015-05-11 15:05                         ` Eli Zaretskii
2015-05-12  9:36                           ` martin rudalics
2015-05-12 16:15                             ` Eli Zaretskii
2015-05-12 16:46                               ` Dmitry Gutov
2015-05-12 17:37                                 ` Eli Zaretskii
2015-05-12 19:57                                   ` Eli Zaretskii
2015-05-12 20:15                                     ` Dmitry Gutov
2015-05-13  2:38                                       ` Eli Zaretskii
2015-05-13 16:23                                         ` Eli Zaretskii
2015-05-14  0:46                                           ` Dmitry Gutov
2015-05-14  2:44                                             ` Eli Zaretskii
2015-05-13  7:33                               ` martin rudalics
2015-05-13 17:28                                 ` Eli Zaretskii
2015-05-14 10:13                                   ` martin rudalics
2015-05-14 15:06                                     ` Eli Zaretskii
2015-05-15 16:44                                       ` martin rudalics
2015-05-15 18:59                                         ` Eli Zaretskii
2015-05-11 15:42                     ` Francesco Potortì
2015-05-08 16:44                 ` Vitalie Spinu
2015-05-08 16:47                   ` Dmitry Gutov
2015-05-08 18:42                     ` Vitalie Spinu
2015-05-08 19:42                       ` Dmitry Gutov
2015-05-08 21:52                         ` Vitalie Spinu
2015-05-09  0:09                           ` Dmitry Gutov
2015-05-09 12:58                             ` Vitalie Spinu
2015-05-11  1:38                               ` Dmitry Gutov
2015-05-09  8:05                           ` Eli Zaretskii
2015-05-09 12:32                             ` Vitalie Spinu
2015-05-09 13:19                               ` Eli Zaretskii
2015-05-09 13:46                                 ` Vitalie Spinu
2015-05-09 14:03                                   ` Eli Zaretskii
2015-05-09 18:23                                     ` Vitalie Spinu
2015-05-09 18:49                                       ` Eli Zaretskii
2015-05-09 21:12                                         ` Vitalie Spinu
2015-05-09  7:07                       ` Eli Zaretskii
2015-05-09  9:06                         ` Helmut Eller
2015-05-09 10:34                           ` Eli Zaretskii
2015-05-09 11:43                             ` Helmut Eller
2015-05-09 12:20                               ` Eli Zaretskii
2015-05-09 12:31                                 ` Dmitry Gutov
2015-05-09 13:09                                   ` Eli Zaretskii
2015-05-09 12:58                                 ` Dmitry Gutov
2015-05-09 13:22                                   ` Eli Zaretskii
2015-05-09 21:56                                     ` Dmitry Gutov
2015-05-10 14:48                                       ` Eli Zaretskii
2015-05-11 15:37                                         ` maintaining etags Francesco Potortì
2015-05-11 16:50                                           ` Eli Zaretskii
2015-05-12 11:17                                             ` Francesco Potortì
2015-05-12 16:21                                               ` Eli Zaretskii
2015-05-12 17:11                                                 ` Eli Zaretskii
2015-05-12 16:37                                         ` xref-find-matches and stuff Eli Zaretskii
2015-05-11  1:01                         ` Stefan Monnier
2015-05-11  1:46                           ` Dmitry Gutov
2015-05-11 13:59                             ` Stefan Monnier
2015-05-11 15:22                               ` Eli Zaretskii
2015-05-11 14:56                             ` Eli Zaretskii
2015-05-11 20:24                               ` Dmitry Gutov
2015-05-12  2:36                                 ` Eli Zaretskii
2015-05-12 11:08                                   ` Dmitry Gutov
2015-05-12 16:19                                     ` Eli Zaretskii
2015-05-11 14:53                           ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87mw1jndul.fsf@gmail.com \
    --to=spinuvit@gmail.com \
    --cc=dgutov@yandex.ru \
    --cc=eller.helmut@gmail.com \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.