Mercurial > vim
changeset 28057:bfa81ded42e2 v8.2.4553
patch 8.2.4553: linear tag search is a bit slow
Commit: https://github.com/vim/vim/commit/8b530b3158cbd3aee2ad9cad8e7b7964faabb51e
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Sat Mar 12 17:38:29 2022 +0000
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 https://github.com/vim/vim/issues/9937)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 12 Mar 2022 18:45:03 +0100 |
parents | fa0290f89c7b |
children | 9aee3c7d10c1 |
files | src/tag.c src/testdir/test_taglist.vim src/version.c |
diffstat | 3 files changed, 10 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/tag.c +++ b/src/tag.c @@ -2092,10 +2092,7 @@ findtags_get_next_line(findtags_state_T 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 @@ line_read_in: 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);
--- a/src/testdir/test_taglist.vim +++ b/src/testdir/test_taglist.vim @@ -259,8 +259,15 @@ func Test_tag_complete_with_overlong_lin 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&