vimwiki

Personal wiki for vim
git clone https://github.com/vimwiki/vimwiki.git
Log | Files | Refs | README | LICENSE

commit f4bd841a4c72c1cbd6373395c968e463dcf5798f
parent 5eb5c9c71f8b04dc8221fdeb7d31353994cd1c1b
Author: Tinmarino <tinmarino@gmail.com>
Date:   Fri, 17 Mar 2023 22:05:47 -0300

Tags: improve VimwikiSearchTags which was not using user configuration (issue #1316) (v2)

Diffstat:
Mautoload/vimwiki/tags.vim | 18++++++++++++++++++
Mdoc/vimwiki.txt | 3++-
Mftplugin/vimwiki.vim | 2+-
Mtest/tag.vader | 71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 92 insertions(+), 2 deletions(-)

diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim @@ -449,3 +449,21 @@ function! vimwiki#tags#complete_tags(ArgLead, CmdLine, CursorPos) abort let taglist = vimwiki#tags#get_tags() return join(taglist, "\n") endfunction + + +function! vimwiki#tags#search_tags(tag_pattern) abort + " See #1316 and rxTags in vars.vim + let tf = vimwiki#vars#get_syntaxlocal('tag_format') + + " Craft regex + let rx_this_tag = '/' + let rx_this_tag .= tf.pre . '\@<=' . tf.pre_mark + let rx_this_tag .= '\%(' . tf.in . tf.sep . '\)*' + let rx_this_tag .= a:tag_pattern + let rx_this_tag .= '\%(' . tf.sep . tf.in . '\)*' + let rx_this_tag .= tf.post_mark . tf.post . '\@=' + let rx_this_tag .= '/' + + " Search in current wiki folder + return vimwiki#base#search(rx_this_tag) +endfunction diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt @@ -4029,7 +4029,8 @@ New:~ Fixed:~ * Issue #1229: Bug: VimwikiGoto without argument creates empty page * Issue #1316: Permit tags in heading - * Issue #1270: VimwikiAddHeaderLevel map (3=) was broken by a previous + and improve |VimwikiSearchTags| and |VimwikiRebuildTags| + * Issue #1270: |VimwikiAddHeaderLevel| map (3=) was broken by a previous refactoring commit diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim @@ -363,7 +363,7 @@ command! -buffer VimwikiDiaryPrevDay call vimwiki#diary#goto_prev_day() " tags commands command! -buffer -bang VimwikiRebuildTags call vimwiki#tags#update_tags(1, '<bang>') command! -buffer -nargs=* -complete=custom,vimwiki#tags#complete_tags - \ VimwikiSearchTags VimwikiSearch /:<args>:/ + \ VimwikiSearchTags call vimwiki#tags#search_tags(<q-args>) command! -buffer -nargs=* -complete=custom,vimwiki#tags#complete_tags \ VimwikiGenerateTagLinks call vimwiki#tags#generate_tags(1, <f-args>) command! -buffer -nargs=* -complete=custom,vimwiki#tags#complete_tags diff --git a/test/tag.vader b/test/tag.vader @@ -482,3 +482,74 @@ Expect (Single tags toc): Execute (Clean file for tag #1316): call system("rm $HOME/testmarkdown/.vimwiki_tags") call system("rm $HOME/testmarkdown/Test-Tag-issue-1316.md") + + +Execute (Change delimiter #first_tag #vim #mo as for issue #1316 (2) {{{1): + let g:vimwiki_tag_format = {'pre_mark': '#\w\@=', 'post_mark': '', 'sep': '[#[:space:]]\+', 'in': '[^#:[:space:]]\+' } + unlet g:vimwiki_syntaxlocal_vars + call vimwiki#vars#init() + edit $HOME/testmarkdown/Test-Tag-issue-1316-bis.md + AssertEqual $HOME . '/testmarkdown/Test-Tag-issue-1316-bis.md', expand('%') + AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax') + AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr') + + +Do (Create File Content with #tag1 #tag2 as for issue #1316): + :edit $HOME/testmarkdown/Test-Tag-issue-1316-bis.md\<CR> + I +# Line1: Heading + # A header\<CR> +# Line2: Tag not in header + bla #first_tag\<Cr> +# Line3: Tag in header + #vim #mono\<Cr> +# Line4: empty + \<CR> +# Line5: dummy content + Words here. + \<Esc> + :write\<CR> + :VimwikiRebuildTags!\<CR> + gg + + +Execute (Assert some file info for #1316): + edit $HOME/testmarkdown/Test-Tag-issue-1316-bis.md + AssertEqual $HOME . '/testmarkdown/Test-Tag-issue-1316-bis.md', expand('%') + AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax') + AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr') + AssertEqual 'VimwikiTag', SyntaxAt(2, 6) + + +Do (Append something at first_tag): + :edit $HOME/testmarkdown/Test-Tag-issue-1316-bis.md\<CR> +# Some bug with loclist for vim7.3 and vim8.0 + :if v:version > 810\<Cr> + VimwikiSearchTags first_tag\<Cr> + else\<Cr> + 2\<Cr> + endif\<Cr> + A Content1\<Esc> + + +Do (Append something at mono tag): + :edit $HOME/testmarkdown/Test-Tag-issue-1316-bis.md\<CR> + :if v:version > 810\<Cr> + VimwikiSearchTags mono\<Cr> + else\<Cr> + 3\<Cr> + endif\<Cr> + A Content2\<Esc> + + +Expect (Content appended at tags): + # A header + bla #first_tag Content1 + #vim #mono Content2 + + Words here. + + +Execute (Clean file for tag #1316): + call system("rm $HOME/testmarkdown/.vimwiki_tags") + call system("rm $HOME/testmarkdown/Test-Tag-issue-1316-bis.md")