Subject: 25.0.50; UI inconveniences with M-.
From: Eli Zaretskii <[email-masked]>
To: [email-masked]
Date: Mon, 29 Dec 2014 22:26:23 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Make sure you generated src/TAGS, and then:

  emacs -Q
  C-x C-f src/buffer.c RET
  M-x visit-tags-table RET RET
  M-. display_line RET

This pops up a *xref* buffer which looks like this:

  d:/gnu/git/emacs/trunk/src/xdisp.c
    display_line 
    move_it_in_display_line_to 
    move_it_in_display_line

with point at the beginning of the first line.

Why doesn't it put me on "display_line"s line, and display its
definition at the same time?  This is a regression from the old tags
feature, where just "M-. RET" will already show the first matching
definition.

Further, this buffer's name, *xref*, has no mnemonic significance, and
there are no clues as to what it wants to tell me or what is expected
of me.  The candidates are not mouse-sensitive, either, which is
un-Emacsy.  It functions like *Completions*, but it ain't one.

By trial and error I found out that I'm expected to move to the
candidate I want with cursor movement keys, and press RET to exit the
buffer.  Moving up an down is slow, probably because it visits files
without waiting for RET or some other gesture to select a candidate
(why was that design decision made?).  Hitting RET on the first line,
the one that shows the file name, results in "No reference at point",
which is not really useful.

Another peculiarity is that once I press <down> arrow once, I can no
longer get back to the first line, the one that shows the source file:
pressing <up> on the 2nd line doesn't move point, but it does return
the original buffer to the window above *xref*.  Weird.

Finally, invoking the same command from the menu bar ought to present
a dialog box with the candidates, according to the general rule: if a
command was invoked by a mouse gesture, selection of candidates is via
a GUI dialog, not a special-purpose buffer.  But that doesn't happen.

In sum: please make the new feature at least as good as the old one it
replaces.  And when introducing new exhibits, like the *xref* window,
please make them self-explanatory and convenient/natural to use for
newbies and veterans alike.

TIA

In GNU Emacs 25.0.50.110 (i686-pc-mingw32)
 of 2014-12-29 on HOME-C4E4A596F7
Repository revision: ce1ebdf1ba8acc75e8f959f414652cdc87e76401
Windowing system distributor `Microsoft Corp.', version 5.1.2600
Configured using:
 `configure --prefix=/d/usr --enable-checking=yes,glyphs 'CFLAGS=-O0
 -g3''

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY ACL GNUTLS LIBXML2 ZLIB

Important settings:
  value of $LANG: ENU
  locale-coding-system: cp1255

Major mode: XREF

Minor modes in effect:
  diff-auto-refine-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  line-number-mode: t

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Starting a new list of tags tables
M-. runs the command xref-find-definitions
M-, runs the command xref-pop-marker-stack
Making tags completion table for d:/gnu/git/emacs/trunk/src/TAGS...80%
Making tags completion table for d:/gnu/git/emacs/trunk/lisp/TAGS...94%
Making tags completion table for d:/gnu/git/emacs/trunk/lwlib/TAGS...
Making tags completion table for d:/gnu/git/emacs/trunk/src/TAGS...done
Making completion list...
xref--location-at-point: No reference at point

Load-path shadows:
None found.

Features:
(shadow sort gnus-util mail-extr emacsbug message dired format-spec
rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util help-fns mail-prsvr mail-utils cl-macs gv thingatpt etags xref
eieio byte-opt bytecomp byte-compile cl-extra cconv eieio-core
cl-loaddefs cl-lib ring vc-git diff-mode easy-mmode cc-mode cc-fonts
easymenu cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars
cc-defs time-date tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel dos-w32 ls-lisp disp-table w32-win w32-vars
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer nadvice loaddefs button faces cus-face macroexp
files text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
w32notify w32 multi-tty emacs)

Memory information:
((conses 8 123285 11708)
 (symbols 32 104663 1)
 (miscs 32 77 302)
 (strings 16 108087 9345)
 (string-bytes 1 2510300)
 (vectors 8 15137)
 (vector-slots 4 446128 6934)
 (floats 8 75 209)
 (intervals 28 2628 236)
 (buffers 516 18))