commit 3396e87dbee617cbf0aa5b6ee9bcfe21270cc19a
parent 1ba99ae135e1f0fd5d84a756c9f71460aae03490
Author: Rane Brown <rane.brown@gmail.com>
Date: Sat, 30 Mar 2019 19:12:56 -0600
Fix problems with commands not taking a count and mapping behavior.
Commands such as :VimwikiIndex and :VimwikiDiaryIndex did not previously
take a count and the doucmentation was inconsistent/incorrect for the
behavior of these commands. Fixes #543.
Diffstat:
4 files changed, 106 insertions(+), 81 deletions(-)
diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim
@@ -1287,19 +1287,23 @@ endfunction
function! vimwiki#base#goto_index(wnum, ...)
+
+ " if wnum = 0 the current wiki is used
+ if a:wnum == 0
+ let idx = vimwiki#vars#get_bufferlocal('wiki_nr')
+ echom idx
+ if idx < 0 " not in a wiki
+ let idx = 0
+ endif
+ else
+ let idx = a:wnum - 1 " convert to 0 based counting
+ endif
+
if a:wnum > vimwiki#vars#number_of_wikis()
echomsg 'Vimwiki Error: Wiki '.a:wnum.' is not registered in your Vimwiki settings!'
return
endif
- " usually a:wnum is greater then 0 but with the following command it is == 0:
- " vim -n -c ":VimwikiIndex"
- if a:wnum > 0
- let idx = a:wnum - 1
- else
- let idx = 0
- endif
-
if a:0
if a:1 == 1
let cmd = 'tabedit'
diff --git a/autoload/vimwiki/diary.vim b/autoload/vimwiki/diary.vim
@@ -220,8 +220,6 @@ function! vimwiki#diary#make_note(wnum, ...)
return
endif
- " TODO: refactor it. base#goto_index uses the same
-
call vimwiki#path#mkdir(vimwiki#vars#get_wikilocal('path', wiki_nr).
\ vimwiki#vars#get_wikilocal('diary_rel_path', wiki_nr))
@@ -244,20 +242,23 @@ function! vimwiki#diary#make_note(wnum, ...)
call vimwiki#base#open_link(cmd, link, s:diary_index(wiki_nr))
endfunction
-
function! vimwiki#diary#goto_diary_index(wnum)
+
+ " if wnum = 0 the current wiki is used
+ if a:wnum == 0
+ let idx = vimwiki#vars#get_bufferlocal('wiki_nr')
+ if idx < 0 " not in a wiki
+ let idx = 0
+ endif
+ else
+ let idx = a:wnum - 1 " convert to 0 based counting
+ endif
+
if a:wnum > vimwiki#vars#number_of_wikis()
echomsg 'Vimwiki Error: Wiki '.a:wnum.' is not registered in g:vimwiki_list!'
return
endif
- " TODO: refactor it. base#goto_index uses the same
- if a:wnum > 0
- let idx = a:wnum - 1
- else
- let idx = 0
- endif
-
call vimwiki#base#edit_file('e', s:diary_index(idx), '')
if vimwiki#vars#get_wikilocal('auto_diary_index')
diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt
@@ -149,9 +149,9 @@ See also |:VimwikiUISelect|
[count]<Leader>wi or <Plug>VimwikiDiaryIndex
Open diary index file of the [count]'s wiki.
- <Leader>wi opens diary index file of the first wiki from
+ <Leader>wi opens diary index file of the current wiki.
+ 1<Leader>wi opens diary index file of the first wiki from
|g:vimwiki_list|.
- 1<Leader>wi the same as above.
2<Leader>wi opens diary index file of the second wiki from
|g:vimwiki_list|.
etc.
@@ -164,10 +164,9 @@ See also |:VimwikiDiaryIndex|
[count]<Leader>w<Leader>w or <Plug>VimwikiMakeDiaryNote
Open diary wiki-file for today of the [count]'s wiki.
- <Leader>w<Leader>w opens diary wiki-file for today in the first wiki
+ <Leader>w<Leader>w opens diary wiki-file for today in the current wiki
+ 1<Leader>w<Leader>w opens diary wiki-file for today in the first wiki
from |g:vimwiki_list|.
- 1<Leader>w<Leader>w as above opens diary wiki-file for today in the
- first wiki from |g:vimwiki_list|.
2<Leader>w<Leader>w opens diary wiki-file for today in the second wiki
from |g:vimwiki_list|.
3<Leader>w<Leader>w opens diary wiki-file for today in the third wiki
@@ -182,9 +181,9 @@ See also |:VimwikiMakeDiaryNote|
[count]<Leader>w<Leader>t or <Plug>VimwikiTabMakeDiaryNote
Open diary wiki-file for today of the [count]'s wiki in a new tab.
- <Leader>w<Leader>t tabopens diary wiki-file for today in the first
- wiki from |g:vimwiki_list|.
- 1<Leader>w<Leader>t as above tabopens diary wiki-file for today in the
+ <Leader>w<Leader>t tabopens diary wiki-file for today in the current
+ wiki
+ 1<Leader>w<Leader>t tabopens diary wiki-file for today in the
first wiki from |g:vimwiki_list|.
2<Leader>w<Leader>t tabopens diary wiki-file for today in the second
wiki from |g:vimwiki_list|.
@@ -200,10 +199,10 @@ See also |:VimwikiTabMakeDiaryNote|
[count]<Leader>w<Leader>y or <Plug>VimwikiMakeYesterdayDiaryNote
Open diary wiki-file for yesterday of the [count]'s wiki.
- <Leader>w<Leader>y opens diary wiki-file for yesterday in the first
+ <Leader>w<Leader>y opens diary wiki-file for yesterday in the current
+ wiki
+ 1<Leader>w<Leader>y opens diary wiki-file for yesterday in the first
wiki from |g:vimwiki_list|.
- 1<Leader>w<Leader>y as above opens diary wiki-file for yesterday in
- the first wiki from |g:vimwiki_list|.
2<Leader>w<Leader>y opens diary wiki-file for yesterday in the second
wiki from |g:vimwiki_list|.
3<Leader>w<Leader>y opens diary wiki-file for yesterday in the third
@@ -217,10 +216,10 @@ See also |:VimwikiMakeYesterdayDiaryNote|
[count]<Leader>w<Leader>m or <Plug>VimwikiMakeTomorrowDiaryNote
Open diary wiki-file for tomorrow of the [count]'s wiki.
- <Leader>w<Leader>m opens diary wiki-file for tomorrow in the first
+ <Leader>w<Leader>m opens diary wiki-file for tomorrow in the current
+ wiki
+ 1<Leader>w<Leader>m opens diary wiki-file for tomorrow in the first
wiki from |g:vimwiki_list|.
- 1<Leader>w<Leader>m as above opens diary wiki-file for tomorrow in
- the first wiki from |g:vimwiki_list|.
2<Leader>w<Leader>m opens diary wiki-file for tomorrow in the second
wiki from |g:vimwiki_list|.
3<Leader>w<Leader>m opens diary wiki-file for tomorrow in the third
@@ -653,29 +652,41 @@ il A single list item.
------------------------------------------------------------------------------
4.1. Global Commands *vimwiki-global-commands*
-*:VimwikiIndex*
- Open index file of the current wiki.
+*:VimwikiIndex* [count]
+ Open index file of the current wiki. If a [count] is given the
+ corresponding wiki from |g:vimwiki_list| is opened instead.
-*:VimwikiTabIndex*
- Open index file of the current wiki in a new tab.
+*:VimwikiTabIndex* [count]
+ Open index file of the current wiki in a new tab. If a [count] is given
+ the corresponding wiki from |g:vimwiki_list| is opened instead.
*:VimwikiUISelect*
- Open index file of the selected wiki.
-
-*:VimwikiDiaryIndex*
- Open diary index file of the current wiki.
-
-*:VimwikiMakeDiaryNote*
- Open diary wiki-file for today of the current wiki.
-
-*:VimwikiTabMakeDiaryNote*
- Open diary wiki-file for today of the current wiki in a new tab.
-
-*:VimwikiMakeYesterdayDiaryNote*
- Open diary wiki-file for yesterday of the current wiki.
-
-*:VimwikiMakeTomorrowDiaryNote*
- Open diary wiki-file for tomorrow of the current wiki.
+ Displays a list of registered wikis and opens the index file of the
+ selected wiki.
+
+*:VimwikiDiaryIndex* [count]
+ Open diary index file of the current wiki. If a [count] is given the
+ corresponding wiki from |g:vimwiki_list| is opened instead.
+
+*:VimwikiMakeDiaryNote* [count]
+ Open diary wiki-file for today of the current wiki. If a [count] is given
+ a diary wiki-file for the corresponding wiki from |g:vimwiki_list| is
+ opened instead.
+
+*:VimwikiTabMakeDiaryNote* [count]
+ Open diary wiki-file for today of the current wiki in a new tab. If
+ a [count] is given a diary wiki-file for the corresponding wiki from
+ |g:vimwiki_list| is opened instead.
+
+*:VimwikiMakeYesterdayDiaryNote* [count]
+ Open diary wiki-file for yesterday of the current wiki. If a [count] is
+ given a diary wiki-file for the corresponding wiki from |g:vimwiki_list|
+ is opened instead.
+
+*:VimwikiMakeTomorrowDiaryNote* [count]
+ Open diary wiki-file for tomorrow of the current wiki. If a [count] is
+ given a diary wiki-file for the corresponding wiki from |g:vimwiki_list|
+ is opened instead.
------------------------------------------------------------------------------
4.2. Local commands *vimwiki-local-commands*
diff --git a/plugin/vimwiki.vim b/plugin/vimwiki.vim
@@ -194,8 +194,7 @@ endfunction
function! s:get_version()
- if s:plugin_vers != -1
- echo "Stable version: " . s:plugin_vers
+ if s:plugin_vers != -1 echo "Stable version: " . s:plugin_vers
else
let a:plugin_rev = system("git --git-dir " . s:plugin_dir . "/.git rev-parse --short HEAD")
let a:plugin_branch = system("git --git-dir " . s:plugin_dir . "/.git rev-parse --abbrev-ref HEAD")
@@ -280,24 +279,31 @@ augroup END
command! VimwikiUISelect call vimwiki#base#ui_select()
-" why not using <count> instead of v:count1?
-" See https://github.com/vimwiki-backup/vimwiki/issues/324
-command! -count=1 VimwikiIndex
- \ call vimwiki#base#goto_index(v:count1)
-command! -count=1 VimwikiTabIndex
- \ call vimwiki#base#goto_index(v:count1, 1)
-
-command! -count=1 VimwikiDiaryIndex
- \ call vimwiki#diary#goto_diary_index(v:count1)
-command! -count=1 VimwikiMakeDiaryNote
- \ call vimwiki#diary#make_note(v:count)
-command! -count=1 VimwikiTabMakeDiaryNote
- \ call vimwiki#diary#make_note(v:count, 1)
-command! -count=1 VimwikiMakeYesterdayDiaryNote
- \ call vimwiki#diary#make_note(v:count, 0,
+
+" these commands take a count e.g. :VimwikiIndex 2
+" the default behavior is to open the index, diary etc.
+" for the CURRENT wiki if no count is given
+command! -count=0 VimwikiIndex
+ \ call vimwiki#base#goto_index(<count>)
+
+command! -count=0 VimwikiTabIndex
+ \ call vimwiki#base#goto_index(<count>, 1)
+
+command! -count=0 VimwikiDiaryIndex
+ \ call vimwiki#diary#goto_diary_index(<count>)
+
+command! -count=0 VimwikiMakeDiaryNote
+ \ call vimwiki#diary#make_note(<count>)
+
+command! -count=0 VimwikiTabMakeDiaryNote
+ \ call vimwiki#diary#make_note(<count>, 1)
+
+command! -count=0 VimwikiMakeYesterdayDiaryNote
+ \ call vimwiki#diary#make_note(<count>, 0,
\ vimwiki#diary#diary_date_link(localtime() - 60*60*24))
-command! -count=1 VimwikiMakeTomorrowDiaryNote
- \ call vimwiki#diary#make_note(v:count, 0,
+
+command! -count=0 VimwikiMakeTomorrowDiaryNote
+ \ call vimwiki#diary#make_note(<count>, 0,
\ vimwiki#diary#diary_date_link(localtime() + 60*60*24))
command! VimwikiDiaryGenerateLinks
@@ -305,19 +311,19 @@ command! VimwikiDiaryGenerateLinks
command! VimwikiShowVersion call s:get_version()
-
-
let s:map_prefix = vimwiki#vars#get_global('map_prefix')
if !hasmapto('<Plug>VimwikiIndex') && maparg(s:map_prefix.'w', 'n') == ""
exe 'nmap <silent><unique> '.s:map_prefix.'w <Plug>VimwikiIndex'
endif
-nnoremap <unique><script> <Plug>VimwikiIndex :VimwikiIndex<CR>
+nnoremap <unique><script> <Plug>VimwikiIndex
+ \ :<C-U>call vimwiki#base#goto_index(v:count1)<CR>
if !hasmapto('<Plug>VimwikiTabIndex') && maparg(s:map_prefix.'t', 'n') == ""
exe 'nmap <silent><unique> '.s:map_prefix.'t <Plug>VimwikiTabIndex'
endif
-nnoremap <unique><script> <Plug>VimwikiTabIndex :VimwikiTabIndex<CR>
+nnoremap <unique><script> <Plug>VimwikiTabIndex
+ \ :<C-U>call vimwiki#base#goto_index(v:count1, 1)<CR>
if !hasmapto('<Plug>VimwikiUISelect') && maparg(s:map_prefix.'s', 'n') == ""
exe 'nmap <silent><unique> '.s:map_prefix.'s <Plug>VimwikiUISelect'
@@ -327,7 +333,8 @@ nnoremap <unique><script> <Plug>VimwikiUISelect :VimwikiUISelect<CR>
if !hasmapto('<Plug>VimwikiDiaryIndex') && maparg(s:map_prefix.'i', 'n') == ""
exe 'nmap <silent><unique> '.s:map_prefix.'i <Plug>VimwikiDiaryIndex'
endif
-nnoremap <unique><script> <Plug>VimwikiDiaryIndex :VimwikiDiaryIndex<CR>
+nnoremap <unique><script> <Plug>VimwikiDiaryIndex
+ \ :<C-U>call vimwiki#diary#goto_diary_index(v:count)<CR>
if !hasmapto('<Plug>VimwikiDiaryGenerateLinks') && maparg(s:map_prefix.'<Leader>i', 'n') == ""
exe 'nmap <silent><unique> '.s:map_prefix.'<Leader>i <Plug>VimwikiDiaryGenerateLinks'
@@ -337,26 +344,28 @@ nnoremap <unique><script> <Plug>VimwikiDiaryGenerateLinks :VimwikiDiaryGenerateL
if !hasmapto('<Plug>VimwikiMakeDiaryNote') && maparg(s:map_prefix.'<Leader>w', 'n') == ""
exe 'nmap <silent><unique> '.s:map_prefix.'<Leader>w <Plug>VimwikiMakeDiaryNote'
endif
-nnoremap <unique><script> <Plug>VimwikiMakeDiaryNote :VimwikiMakeDiaryNote<CR>
+nnoremap <unique><script> <Plug>VimwikiMakeDiaryNote
+ \ :<C-U>call vimwiki#diary#make_note(v:count)<CR>
if !hasmapto('<Plug>VimwikiTabMakeDiaryNote') && maparg(s:map_prefix.'<Leader>t', 'n') == ""
exe 'nmap <silent><unique> '.s:map_prefix.'<Leader>t <Plug>VimwikiTabMakeDiaryNote'
endif
nnoremap <unique><script> <Plug>VimwikiTabMakeDiaryNote
- \ :VimwikiTabMakeDiaryNote<CR>
+ \ :<C-U>call vimwiki#diary#make_note(v:count, 1)<CR>
if !hasmapto('<Plug>VimwikiMakeYesterdayDiaryNote') && maparg(s:map_prefix.'<Leader>y', 'n') == ""
exe 'nmap <silent><unique> '.s:map_prefix.'<Leader>y <Plug>VimwikiMakeYesterdayDiaryNote'
endif
nnoremap <unique><script> <Plug>VimwikiMakeYesterdayDiaryNote
- \ :VimwikiMakeYesterdayDiaryNote<CR>
+ \ :<C-U>call vimwiki#diary#make_note(v:count, 0,
+ \ vimwiki#diary#diary_date_link(localtime() - 60*60*24))<CR>
if !hasmapto('<Plug>VimwikiMakeTomorrowDiaryNote')
exe 'nmap <silent><unique> '.s:map_prefix.'<Leader>m <Plug>VimwikiMakeTomorrowDiaryNote'
endif
nnoremap <unique><script> <Plug>VimwikiMakeTomorrowDiaryNote
- \ :VimwikiMakeTomorrowDiaryNote<CR>
-
+ \ :<C-U>call vimwiki#diary#make_note(v:count, 0,
+ \ vimwiki#diary#diary_date_link(localtime() + 60*60*24))<CR>