cd9cfd299e
If a user is happy with the default vimwiki location, they may not set the g:vimwiki_list global variable. In this case, the len(g:vimwiki_list) vimwiki#diary#calendar_sign function throws an error every time it is called. This function is called for every day displayed in the calendar which is very noisy. Checking if the variable exists before doing the length check prevents the error and the rest of the function works fine if the variable is not set.
556 lines
12 KiB
Plaintext
556 lines
12 KiB
Plaintext
# Tag generation and navigation
|
|
# Note: The Generate must be in Execute
|
|
|
|
Execute (Setup):
|
|
set sw=4
|
|
AssertEqual 4, &sw
|
|
call system("rm $HOME/testmarkdown/.vimwiki_tags")
|
|
|
|
|
|
######################################################################
|
|
Do (Create File Content with default tags {{{1):
|
|
:edit $HOME/testmarkdown/Test-Tag-default.md\<CR>
|
|
I
|
|
:tag1:tag2:\<CR>
|
|
\<Esc>
|
|
:write\<CR>
|
|
:VimwikiRebuildTags!\<CR>
|
|
:VimwikiGenerateTagLinks\<CR>
|
|
gg
|
|
|
|
|
|
Execute (Generate tags for default):
|
|
edit $HOME/testmarkdown/Test-Tag-default.md
|
|
AssertEqual 'VimwikiTag', SyntaxAt(1, 2)
|
|
1
|
|
VimwikiGenerateTagLinks
|
|
write
|
|
|
|
|
|
Expect (Tags default):
|
|
:tag1:tag2:
|
|
|
|
|
|
# Generated Tags
|
|
|
|
## tag1
|
|
|
|
- [Test-Tag-default](Test-Tag-default)
|
|
|
|
## tag2
|
|
|
|
- [Test-Tag-default](Test-Tag-default)
|
|
|
|
|
|
Execute (Clean tag file for default):
|
|
call system("rm $HOME/testmarkdown/.vimwiki_tags")
|
|
|
|
|
|
Do (Create File Content with default tags):
|
|
:edit $HOME/testmarkdown/Test-Tag-default.md\<CR>
|
|
ggdG
|
|
I
|
|
# Generated Tags\<Cr>
|
|
\<Cr>
|
|
# Heading with my tags\<Cr>
|
|
\<Cr>
|
|
:tag1:tag2:\<CR>
|
|
\<Cr>
|
|
Dummy content 1
|
|
\<Cr>
|
|
# Another heading\<Cr>
|
|
\<Cr>
|
|
Dummy content 2
|
|
\<Esc>
|
|
:write\<CR>
|
|
:VimwikiRebuildTags!\<CR>
|
|
:VimwikiGenerateTagLinks\<CR>
|
|
gg
|
|
|
|
|
|
Expect (Tags default with Generated Tags heading):
|
|
# Generated Tags
|
|
|
|
## tag1
|
|
|
|
- [Heading with my tags](Test-Tag-default#heading-with-my-tags)
|
|
|
|
## tag2
|
|
|
|
- [Heading with my tags](Test-Tag-default#heading-with-my-tags)
|
|
|
|
# Heading with my tags
|
|
|
|
:tag1:tag2:
|
|
|
|
Dummy content 1
|
|
# Another heading
|
|
|
|
Dummy content 2
|
|
|
|
|
|
Execute (Clean file for tag default):
|
|
call system("rm $HOME/testmarkdown/.vimwiki_tags")
|
|
call system("rm $HOME/testmarkdown/Test-Tag-default.md")
|
|
|
|
|
|
|
|
######################################################################
|
|
Execute (Change delimiter <tag1|tag2> {{{1):
|
|
let g:vimwiki_tag_format = {'pre_mark': '<', 'post_mark': '>', 'sep': '|'}
|
|
unlet g:vimwiki_syntaxlocal_vars
|
|
call vimwiki#vars#init()
|
|
edit $HOME/testmarkdown/Test-Tag.md
|
|
AssertEqual $HOME . '/testmarkdown/Test-Tag.md', expand('%')
|
|
AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax')
|
|
AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr')
|
|
|
|
|
|
Do (Create File Content with <>):
|
|
:edit $HOME/testmarkdown/Test-Tag.md\<CR>
|
|
I
|
|
<tag-bar-1>\<CR>
|
|
\<CR>
|
|
# A header\<CR>
|
|
\<CR>
|
|
<tag-bar-2|tag-bar-3>\<CR>
|
|
\<CR>
|
|
# Another header\<CR>
|
|
\<CR>
|
|
Words here.
|
|
\<Esc>
|
|
:write\<CR>
|
|
:VimwikiRebuildTags!\<CR>
|
|
gg
|
|
|
|
|
|
Execute (Generate tags):
|
|
edit $HOME/testmarkdown/Test-Tag.md
|
|
AssertEqual 'VimwikiTag', SyntaxAt(1, 1)
|
|
VimwikiGenerateTagLinks
|
|
set tw=200
|
|
|
|
|
|
Expect (Correctly generated tags section {{{3):
|
|
<tag-bar-1>
|
|
|
|
# A header
|
|
|
|
<tag-bar-2|tag-bar-3>
|
|
|
|
# Another header
|
|
|
|
Words here.
|
|
|
|
# Generated Tags
|
|
|
|
## tag-bar-1
|
|
|
|
- [Test-Tag](Test-Tag)
|
|
|
|
## tag-bar-2
|
|
|
|
- [A header](Test-Tag#a-header)
|
|
|
|
## tag-bar-3
|
|
|
|
- [A header](Test-Tag#a-header)
|
|
|
|
|
|
Do (Write a quick tag for a quick jump):
|
|
:edit $HOME/testmarkdown/Test-Tag.md\<CR>
|
|
ggdG
|
|
I
|
|
[go1](Test-Tag#tag-bar-1)\<Cr>
|
|
[go2](#tag-bar-1)\<Cr>
|
|
bla\<Cr>
|
|
<tag-bar-1>\<Esc>
|
|
ggl\<Cr>A __HERE1__\<Esc>
|
|
ggjl\<Cr>A __HERE2__\<Esc>
|
|
|
|
|
|
Expect (Good jump {{{3):
|
|
[go1](Test-Tag#tag-bar-1)
|
|
[go2](#tag-bar-1)
|
|
bla
|
|
<tag-bar-1> __HERE1__ __HERE2__
|
|
|
|
|
|
Execute (Clean Test-Tag and .vimwiki_tags -2):
|
|
let g:vimwiki_tag_format = {}
|
|
unlet g:vimwiki_syntaxlocal_vars
|
|
call vimwiki#vars#init()
|
|
call system("rm $HOME/testmarkdown/Test.md")
|
|
call system("rm $HOME/testmarkdown/.vimwiki_tags")
|
|
call system("rm $HOME/testmarkdown/Test-Tag.md")
|
|
call DeleteHiddenBuffers()
|
|
|
|
|
|
######################################################################
|
|
Execute (Default tag generation {{{1):
|
|
edit $HOME/testmarkdown/Test-Tag.md
|
|
AssertEqual $HOME . '/testmarkdown/Test-Tag.md', expand('%')
|
|
AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax')
|
|
AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr')
|
|
set tw=200
|
|
|
|
|
|
Do (Single file Part1):
|
|
:edit $HOME/testmarkdown/Test-Tag.md\<Cr>
|
|
ggdGO
|
|
:single-tag:\<Esc>
|
|
:write\<Cr>
|
|
:VimwikiRebuildTags!\<Cr>
|
|
|
|
|
|
Execute (Generate tags):
|
|
edit $HOME/testmarkdown/Test-Tag.md
|
|
AssertEqual 'VimwikiTag', SyntaxAt(1, 1)
|
|
VimwikiGenerateTagLinks
|
|
write
|
|
|
|
|
|
Expect (Single tags toc):
|
|
:single-tag:
|
|
|
|
|
|
# Generated Tags
|
|
|
|
## single-tag
|
|
|
|
- [Test-Tag](Test-Tag)
|
|
|
|
|
|
Do (Create File Content):
|
|
:edit $HOME/testmarkdown/Test-Tag.md\<CR>
|
|
ggdGO
|
|
:top-tag:\<CR>
|
|
\<CR>
|
|
# A header\<CR>
|
|
\<CR>
|
|
:test-tag:\<CR>
|
|
\<CR>
|
|
# Another header\<CR>
|
|
\<CR>
|
|
Words here.\<CR>
|
|
If tag isn't within 2 lines of header then it has a direct link instead of\<CR>
|
|
a link to the header.\<CR>
|
|
\<CR>
|
|
:second-tag:
|
|
\<Esc>
|
|
:write\<CR>
|
|
:VimwikiRebuildTags\<CR>
|
|
|
|
|
|
Execute (Edit tags file):
|
|
edit $HOME/testmarkdown/.vimwiki_tags
|
|
AssertEqual $HOME . '/testmarkdown/.vimwiki_tags', expand('%')
|
|
AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax')
|
|
AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr')
|
|
|
|
|
|
# Note: tags file uses tabs
|
|
Expect (Correctly formatted tags file):
|
|
!_TAG_FILE_FORMAT 2
|
|
!_TAG_FILE_SORTED 1
|
|
!_TAG_OUTPUT_MODE vimwiki-tags
|
|
!_TAG_PROGRAM_AUTHOR Vimwiki
|
|
!_TAG_PROGRAM_NAME Vimwiki Tags
|
|
!_TAG_PROGRAM_URL https://github.com/vimwiki/vimwiki
|
|
!_TAG_PROGRAM_VERSION 2023.05.12
|
|
second-tag Test-Tag.md 13;" vimwiki:Test-Tag\tTest-Tag#second-tag\tTest-Tag#second-tag
|
|
test-tag Test-Tag.md 5;" vimwiki:Test-Tag\tTest-Tag#a-header\tA header
|
|
top-tag Test-Tag.md 1;" vimwiki:Test-Tag\tTest-Tag\tTest-Tag
|
|
|
|
|
|
Execute (Generate tags):
|
|
edit $HOME/testmarkdown/Test-Tag.md
|
|
VimwikiGenerateTagLinks
|
|
|
|
|
|
Expect (Correctly generated tags section):
|
|
:top-tag:
|
|
|
|
# A header
|
|
|
|
:test-tag:
|
|
|
|
# Another header
|
|
|
|
Words here.
|
|
If tag isn't within 2 lines of header then it has a direct link instead of
|
|
a link to the header.
|
|
|
|
:second-tag:
|
|
|
|
|
|
# Generated Tags
|
|
|
|
## second-tag
|
|
|
|
- [second-tag](Test-Tag#second-tag)
|
|
|
|
## test-tag
|
|
|
|
- [A header](Test-Tag#a-header)
|
|
|
|
## top-tag
|
|
|
|
- [Test-Tag](Test-Tag)
|
|
|
|
|
|
Execute (Clean Test-Tag and .vimwiki_tags -1 ):
|
|
call system("rm $HOME/testmarkdown/Test.md")
|
|
call system("rm $HOME/testmarkdown/.vimwiki_tags")
|
|
call system("rm $HOME/testmarkdown/Test-Tag.md")
|
|
call DeleteHiddenBuffers()
|
|
|
|
# vim: sw=2:foldlevel=30:foldmethod=marker:
|
|
|
|
######################################################################
|
|
Execute (Check first tags file):
|
|
call system("mkdir -p $HOME/testmarkdown/subdir1/subdir11")
|
|
edit $HOME/testmarkdown/Test-Tag-1.md
|
|
AssertEqual $HOME . '/testmarkdown/Test-Tag-1.md', expand('%')
|
|
AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax')
|
|
AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr')
|
|
|
|
|
|
Do (Build first tags file):
|
|
:edit $HOME/testmarkdown/Test-Tag-1.md\<Cr>
|
|
ggI
|
|
# A Header\<Cr>
|
|
:header-tag-1:\<Cr>
|
|
\<Cr>
|
|
# Another Header\<Cr>
|
|
:header-tag-2:\<Cr>
|
|
\<Cr>
|
|
:standalone-tag-1:
|
|
\<Esc>
|
|
:write\<Cr>
|
|
:VimwikiRebuildTags!\<CR>
|
|
|
|
|
|
Execute (Check second tags file):
|
|
edit $HOME/testmarkdown/subdir1/Test-Tag-2.md
|
|
AssertEqual $HOME . '/testmarkdown/subdir1/Test-Tag-2.md', expand('%')
|
|
AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax')
|
|
AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr')
|
|
|
|
|
|
Do (Build second tags file):
|
|
:edit $HOME/testmarkdown/subdir1/Test-Tag-2.md\<Cr>
|
|
ggI
|
|
# A Header\<Cr>
|
|
:header-tag-1:\<Cr>
|
|
\<Cr>
|
|
# Another Header\<Cr>
|
|
:header-tag-2:\<Cr>
|
|
\<Cr>
|
|
:standalone-tag-1:
|
|
\<Esc>
|
|
:write\<Cr>
|
|
:VimwikiRebuildTags!\<CR>
|
|
|
|
|
|
Execute (Build tag links in third file):
|
|
edit $HOME/testmarkdown/subdir1/subdir11/Test-Tag-Links.md
|
|
AssertEqual $HOME . '/testmarkdown/subdir1/subdir11/Test-Tag-Links.md', expand('%')
|
|
AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax')
|
|
AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr')
|
|
VimwikiGenerateTagLinks
|
|
write
|
|
|
|
|
|
Expect (Tag links relative to current file):
|
|
|
|
|
|
# Generated Tags
|
|
|
|
## header-tag-1
|
|
|
|
- [A Header](../../Test-Tag-1#a-header)
|
|
- [A Header](../Test-Tag-2#a-header)
|
|
|
|
## header-tag-2
|
|
|
|
- [Another Header](../../Test-Tag-1#another-header)
|
|
- [Another Header](../Test-Tag-2#another-header)
|
|
|
|
## standalone-tag-1
|
|
|
|
- [standalone-tag-1](../../Test-Tag-1#standalone-tag-1)
|
|
- [standalone-tag-1](../Test-Tag-2#standalone-tag-1)
|
|
|
|
|
|
Do (Delete some existing links to test updating generated tag links):
|
|
:edit $HOME/testmarkdown/subdir1/subdir11/Test-Tag-Links.md\<Cr>
|
|
7G
|
|
dd
|
|
12G
|
|
6dd
|
|
:write\<Cr>
|
|
:call vimwiki#tags#generate_tags(0)\<Cr>
|
|
|
|
|
|
Expect (Only update generated tag links for tags already existing in the file):
|
|
|
|
|
|
# Generated Tags
|
|
|
|
## header-tag-1
|
|
|
|
- [A Header](../../Test-Tag-1#a-header)
|
|
- [A Header](../Test-Tag-2#a-header)
|
|
|
|
## header-tag-2
|
|
|
|
- [Another Header](../../Test-Tag-1#another-header)
|
|
- [Another Header](../Test-Tag-2#another-header)
|
|
|
|
|
|
Execute (Clean relative tag setup):
|
|
call system("rm $HOME/testmarkdown/.vimwiki_tags")
|
|
call system("rm -rf $HOME/testmarkdown/subdir1")
|
|
call system("rm $HOME/testmarkdown/Test-Tag-1.md")
|
|
|
|
|
|
######################################################################
|
|
Execute (Change delimiter #tag1content1|content2#tag2 as for issue #1316 {{{1):
|
|
let g:vimwiki_tag_format = {'pre_mark': '#tag1', 'post_mark': '#tag2', 'sep': '|'}
|
|
unlet g:vimwiki_syntaxlocal_vars
|
|
call vimwiki#vars#init()
|
|
edit $HOME/testmarkdown/Test-Tag-1316.md
|
|
AssertEqual $HOME . '/testmarkdown/Test-Tag-1316.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.md\<CR>
|
|
I
|
|
# Line1: Heading
|
|
# A header\<CR>
|
|
# Line2: Tag not in header
|
|
bla #tag1content01|content02#tag2\<CR>
|
|
# Line3: Tag in header
|
|
#tag1content11|content12#tag2\<CR>
|
|
# Line4: empty
|
|
\<CR>
|
|
# Line5: dummy content
|
|
Words here.
|
|
\<Esc>
|
|
:write\<CR>
|
|
:VimwikiRebuildTags!\<CR>
|
|
gg
|
|
|
|
|
|
Execute (Generate tags for issue #1316):
|
|
edit $HOME/testmarkdown/Test-Tag-issue-1316.md
|
|
AssertEqual 'VimwikiTag', SyntaxAt(2, 5)
|
|
1
|
|
VimwikiGenerateTagLinks
|
|
write
|
|
|
|
|
|
Expect (Single tags toc):
|
|
# A header
|
|
bla #tag1content01|content02#tag2
|
|
#tag1content11|content12#tag2
|
|
|
|
Words here.
|
|
|
|
# Generated Tags
|
|
|
|
## content01
|
|
|
|
- [A header](Test-Tag-issue-1316#a-header)
|
|
|
|
## content02
|
|
|
|
- [A header](Test-Tag-issue-1316#a-header)
|
|
|
|
## content11
|
|
|
|
- [tag2](Test-Tag-issue-1316#tag1content11content12tag2)
|
|
|
|
## content12
|
|
|
|
- [tag2](Test-Tag-issue-1316#tag1content11content12tag2)
|
|
|
|
|
|
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")
|