patch 8.2.4553: linear tag search is a bit slow
Problem: Linear tag search is a bit slow.
Solution: Remove a vim_ftell() call. (Yegappan Lakshmanan, closes #9937)
diff --git a/src/tag.c b/src/tag.c
index 45b3062..4cf11dc 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -2092,10 +2092,7 @@
eof = cs_fgets(st->lbuf, st->lbuf_size);
else
#endif
- {
- sinfo_p->curr_offset = vim_ftell(st->fp);
eof = vim_fgets(st->lbuf, st->lbuf_size, st->fp);
- }
} while (!eof && vim_isblankline(st->lbuf));
if (eof)
@@ -2850,7 +2847,7 @@
return;
}
- if (st->state == TS_STEP_FORWARD)
+ if (st->state == TS_STEP_FORWARD || st->state == TS_LINEAR)
// Seek to the same position to read the same line again
vim_ignored = vim_fseek(st->fp, search_info.curr_offset,
SEEK_SET);
diff --git a/src/testdir/test_taglist.vim b/src/testdir/test_taglist.vim
index 04ca02d..23ef107 100644
--- a/src/testdir/test_taglist.vim
+++ b/src/testdir/test_taglist.vim
@@ -259,8 +259,15 @@
call writefile(tagslines, 'Xtags')
set tags=Xtags
+ " try with binary search
+ set tagbsearch
call feedkeys(":tag inbou\<C-A>\<C-B>\"\<CR>", 'xt')
call assert_equal('"tag inboundGSV inboundGovernor inboundGovernorCounters', @:)
+ " try with linear search
+ set notagbsearch
+ call feedkeys(":tag inbou\<C-A>\<C-B>\"\<CR>", 'xt')
+ call assert_equal('"tag inboundGSV inboundGovernor inboundGovernorCounters', @:)
+ set tagbsearch&
call delete('Xtags')
set tags&
diff --git a/src/version.c b/src/version.c
index acc5ccf..0c90e2d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4553,
+/**/
4552,
/**/
4551,