Files
vimwiki/test/tag.vader
T
Luke Atkinson cd9cfd299e Fix vimwiki#diary#calendar_sign when g:vimwiki_list is not set
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.
2023-05-12 22:05:10 -04:00

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