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:
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")