Tags: improve VimwikiSearchTags which was not using user configuration (issue #1316) (v2)
This commit is contained in:
@@ -449,3 +449,21 @@ function! vimwiki#tags#complete_tags(ArgLead, CmdLine, CursorPos) abort
|
|||||||
let taglist = vimwiki#tags#get_tags()
|
let taglist = vimwiki#tags#get_tags()
|
||||||
return join(taglist, "\n")
|
return join(taglist, "\n")
|
||||||
endfunction
|
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
|
||||||
|
|||||||
+2
-1
@@ -4029,7 +4029,8 @@ New:~
|
|||||||
Fixed:~
|
Fixed:~
|
||||||
* Issue #1229: Bug: VimwikiGoto without argument creates empty page
|
* Issue #1229: Bug: VimwikiGoto without argument creates empty page
|
||||||
* Issue #1316: Permit tags in heading
|
* 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
|
refactoring commit
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -363,7 +363,7 @@ command! -buffer VimwikiDiaryPrevDay call vimwiki#diary#goto_prev_day()
|
|||||||
" tags commands
|
" tags commands
|
||||||
command! -buffer -bang VimwikiRebuildTags call vimwiki#tags#update_tags(1, '<bang>')
|
command! -buffer -bang VimwikiRebuildTags call vimwiki#tags#update_tags(1, '<bang>')
|
||||||
command! -buffer -nargs=* -complete=custom,vimwiki#tags#complete_tags
|
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
|
command! -buffer -nargs=* -complete=custom,vimwiki#tags#complete_tags
|
||||||
\ VimwikiGenerateTagLinks call vimwiki#tags#generate_tags(1, <f-args>)
|
\ VimwikiGenerateTagLinks call vimwiki#tags#generate_tags(1, <f-args>)
|
||||||
command! -buffer -nargs=* -complete=custom,vimwiki#tags#complete_tags
|
command! -buffer -nargs=* -complete=custom,vimwiki#tags#complete_tags
|
||||||
|
|||||||
@@ -482,3 +482,74 @@ Expect (Single tags toc):
|
|||||||
Execute (Clean file for tag #1316):
|
Execute (Clean file for tag #1316):
|
||||||
call system("rm $HOME/testmarkdown/.vimwiki_tags")
|
call system("rm $HOME/testmarkdown/.vimwiki_tags")
|
||||||
call system("rm $HOME/testmarkdown/Test-Tag-issue-1316.md")
|
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")
|
||||||
|
|||||||
Reference in New Issue
Block a user