Fix relative paths for VimwikiRenameLink. Merge PR #787.
Fixes #90 __Problem__: VimwikiRenameLink does not rename dir1/toto url in dir2/tata because the dirs (dir2 and .) were well crossed but badly inspected. __Solution__: `blob(.ext*)` -> `glob(**/*.ext)` + find the relative URL * Fasten: VimwikiRenameLink goes faster with cache More: To compute old_url regex, use a cache dict because it is the same for files in the same directories * Util DeleteHiddenBuffer -> do not delete Vader buffer * Test: Prettify: Util: teardown delete defined function * Remove unnecessary trailing spaces Note: list_VimwikiReturn.vader has some necessary trailing spaces
This commit is contained in:
@ -33,19 +33,19 @@ Execute (:VimwikiGoto + Completion in directory):
|
||||
" Return to base
|
||||
VimwikiIndex 2
|
||||
AssertEqual $HOME . '/testmarkdown/index.md', expand('%')
|
||||
|
||||
|
||||
" Complete without argment
|
||||
let s_complete1=string(vimwiki#base#get_globlinks_escaped())
|
||||
Assert -1 != stridx(s_complete1, 'test_goto_file')
|
||||
|
||||
|
||||
" Complete with file argument
|
||||
let s_complete2=string(vimwiki#base#get_globlinks_escaped('test_goto_file'))
|
||||
Assert -1 != stridx(s_complete2, 'test_goto_file')
|
||||
|
||||
|
||||
" Complete with start of file argument
|
||||
let s_complete3=string(vimwiki#base#get_globlinks_escaped('test_got'))
|
||||
Assert -1 != stridx(s_complete3, 'test_goto_file')
|
||||
|
||||
|
||||
" Complete with (nested) dir2 argument
|
||||
let s_complete4=string(vimwiki#base#get_globlinks_escaped('dir2'))
|
||||
Assert -1 != stridx(s_complete4, 'test_goto_file')
|
||||
|
189
test/command_rename_link.vader
Normal file
189
test/command_rename_link.vader
Normal file
@ -0,0 +1,189 @@
|
||||
Include: vader_includes/vader_setup.vader
|
||||
|
||||
|
||||
Execute (Copy Wiki's Resources):
|
||||
Log "Start: Copy Resources"
|
||||
call CopyResources()
|
||||
|
||||
|
||||
Execute (Mkdir dir1 dir2 dir11 dir12):
|
||||
call system("mkdir $HOME/testmarkdown/dir1")
|
||||
call system("mkdir $HOME/testmarkdown/dir1/dir11")
|
||||
call system("mkdir $HOME/testmarkdown/dir1/dir12")
|
||||
call system("mkdir $HOME/testmarkdown/dir2")
|
||||
|
||||
|
||||
Given vimwiki (Void):
|
||||
|
||||
|
||||
Execute (Create Test-Rename -> dir1/dir11/in_dir11.md and dir1/dir12/in_dir12.md and dir2/in_dir2.md):
|
||||
edit $HOME/testmarkdown/Test-Rename.md
|
||||
AssertEqual $HOME . '/testmarkdown/Test-Rename.md', expand('%')
|
||||
AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax')
|
||||
AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr')
|
||||
call append(0, ['# Test Rename', 'in_root.md', 'dir1/dir11/in_dir11.md', 'dir1/dir12/in_dir12.md', 'dir2/in_dir2.md'])
|
||||
call WriteMe()
|
||||
|
||||
Do (Create in_root):
|
||||
:Log 'Open Test-Rename.md'\<CR>
|
||||
:edit $HOME/testmarkdown/Test-Rename.md\<CR>
|
||||
:AssertEqual $HOME . '/testmarkdown/Test-Rename.md', expand('%')\<CR>\<Esc>
|
||||
|
||||
:Log 'Delete last line (easyer latter checks without trailing spaces)'\<CR>
|
||||
Gdd
|
||||
|
||||
:Log 'Open in_root.md'\<CR>
|
||||
gg
|
||||
j\<CR>
|
||||
j\<CR>
|
||||
j\<CR>
|
||||
j\<CR>
|
||||
ggj0y$
|
||||
:AssertEqual '[in_root](in_root.md)', @"\<CR>
|
||||
0\<CR>
|
||||
:AssertEqual $HOME . '/testmarkdown/in_root.md', expand('%')\<CR>
|
||||
|
||||
:Log 'Add link in_root.md -> dir1/dir11/in_dir11'\<CR>
|
||||
ggi# Title in root\<CR>\<Esc>
|
||||
idir1/dir11/in_dir11\<Esc>
|
||||
:call WriteMe()\<CR>
|
||||
:AssertEqual $HOME . '/testmarkdown/in_root.md', expand('%')\<CR>
|
||||
|
||||
:Log 'Open in_dir11.md: creating dirs'\<CR>
|
||||
ggj"ay$
|
||||
:AssertEqual 'reg dir1/dir11/in_dir11', 'reg ' . @a\<CR>
|
||||
0\<CR>\<CR>
|
||||
:AssertEqual 'file ' . $HOME . '/testmarkdown/dir1/dir11/in_dir11.md', 'file ' . expand('%')\<CR>
|
||||
|
||||
:Log 'One backspace for fun'\<CR>
|
||||
\<BS>
|
||||
:AssertEqual 'file ' . $HOME . '/testmarkdown/in_root.md', 'file ' . expand('%')\<CR>
|
||||
|
||||
|
||||
Do (Create dir_11 -> dir_11):
|
||||
:edit $HOME/testmarkdown/dir1/dir11/in_dir11_fix.md\<CR>
|
||||
|
||||
:Log 'Add link in_dir11_fix.md -> in_dir11'\<CR>
|
||||
ggi# Title in dir11 fix\<CR>\<Esc>
|
||||
iin_dir11\<Esc>
|
||||
:call WriteMe()\<CR>
|
||||
|
||||
:Log 'Open in_dir11.md: creating dirs'\<CR>
|
||||
ggj"ay$
|
||||
:AssertEqual 'reg in_dir11', 'reg ' . @a\<CR>
|
||||
0\<CR>\<CR>
|
||||
y\<CR>
|
||||
:AssertEqual 'file ' . $HOME . '/testmarkdown/dir1/dir11/in_dir11.md', 'file ' . expand('%')\<CR>
|
||||
|
||||
:Log 'One backspace for fun'\<CR>
|
||||
\<BS>
|
||||
:AssertEqual 'file ' . $HOME . '/testmarkdown/dir1/dir11/in_dir11_fix.md', 'file ' . expand('%')\<CR>
|
||||
|
||||
|
||||
Execute (Fill in_dir11 content):
|
||||
edit $HOME/testmarkdown/dir1/dir11/in_dir11.md
|
||||
call append(0, ['# Title in_dir11', '[dir2 link](../../dir2/in_dir2.md)'])
|
||||
call WriteMe()
|
||||
|
||||
|
||||
Do (RenameLink in_dir11 -> new_dir11):
|
||||
:edit $HOME/testmarkdown/dir1/dir11/in_dir11.md\<CR>
|
||||
:AssertEqual 'file ' . $HOME . '/testmarkdown/dir1/dir11/in_dir11.md', 'file ' . expand('%')\<CR>
|
||||
:AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr')\<CR>
|
||||
|
||||
:Log 'Rename'\<CR>
|
||||
:call WriteMe()\<CR>
|
||||
:VimwikiRenameLink\<CR>
|
||||
y\<CR>
|
||||
in_dir11_new\<CR>
|
||||
:call WriteMe()\<Cr>
|
||||
|
||||
:Log 'Append filename'\<CR>
|
||||
:call append('$', [expand('%')])\<CR>
|
||||
|
||||
|
||||
Expect(With new filename at the end):
|
||||
# Title in_dir11
|
||||
[dir2 link](../../dir2/in_dir2.md)
|
||||
|
||||
/home/vimtest/testmarkdown/dir1/dir11/in_dir11_new.md
|
||||
|
||||
|
||||
Execute (edit in_dir11_fix):
|
||||
edit $HOME/testmarkdown/dir1/dir11/in_dir11_fix.md
|
||||
|
||||
Expect(Link to in_dir11_new):
|
||||
# Title in dir11 fix
|
||||
[in_dir11](in_dir11_new)
|
||||
|
||||
|
||||
Execute (edit Test-Rename.md):
|
||||
edit $HOME/testmarkdown/Test-Rename.md
|
||||
|
||||
|
||||
Expect (Link to in_dir11_new):
|
||||
# Test Rename
|
||||
[in_root](in_root.md)
|
||||
[dir1 dir11 in_dir11](dir1/dir11/in_dir11_new.md)
|
||||
[dir1 dir12 in_dir12](dir1/dir12/in_dir12.md)
|
||||
[dir2 in_dir2](dir2/in_dir2.md)
|
||||
|
||||
|
||||
|
||||
Do (in_dir2 -> in_dir2_new):
|
||||
:edit $HOME/testmarkdown/dir2/in_dir2.md\<CR>
|
||||
|
||||
:Log 'Append filename'\<CR>
|
||||
:call append('$', [expand('%')])\<CR>
|
||||
|
||||
:Log 'Rename'\<CR>
|
||||
:call WriteMe()\<CR>
|
||||
:VimwikiRenameLink\<CR>
|
||||
y\<CR>
|
||||
in_dir2_new\<CR>
|
||||
:call WriteMe()\<Cr>
|
||||
|
||||
:Log 'Append filename'\<CR>
|
||||
:call append('$', [expand('%')])\<CR>
|
||||
|
||||
|
||||
Expect (old and new filenames):
|
||||
|
||||
/home/vimtest/testmarkdown/dir2/in_dir2.md
|
||||
/home/vimtest/testmarkdown/dir2/in_dir2_new.md
|
||||
|
||||
Execute (edit Test-Rename.md):
|
||||
edit $HOME/testmarkdown/Test-Rename.md
|
||||
|
||||
|
||||
Expect (Link to in_dir11_new):
|
||||
# Test Rename
|
||||
[in_root](in_root.md)
|
||||
[dir1 dir11 in_dir11](dir1/dir11/in_dir11_new.md)
|
||||
[dir1 dir12 in_dir12](dir1/dir12/in_dir12.md)
|
||||
[dir2 in_dir2](dir2/in_dir2_new.md)
|
||||
|
||||
|
||||
Execute (edit in_dir11.md):
|
||||
edit $HOME/testmarkdown/dir1/dir11/in_dir11_new.md
|
||||
|
||||
|
||||
Expect (Link to in_dir2_new):
|
||||
# Title in_dir11
|
||||
[dir2 link](../../dir2/in_dir2_new.md)
|
||||
|
||||
/home/vimtest/testmarkdown/dir1/dir11/in_dir11_new.md
|
||||
|
||||
|
||||
Execute (Clean dir1 and dir2):
|
||||
Log "End: Clean"
|
||||
call DeleteHiddenBuffers()
|
||||
call system('rm $HOME/testmarkdown/Test-Rename.md')
|
||||
call system('rm $HOME/testmarkdown/in_root.md')
|
||||
call system('rm -r $HOME/testmarkdown/dir1')
|
||||
call system('rm -r $HOME/testmarkdown/dir2')
|
||||
|
||||
|
||||
Include: vader_includes/vader_teardown.vader
|
||||
|
||||
# vim: sw=2 foldmethod=indent foldlevel=30 foldignore=#
|
@ -2,18 +2,18 @@ Include: vader_includes/vader_setup.vader
|
||||
|
||||
Given vimwiki (Internal links + one link to filenew):
|
||||
# Contents
|
||||
|
||||
|
||||
- [Test1](#Test1)
|
||||
- [Test2](#Test2)
|
||||
|
||||
|
||||
# Test1
|
||||
|
||||
|
||||
- [Test1](#Test1)
|
||||
- [Test2](#Test2)
|
||||
- [filenew](filenew)
|
||||
|
||||
|
||||
# Test2
|
||||
|
||||
|
||||
- [Test1](#Test1)
|
||||
- [Test2](#Test2)
|
||||
- [filenew](filenew)
|
||||
|
@ -1,3 +1,9 @@
|
||||
# Testting <CR> keypress in insert mode on list item
|
||||
#
|
||||
# Note: some trailing spaces are necessary at the end of list items like `1.`
|
||||
# better read this file with `set list`
|
||||
|
||||
|
||||
Include: vader_includes/vader_setup.vader
|
||||
|
||||
Given vimwiki (List with hard wraps):
|
||||
@ -112,13 +118,13 @@ Expect (No list continuation in code block):
|
||||
Given vimwiki (List from help file):
|
||||
1. item
|
||||
---
|
||||
|
||||
1. item
|
||||
|
||||
1. item
|
||||
continue
|
||||
|
||||
|
||||
---
|
||||
1.
|
||||
|
||||
|
||||
---
|
||||
1.
|
||||
|
||||
@ -135,19 +141,20 @@ Do (List ops):
|
||||
3j
|
||||
A\<CR>\<Esc>
|
||||
|
||||
# Note: trailing space <- autoindent
|
||||
Expect (List per VimwikiReturn 1 1):
|
||||
1. item
|
||||
2.
|
||||
---
|
||||
|
||||
1. item
|
||||
|
||||
1. item
|
||||
continue
|
||||
|
||||
|
||||
|
||||
---
|
||||
1.
|
||||
2.
|
||||
|
||||
|
||||
---
|
||||
1.
|
||||
2.
|
||||
@ -165,21 +172,22 @@ Do (List ops):
|
||||
3j
|
||||
A\<CR>\<Esc>
|
||||
|
||||
# Note: some trailing space added
|
||||
Expect (List per VimwikiReturn 2 2):
|
||||
1. item
|
||||
|
||||
---
|
||||
|
||||
1. item
|
||||
|
||||
1. item
|
||||
continue
|
||||
2.
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
1.
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
1.
|
||||
|
||||
---
|
||||
@ -195,18 +203,19 @@ Do (List ops):
|
||||
3j
|
||||
A\<CR>\<Esc>
|
||||
|
||||
|
||||
Expect (List per VimwikiReturn 3 3):
|
||||
1. item
|
||||
2.
|
||||
---
|
||||
|
||||
1. item
|
||||
|
||||
1. item
|
||||
continue
|
||||
2.
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -227,19 +236,19 @@ Expect (List per VimwikiReturn 4 4):
|
||||
1. item
|
||||
|
||||
---
|
||||
|
||||
1. item
|
||||
|
||||
1. item
|
||||
continue
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
Execute (Map CR):
|
||||
@ -258,14 +267,14 @@ Expect (List per VimwikiReturn 3 5):
|
||||
1. item
|
||||
2.
|
||||
---
|
||||
|
||||
1. item
|
||||
|
||||
1. item
|
||||
continue
|
||||
2.
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
---
|
||||
1.
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -58,11 +58,14 @@ Before (Define functions):
|
||||
" Delete Hidden buffer, usefull to clean
|
||||
" Stole from: https://stackoverflow.com/a/8459043/2544873
|
||||
function! DeleteHiddenBuffers()
|
||||
let tpbl=[]
|
||||
call map(range(1, tabpagenr('$')), 'extend(tpbl, tabpagebuflist(v:val))')
|
||||
for buf in filter(range(1, bufnr('$')), 'bufexists(v:val) && index(tpbl, v:val)==-1')
|
||||
silent execute 'bwipeout!' buf
|
||||
endfor
|
||||
let tpbl=[]
|
||||
call map(range(1, tabpagenr('$')), 'extend(tpbl, tabpagebuflist(v:val))')
|
||||
for buf in filter(range(1, bufnr('$')), 'bufexists(v:val) && index(tpbl, v:val)==-1')
|
||||
if bufname(buf) =~ 'Vader'
|
||||
continue
|
||||
endif
|
||||
silent execute 'bwipeout!' buf
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
" Write current file: helper to hide `set bt=`
|
||||
|
@ -1,3 +1,6 @@
|
||||
After (Cleanup):
|
||||
delfunction SetSyntax
|
||||
delfunction ReloadVimwiki
|
||||
delfunction DeleteHiddenBuffers
|
||||
delfunction WriteMe
|
||||
delfunction PrintCommand
|
||||
|
Reference in New Issue
Block a user