commit c19e63b1e934b57b411c9b93839073c2d341049c
parent ee31d45553a7b6cdada5db2ac5f3983c732a7927
Author: Philipp Oberdiek <philipp.oberdiek@gmail.com>
Date: Sat, 18 Dec 2021 16:11:01 +0100
Make tag links relative to current file #794 (#1162)
Also add a vader test case and update the changelog as well as the list
of contributors.
Co-authored-by: Tinmarino <tinmarino@gmail.com>
Diffstat:
3 files changed, 78 insertions(+), 0 deletions(-)
diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim
@@ -345,6 +345,7 @@ function! vimwiki#tags#generate_tags(create, ...) abort
let lines = []
let bullet = repeat(' ', vimwiki#lst#get_list_margin()).vimwiki#lst#default_symbol().' '
+ let current_dir = vimwiki#base#current_subdir()
for tagname in sort(keys(tags_entries))
if need_all_tags || index(self.specific_tags, tagname) != -1
if len(lines) > 0
@@ -361,6 +362,7 @@ function! vimwiki#tags#generate_tags(create, ...) abort
endif
for taglink in sort(tags_entries[tagname])
+ let taglink = vimwiki#path#relpath(current_dir, taglink)
if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown'
let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink3Template')
let link_infos = vimwiki#base#resolve_link(taglink)
diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt
@@ -3968,6 +3968,7 @@ Contributors and their Github usernames in roughly chronological order:
- Stefan Schuhbäck (@stefanSchuhbaeck)
- Vinny Furia (@vinnyfuria)
- paperbenni (@paperbenni)
+ - Philipp Oberdiek (@RonMcKay)
- Lily Foster (@lilyinstarlight)
- Jean-Luc Bastarache (@jlbas)
- Youssof Taha (@ysftaha)
@@ -4077,6 +4078,7 @@ Fixed:~
* PR #1030: Allow overwriting insert mode mappings
* PR #1057: Fix renaming, updating link, and exporting HTML subdir wrong
Fix resolve subdir return wrong path in Windows
+ * Issue #794: Fix: Generated tag links are build wrong
* Issue #763: Links opening in qutebrowser multiple times on Linux
diff --git a/test/tag.vader b/test/tag.vader
@@ -205,3 +205,77 @@ Execute (Clean Test-Tag and .vimwiki_tags -1 ):
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)
+
+Execute (Clean relative tag setup):
+ call system("rm -rf $HOME/testmarkdown/subdir1")
+ call system("rm $HOME/testmarkdown/Test-Tag-1.md")