runtime(doc): clarify the use of 'tagfunc', update a comment in tags.c

related: #17228

Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Christian Brabandt
2025-04-30 19:31:58 +02:00
parent fa8b7db99a
commit fb08192ca7
3 changed files with 16 additions and 13 deletions

View File

@ -8521,7 +8521,8 @@ A jump table for the options with a short description can be found at |Q_op|.
local to buffer local to buffer
{not available when compiled without the |+eval| {not available when compiled without the |+eval|
feature} feature}
This option specifies a function to be used to perform tag searches. This option specifies a function to be used to perform tag searches
(including |taglist()|).
The function gets the tag pattern and should return a List of matching The function gets the tag pattern and should return a List of matching
tags. See |tag-function| for an explanation of how to write the tags. See |tag-function| for an explanation of how to write the
function and an example. The value can be the name of a function, a function and an example. The value can be the name of a function, a

View File

@ -1,4 +1,4 @@
*tagsrch.txt* For Vim version 9.1. Last change: 2025 Apr 26 *tagsrch.txt* For Vim version 9.1. Last change: 2025 Apr 30
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -894,8 +894,8 @@ Common arguments for the commands above:
7. Using 'tagfunc' *tag-function* 7. Using 'tagfunc' *tag-function*
It is possible to provide Vim with a function which will generate a list of It is possible to provide Vim with a function which will generate a list of
tags used for commands like |:tag|, |:tselect| and Normal mode tag commands tags used for commands like |:tag|, |:tselect|, Normal mode tag commands like
like |CTRL-]|. |CTRL-]| and for the |taglist()| function.
The function used for generating the taglist is specified by setting the The function used for generating the taglist is specified by setting the
'tagfunc' option. The function will be called with three arguments: 'tagfunc' option. The function will be called with three arguments:
@ -950,15 +950,14 @@ It is not allowed to close a window or change window from inside 'tagfunc'.
The following is a hypothetical example of a function used for 'tagfunc'. It The following is a hypothetical example of a function used for 'tagfunc'. It
uses the output of |taglist()| to generate the result: a list of tags in the uses the output of |taglist()| to generate the result: a list of tags in the
inverse order of file names. inverse order of file names.
> >vim
function TagFunc(pattern, flags, info) function CompareFilenames(item1, item2)
function CompareFilenames(item1, item2) let f1 = a:item1['filename']
let f1 = a:item1['filename'] let f2 = a:item2['filename']
let f2 = a:item2['filename'] return f1 >=# f2 ? -1 : f1 <=# f2 ? 1 : 0
return f1 >=# f2 ? endfunction
\ -1 : f1 <=# f2 ? 1 : 0
endfunction
function TagFunc(pattern, flags, info)
let result = taglist(a:pattern) let result = taglist(a:pattern)
call sort(result, "CompareFilenames") call sort(result, "CompareFilenames")
@ -966,5 +965,7 @@ inverse order of file names.
endfunc endfunc
set tagfunc=TagFunc set tagfunc=TagFunc
< <
Note: When executing |taglist()| the 'tagfunc' function won't be called
recursively.
vim:tw=78:ts=8:noet:ft=help:norl: vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -1835,7 +1835,8 @@ findtags_in_help_init(findtags_state_T *st)
* Use the function set in 'tagfunc' (if configured and enabled) to get the * Use the function set in 'tagfunc' (if configured and enabled) to get the
* tags. * tags.
* Return OK if at least 1 tag has been successfully found, NOTDONE if the * Return OK if at least 1 tag has been successfully found, NOTDONE if the
* 'tagfunc' is not used or the 'tagfunc' returns v:null and FAIL otherwise. * 'tagfunc' is not used, still executing or the 'tagfunc' returned v:null and
* FAIL otherwise.
*/ */
static int static int
findtags_apply_tfu(findtags_state_T *st, char_u *pat, char_u *buf_ffname) findtags_apply_tfu(findtags_state_T *st, char_u *pat, char_u *buf_ffname)