From: Eli Zaretskii <eliz@gnu.org>
To: Dmitry Gutov <dgutov@yandex.ru>
Cc: 19468@debbugs.gnu.org
Subject: bug#19468: 25.0.50; UI inconveniences with M-.
Date: Sun, 26 Apr 2015 17:56:37 +0300 [thread overview]
Message-ID: <837fszx7iy.fsf@gnu.org> (raw)
In-Reply-To: <54ABBB47.7010603@yandex.ru>
So, prompted by the renewed discussion of 'xref', I took another look
at the current states of affairs with the UI, and found the following
issues:
. xref-etags-mode:
I tried this mode, and found a few places for improvement:
. It's not available by default:
emacs -Q
M-x xref-et TAB => [No match]
It should be autoloaded, IMO. Perhaps there should also be a
global minor mode, for those who'd like that.
. It does nothing when point is on a unique symbol:
M-. set_cursor_from_row RET
Now, with point on its position under set_cursor_from_row, type
M-. again => nothing(??!!) happens
I guess it looks for more symbols matching set_cursor_from_row,
finds out that this is the only one, and does nothing. This is
not useful. It should at the very least say something like
"set_cursor_from_row: this is the only match". Bonus points for
prompting for a symbol, like it does when there's no symbol at
point, because I think this is more useful in this situation.
. Some problems with key bindings in the *xref* buffer:
. RET displays the candidate listed on the current line, but
closes the window displaying *xref*, so it's not easy to try
another candidate afterwards. I think it would be more helpful
to just switch to the window showing the definition, but leave
the *xref* buffer shown.
. You need to use the unconventional '.' and ',' to both move and
display the definitions -- this should at least be mentioned in
the initial echo-area message when *xref* is first displayed.
(This was reported as a problem in the original report, but
seems to be left unchanged.)
. No replacement for tags-loop-continue:
If I somehow let the window showing *xref* close (e.g., by typing
RET, see above), what is the equivalent for tags-loop-continue,
i.e. display the next candidate, without explicitly displaying
the *xref* buffer again? If there isn't one, please provide it,
at least as part of xref-etags-mode. (Other similar Emacs modes,
like Compilation and Grep, do provide commands to move to the
next item without first switching to the buffer that shows all
the hits.)
. The back-end issue:
. Caveat: I couldn't find any documentation of back-ends, so
perhaps I'm missing something important. That being said...
. I tried the ELisp back-end and found that it somehow affects the
UI, so that the UI behaves differently than with the default
etags back-end, when the user types something that is "complete,
but not unique": when using the etags back-end, Emacs displays a
list of candidates in the *xref* buffer, whereas with the
elisp-mode back-end it shows the "complete" candidate, doesn't
display *xref*, and doesn't insert the other candidates into
*xref*. Is this difference intended? It's confusing, to say the
least.
. xref.el says:
;; For now, make the etags backend the default.
(defvar xref-find-function #'etags-xref-find
But what are the alternatives, if any? I could only find
something related in ada-mode and in elisp-mode. This means
that, for example, for C/C++ and Java, etags is the only
available back-end, and this change is currently just a different
UI wrapping the same basic functionality? Is there any further
development planned for the near future?
. The doc string of xref-find-function mentions several variants of
invoking the function, but there doesn't seem to be any way of
controlling that when invoking the function interactively, is
there? I think it would be good to be able to lookup only the
definitions or only the references of a symbol.
HTH
next prev parent reply other threads:[~2015-04-26 14:56 UTC|newest]
Thread overview: 161+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-29 20:26 bug#19468: 25.0.50; UI inconveniences with M- Eli Zaretskii
2014-12-30 6:04 ` Dmitry Gutov
2014-12-30 8:19 ` Helmut Eller
2014-12-30 16:00 ` Eli Zaretskii
2014-12-30 17:02 ` Helmut Eller
2014-12-30 17:39 ` Eli Zaretskii
2014-12-30 19:56 ` Dmitry Gutov
2014-12-30 19:38 ` Dmitry Gutov
2014-12-30 22:58 ` Helmut Eller
2015-01-03 21:37 ` Dmitry Gutov
2015-01-04 8:55 ` martin rudalics
2015-01-04 22:51 ` Dmitry Gutov
2015-01-05 7:08 ` martin rudalics
2015-01-06 10:39 ` Dmitry Gutov
2015-04-26 14:56 ` Eli Zaretskii [this message]
2015-04-27 4:30 ` Stefan Monnier
2015-04-27 15:07 ` Eli Zaretskii
2015-04-27 17:35 ` Stefan Monnier
2015-04-27 19:26 ` Eli Zaretskii
2015-04-27 21:54 ` Stefan Monnier
2015-04-27 22:45 ` Dmitry Gutov
2015-04-28 14:56 ` Eli Zaretskii
2015-04-28 14:48 ` Eli Zaretskii
2015-04-28 21:00 ` Dmitry Gutov
2015-04-29 15:41 ` Eli Zaretskii
2015-04-29 17:22 ` Dmitry Gutov
2015-04-29 17:58 ` Eli Zaretskii
2015-04-27 22:36 ` Dmitry Gutov
2015-04-27 23:15 ` Stefan Monnier
2015-04-27 23:25 ` Dmitry Gutov
2015-04-28 1:26 ` Stefan Monnier
2015-04-28 1:37 ` Dmitry Gutov
2015-04-28 13:30 ` Stefan Monnier
2015-04-28 21:04 ` Dmitry Gutov
2015-04-27 22:44 ` Dmitry Gutov
2015-04-27 23:19 ` Stefan Monnier
2015-04-28 0:24 ` Dmitry Gutov
2015-04-28 1:34 ` Stefan Monnier
2015-04-28 15:01 ` Eli Zaretskii
2015-04-28 18:47 ` Dmitry Gutov
2015-04-28 14:59 ` Eli Zaretskii
2015-04-28 14:55 ` Eli Zaretskii
2015-04-28 21:33 ` Dmitry Gutov
2015-04-29 15:46 ` Eli Zaretskii
2015-04-29 22:56 ` Dmitry Gutov
2015-04-30 13:48 ` Eli Zaretskii
2015-05-01 2:27 ` Dmitry Gutov
2015-05-01 6:45 ` Eli Zaretskii
2015-05-01 11:27 ` Dmitry Gutov
2015-05-01 12:57 ` Eli Zaretskii
2015-05-01 14:51 ` Dmitry Gutov
2015-05-01 18:38 ` Eli Zaretskii
2015-05-01 18:44 ` Dmitry Gutov
2015-05-01 19:22 ` Eli Zaretskii
2015-05-01 20:36 ` Dmitry Gutov
2015-05-02 7:39 ` Eli Zaretskii
2015-05-01 18:13 ` Stefan Monnier
2015-04-27 22:09 ` Dmitry Gutov
2015-04-28 14:49 ` Eli Zaretskii
2015-04-28 21:59 ` Dmitry Gutov
2015-04-29 15:46 ` Eli Zaretskii
2015-04-29 22:32 ` Dmitry Gutov
2015-04-27 15:13 ` Eli Zaretskii
2015-04-27 17:21 ` Stefan Monnier
2015-04-27 19:15 ` Eli Zaretskii
2015-04-27 21:42 ` Stefan Monnier
2015-04-27 22:32 ` Dmitry Gutov
2015-04-28 14:55 ` Eli Zaretskii
2015-04-28 22:04 ` Dmitry Gutov
2015-04-29 15:47 ` Eli Zaretskii
2015-04-27 22:25 ` Dmitry Gutov
2015-04-27 22:54 ` Stefan Monnier
2015-04-27 23:15 ` Dmitry Gutov
2015-04-28 1:25 ` Stefan Monnier
2015-04-28 2:15 ` Dmitry Gutov
2015-04-28 13:36 ` Stefan Monnier
2015-04-29 0:24 ` Dmitry Gutov
2015-04-28 15:03 ` Eli Zaretskii
2015-04-28 22:07 ` Dmitry Gutov
2015-04-29 15:47 ` Eli Zaretskii
2015-04-28 14:58 ` Eli Zaretskii
2015-04-28 22:08 ` Dmitry Gutov
2015-04-28 0:01 ` Drew Adams
2015-04-28 14:57 ` Eli Zaretskii
2015-04-29 15:00 ` Vitalie Spinu
2015-04-29 15:25 ` Dmitry Gutov
2015-04-29 16:01 ` Vitalie Spinu
2015-04-29 22:02 ` Stefan Monnier
2015-04-29 16:11 ` Eli Zaretskii
2015-04-28 14:52 ` Eli Zaretskii
2015-04-28 22:28 ` Dmitry Gutov
2015-04-29 15:48 ` Eli Zaretskii
2015-04-29 17:43 ` Dmitry Gutov
2015-04-29 18:03 ` Eli Zaretskii
2015-05-02 0:08 ` Dmitry Gutov
2015-05-02 6:42 ` Eli Zaretskii
2015-05-02 10:23 ` Dmitry Gutov
2015-05-02 11:24 ` Eli Zaretskii
2015-05-02 12:07 ` Dmitry Gutov
2015-05-02 12:46 ` Eli Zaretskii
2015-05-02 7:10 ` Eli Zaretskii
2015-05-02 10:11 ` Dmitry Gutov
2015-05-02 11:16 ` Eli Zaretskii
2015-05-02 11:45 ` Eli Zaretskii
2015-05-02 12:16 ` Dmitry Gutov
2015-05-02 12:49 ` Eli Zaretskii
2015-05-02 13:04 ` Dmitry Gutov
2015-05-03 14:44 ` Eli Zaretskii
2015-05-02 12:01 ` Dmitry Gutov
2015-05-02 12:45 ` Eli Zaretskii
2015-05-02 13:42 ` Dmitry Gutov
2015-05-02 14:13 ` Eli Zaretskii
2015-05-02 17:41 ` Dmitry Gutov
2015-05-02 18:45 ` Eli Zaretskii
2015-05-02 19:17 ` Dmitry Gutov
2015-05-02 19:45 ` Eli Zaretskii
2015-05-02 20:06 ` Dmitry Gutov
2015-05-02 13:41 ` Eli Zaretskii
2015-05-02 17:35 ` Dmitry Gutov
2015-05-04 14:48 ` Eli Zaretskii
2015-04-27 22:15 ` Dmitry Gutov
2015-04-28 14:50 ` Eli Zaretskii
2015-04-28 22:15 ` Dmitry Gutov
2015-04-29 15:48 ` Eli Zaretskii
2015-04-29 17:42 ` Dmitry Gutov
2015-04-27 22:02 ` Dmitry Gutov
2015-04-27 23:47 ` Dmitry Gutov
2015-04-28 15:00 ` Eli Zaretskii
2015-04-28 23:24 ` Dmitry Gutov
2015-04-29 15:49 ` Eli Zaretskii
2015-04-29 23:03 ` Dmitry Gutov
2015-04-30 13:49 ` Eli Zaretskii
2014-12-30 15:41 ` Eli Zaretskii
2014-12-30 20:26 ` Dmitry Gutov
2015-01-04 23:52 ` Dmitry Gutov
2015-01-05 19:43 ` Eli Zaretskii
2014-12-30 17:03 ` Stefan Monnier
2014-12-30 17:11 ` Dmitry Gutov
2014-12-30 17:43 ` Eli Zaretskii
2014-12-30 17:49 ` Dmitry Gutov
2014-12-30 18:01 ` Eli Zaretskii
2014-12-30 17:25 ` Helmut Eller
2014-12-30 18:08 ` Stefan Monnier
2014-12-30 17:41 ` Eli Zaretskii
2014-12-30 17:50 ` Helmut Eller
2014-12-30 17:58 ` Eli Zaretskii
2014-12-30 18:08 ` Dmitry Gutov
2014-12-30 17:53 ` Dmitry Gutov
2014-12-30 18:00 ` Eli Zaretskii
2014-12-30 18:01 ` Helmut Eller
2014-12-30 18:13 ` Eli Zaretskii
2014-12-30 18:20 ` Helmut Eller
2014-12-30 18:27 ` Eli Zaretskii
2014-12-30 18:33 ` Helmut Eller
2014-12-30 18:38 ` Eli Zaretskii
2014-12-30 18:53 ` Helmut Eller
2014-12-30 19:33 ` Eli Zaretskii
2014-12-30 18:33 ` Dmitry Gutov
2016-02-21 23:00 ` Dmitry Gutov
2016-02-22 17:18 ` Eli Zaretskii
2016-02-22 21:15 ` Dmitry Gutov
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=837fszx7iy.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=19468@debbugs.gnu.org \
--cc=dgutov@yandex.ru \
/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 public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).