Mercurial > vim
changeset 35647:ab6e7aee6829 v9.1.0565
patch 9.1.0565: Stop directory doesn't work properly in 'tags'
Commit: https://github.com/vim/vim/commit/68819afb2cdd0f44baa080db589e1d8f77099e5f
Author: zeertzjq <zeertzjq@outlook.com>
Date: Thu Jul 11 22:19:46 2024 +0200
patch 9.1.0565: Stop directory doesn't work properly in 'tags'
Problem: Stop directory doesn't work properly in 'tags'.
(Jesse Pavel)
Solution: Also move the stop directory forward by one byte.
(zeertzjq)
This doesn't support relative stop directories yet, as they are not
supported in other places like findfile() either.
fixes: #15200
related: #15202
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 11 Jul 2024 22:30:38 +0200 |
parents | c8e381ab1660 |
children | 5606239c517c |
files | src/tag.c src/testdir/test_taglist.vim src/version.c |
diffstat | 3 files changed, 30 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/tag.c +++ b/src/tag.c @@ -3412,6 +3412,11 @@ get_tagfname( // move the filename one char forward and truncate the // filepath with a NUL filename = gettail(buf); + if (r_ptr != NULL) + { + STRMOVE(r_ptr + 1, r_ptr); + ++r_ptr; + } STRMOVE(filename + 1, filename); *filename++ = NUL;
--- a/src/testdir/test_taglist.vim +++ b/src/testdir/test_taglist.vim @@ -127,6 +127,29 @@ func Test_tagsfile_without_trailing_newl set tags& endfunc +" Check that specifying a stop directory in 'tags' works properly. +func Test_tagfiles_stopdir() + let save_cwd = getcwd() + + call mkdir('Xtagsdir1/Xtagsdir2/Xtagsdir3', 'pR') + call writefile([], 'Xtagsdir1/Xtags', 'D') + + cd Xtagsdir1/ + let &tags = './Xtags;' .. fnamemodify('./..', ':p') + call assert_equal(1, len(tagfiles())) + + cd Xtagsdir2/ + let &tags = './Xtags;' .. fnamemodify('./..', ':p') + call assert_equal(1, len(tagfiles())) + + cd Xtagsdir3/ + let &tags = './Xtags;' .. fnamemodify('./..', ':p') + call assert_equal(0, len(tagfiles())) + + set tags& + call chdir(save_cwd) +endfunc + " Test for ignoring comments in a tags file func Test_tagfile_ignore_comments() call writefile([