1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-03 10:31:37 -08:00

Improve documentation of new Xref options

* lisp/progmodes/xref.el (xref-auto-jump-to-first-definition)
(xref-auto-jump-to-first-xref): More accurate description in the
doc strings.

* doc/emacs/maintaining.texi (Looking Up Identifiers)
(Identifier Search, List Identifiers, Project File Commands): Fix
the documentation of 'xref-auto-jump-to-first-definition' and
'xref-auto-jump-to-first-xref' to be more accurate.

* etc/NEWS: More accurate wording of the entry about
'xref-auto-jump-to-first-definition' and
'xref-auto-jump-to-first-xref'.
This commit is contained in:
Eli Zaretskii 2021-09-07 16:03:27 +03:00
parent d5c6bf9625
commit b02c9bcceb
3 changed files with 45 additions and 31 deletions

View file

@ -1747,10 +1747,12 @@ commands (@pxref{Xref Commands}). When invoked with a prefix
argument, this command additionally prompts for the base directory argument, this command additionally prompts for the base directory
from which to start the search; this allows, for example, to limit the from which to start the search; this allows, for example, to limit the
search only to project files under a certain subdirectory of the search only to project files under a certain subdirectory of the
project root. project root. The way this command displays the matches is affected
by the value of @code{xref-auto-jump-to-first-xref} (@pxref{Identifier
Search}).
@findex project-search @findex project-search
@kbd{M-x project-search} is an interactive variant of @kbd{M-x project-search} is an incremental variant of
@code{project-find-regexp}. It prompts for a regular expression to @code{project-find-regexp}. It prompts for a regular expression to
search in the current project's files, but instead of finding all the search in the current project's files, but instead of finding all the
matches and displaying them, it stops when it finds a match and visits matches and displaying them, it stops when it finds a match and visits
@ -2155,20 +2157,11 @@ which these definitions are found. Selecting one of these candidates
by typing @kbd{@key{RET}} or clicking @kbd{mouse-2} will pop a buffer by typing @kbd{@key{RET}} or clicking @kbd{mouse-2} will pop a buffer
showing the corresponding definition. If the value of the variable showing the corresponding definition. If the value of the variable
@code{xref-auto-jump-to-first-definition} is @code{move}, the first @code{xref-auto-jump-to-first-definition} is @code{move}, the first
candidate is automatically selected, and if it's @code{t} or of these candidates is automatically selected, and if it's @code{t} or
@code{show}, the first candidate is automatically shown. The default @code{show}, the first candidate is automatically shown; @code{t} also
value is @code{nil}, which just shows the candidates in the selects the window showing the first candidate. The default value is
@file{*xref*} buffer, but doesn't select any of them. @code{nil}, which just shows the candidates in the @file{*xref*}
buffer, but doesn't select any of them.
@vindex xref-auto-jump-to-first-xref
If the value of the variable @code{xref-auto-jump-to-first-xref} is
@code{t}, @emph{all} Xref commands automatically jump to the first
result. If the value is @code{show}, the first result is shown, but
the window showing the @file{*xref*} buffer is left selected. If the
value is @code{move}, the first result is selected in the
@file{*xref*} buffer, but is not shown. The default value is
@code{nil}, which just shows the results in the @file{*xref*} buffer,
but doesn't select any of them.
When entering the identifier argument to @kbd{M-.}, the usual When entering the identifier argument to @kbd{M-.}, the usual
minibuffer completion commands can be used (@pxref{Completion}), with minibuffer completion commands can be used (@pxref{Completion}), with
@ -2337,6 +2330,16 @@ identifier, showing the file name and the line where the identifier is
referenced. The XREF mode commands are available in this buffer, see referenced. The XREF mode commands are available in this buffer, see
@ref{Xref Commands}. @ref{Xref Commands}.
@vindex xref-auto-jump-to-first-xref
If the value of the variable @code{xref-auto-jump-to-first-xref} is
@code{t}, @code{xref-find-references} automatically jumps to the first
result and selects the window where it is displayed. If the value is
@code{show}, the first result is shown, but the window showing the
@file{*xref*} buffer is left selected. If the value is @code{move},
the first result is selected in the @file{*xref*} buffer, but is not
shown. The default value is @code{nil}, which just shows the results
in the @file{*xref*} buffer, but doesn't select any of them.
@findex xref-query-replace-in-results @findex xref-query-replace-in-results
@kbd{M-x xref-query-replace-in-results} reads a regexp to match identifier @kbd{M-x xref-query-replace-in-results} reads a regexp to match identifier
names and a replacement string, just like ordinary @kbd{M-x names and a replacement string, just like ordinary @kbd{M-x
@ -2409,6 +2412,8 @@ selected tags table if one is loaded (@code{completion-at-point}).
@item M-x xref-find-apropos @key{RET} @var{regexp} @key{RET} @item M-x xref-find-apropos @key{RET} @var{regexp} @key{RET}
Display a list of all known identifiers matching @var{regexp}. Display a list of all known identifiers matching @var{regexp}.
The way this command displays the matches is affected by the value of
@code{xref-auto-jump-to-first-xref} (@pxref{Identifier Search}).
@item M-x list-tags @key{RET} @var{file} @key{RET} @item M-x list-tags @key{RET} @var{file} @key{RET}
Display a list of the identifiers defined in the program file Display a list of the identifiers defined in the program file
@ -2435,10 +2440,9 @@ for the project to be available. @xref{Tags Tables}. If used
interactively, the default tag is file name of the current buffer if interactively, the default tag is file name of the current buffer if
used interactively. used interactively.
@c Sadly, the new-and-improved Xref feature doesn't provide anything @c Sadly, the new-and-improved Xref feature doesn't provide some
@c close to the described below features of the now-obsoleted @c of the features of the now-obsoleted tags-apropos. I'm leaving
@c tags-apropos. I'm leaving this here to encourage enhancements to @c this here to encourage enhancements to xref.el.
@c xref.el.
@ignore @ignore
@findex tags-apropos @findex tags-apropos
@vindex tags-apropos-verbose @vindex tags-apropos-verbose

View file

@ -2309,13 +2309,18 @@ before navigating to the selected location.
+++ +++
*** New user options to automatically show the first Xref match. *** New user options to automatically show the first Xref match.
The new user option 'xref-auto-jump-to-first-definition' controls the The new user option 'xref-auto-jump-to-first-definition' controls the
behavior of 'xref-find-definitions' and related commands: if it's t or behavior of 'xref-find-definitions' and related commands, like
'show', the first match is automatically displayed; if it's 'move', 'xref-find-definitions-other-windo': if it's t or 'show', the first
point in the "*xref*" buffer is automatically moved to the first match match is automatically displayed; if it's 'move', point in the
without displaying it. "*xref*" buffer is automatically moved to the first match without
The new user option 'xref-auto-jump-to-first-xref' changes the behavior of displaying it.
all Xref commands in the same way as 'xref-auto-jump-to-first-definition' The new user option 'xref-auto-jump-to-first-xref' changes the
affects the "find-definitions" commands. behavior of Xref commands such as 'xref-find-references',
'xref-find-apropos', and 'project-find-regexp', which are expected to
display many match that the user would like to
visit. 'xref-auto-jump-to-first-xref' changes their behavior muuch in
the same way as 'xref-auto-jump-to-first-definition' affects the
"find-definitions" commands.
*** New user options 'xref-search-program' and 'xref-search-program-alist'. *** New user options 'xref-search-program' and 'xref-search-program-alist'.
So far 'grep' and 'ripgrep' are supported. 'ripgrep' seems to offer better So far 'grep' and 'ripgrep' are supported. 'ripgrep' seems to offer better

View file

@ -420,7 +420,9 @@ elements is negated: these commands will NOT prompt."
"If t, `xref-find-definitions' always jumps to the first result. "If t, `xref-find-definitions' always jumps to the first result.
`show' means to show the first result's location, but keep the `show' means to show the first result's location, but keep the
focus on the Xref buffer's window. focus on the Xref buffer's window.
`move' means to only move point to the first result." `move' means to only move point to the first result.
This variable also affects commands similar to `xref-find-definitions',
such as `xref-find-definitions-other-window'."
:type '(choice (const :tag "Jump" t) :type '(choice (const :tag "Jump" t)
(const :tag "Show" show) (const :tag "Show" show)
(const :tag "Move point only" move) (const :tag "Move point only" move)
@ -429,13 +431,16 @@ focus on the Xref buffer's window.
:package-version '(xref . "1.2.0")) :package-version '(xref . "1.2.0"))
(defcustom xref-auto-jump-to-first-xref nil (defcustom xref-auto-jump-to-first-xref nil
"If t, xref commands always jump to the first result. "If t, `xref-find-references' always jumps to the first result.
`show' means to show the first result's location, but keep the `show' means to show the first result's location, but keep the
focus on the Xref buffer's window. focus on the Xref buffer's window.
`move' means to only move point to the first result. `move' means to only move point to the first result.
This variable also affects commands similar to `xref-find-definitions',
such as `xref-find-references-at-mouse', `xref-find-apropos',
and `project-find-regexp'.
Please be careful changing this value if you are using Emacs 27 Please be careful when changing the value if you are using Emacs 27
or earlier: it can break dired-do-find-regexp-and-replace." or earlier: it can break `dired-do-find-regexp-and-replace'."
:type '(choice (const :tag "Jump" t) :type '(choice (const :tag "Jump" t)
(const :tag "Show" show) (const :tag "Show" show)
(const :tag "Move point only" move) (const :tag "Move point only" move)