Merge branch 'dev' into path-handling
Conflicts: autoload/vimwiki/base.vim autoload/vimwiki/diary.vim autoload/vimwiki/vars.vim ftplugin/vimwiki.vim
This commit is contained in:
commit
86289a8493
46
CONTRIBUTING.md
Normal file
46
CONTRIBUTING.md
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
# Filing a bug
|
||||||
|
|
||||||
|
Before filing a bug or starting to write a patch, check the latest development version from
|
||||||
|
https://github.com/vimwiki/vimwiki/tree/dev to see if your problem is already fixed.
|
||||||
|
|
||||||
|
Issues can be filed at https://github.com/vimwiki/vimwiki/issues/ .
|
||||||
|
|
||||||
|
# Creating a pull request
|
||||||
|
If you want to provide a pull request on GitHub, please start from the `dev` branch, not from the
|
||||||
|
`master` branch. (Caution, GitHub shows `master` as the default branch from which to start a PR.)
|
||||||
|
|
||||||
|
|
||||||
|
# More info for (aspiring) core developers
|
||||||
|
## Git branching model
|
||||||
|
- there are two branches with eternal lifetime:
|
||||||
|
- `dev`: This is where the main development happens. Tasks which are done in one or only a few
|
||||||
|
commits go here directly. Always try to keep this branch in a working state, that is, if the
|
||||||
|
task you work on requires multiple commits, make sure intermediate commits don't make Vimwiki
|
||||||
|
unusable (or at least push these commits at one go).
|
||||||
|
- `master`: This branches is for released states only. Whenever a reasonable set of changes has
|
||||||
|
piled up in the `dev` branch, a [release is done](#Preparing a release). After a release,
|
||||||
|
`dev` has been merged into `master` and `master` got exactly one additional commit in which
|
||||||
|
the version number in `plugin/vimwiki.vim` is updated. Apart from these commits and the merge
|
||||||
|
commit from `dev`, nothing happens on `master`. Never should `master` merge into `dev`. When
|
||||||
|
the users ask, we should recommend this branch for them to use.
|
||||||
|
- Larger changes which require multiple commits are done in feature branches. They are based on
|
||||||
|
`dev` and merge into `dev` when the work is done.
|
||||||
|
|
||||||
|
## Preparing a release
|
||||||
|
|
||||||
|
1. `git checkout dev`
|
||||||
|
2. Update the changelog in the doc, nicely grouped, with a new version number and release date.
|
||||||
|
3. Update the list of contributors.
|
||||||
|
4. Update the version number at the top of the doc file.
|
||||||
|
5. If necessary, update the Readme and the home page.
|
||||||
|
6. `git checkout master && git merge dev`
|
||||||
|
7. Update the version number at the top of plugin/vimwiki.vim.
|
||||||
|
8. Set a tag with the version number in Git: `git tag vX.Y`
|
||||||
|
9. `git push --tags`
|
||||||
|
10. In GitHub, go to _Releases_ -> _Draft a new release_ -> choose the tag, convert the changelog from the
|
||||||
|
doc to markdown and post it there. Make plans to build an automatic converter and immediately
|
||||||
|
forget this plan.
|
||||||
|
11. Tell the world.
|
||||||
|
|
||||||
|
|
||||||
|
%% vim:tw=99
|
30
README.md
30
README.md
@ -105,6 +105,19 @@ Commands
|
|||||||
* `:Vimwiki2HTML` -- Convert current wiki link to HTML
|
* `:Vimwiki2HTML` -- Convert current wiki link to HTML
|
||||||
* `:VimwikiAll2HTML` -- Convert all your wiki links to HTML
|
* `:VimwikiAll2HTML` -- Convert all your wiki links to HTML
|
||||||
* `:help vimwiki-commands` -- list all commands
|
* `:help vimwiki-commands` -- list all commands
|
||||||
|
* `:help vimwiki` -- General vimwiki help docs
|
||||||
|
|
||||||
|
|
||||||
|
Changing Wiki Syntax
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Vimwiki currently ships with 3 syntaxes: Vimwiki (default), Markdown (markdown), and MediaWiki (media)
|
||||||
|
|
||||||
|
If you would prefer to use either Markdown or MediaWiki syntaxes, set the following option in your .vimrc:
|
||||||
|
```
|
||||||
|
let g:vimwiki_list = [{'path': '~/vimwiki/',
|
||||||
|
\ 'syntax': 'markdown', 'ext': '.md'}]
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
@ -135,6 +148,15 @@ Installation using [Pathogen](http://www.vim.org/scripts/script.php?script_id=23
|
|||||||
cd bundle
|
cd bundle
|
||||||
git clone https://github.com/vimwiki/vimwiki.git
|
git clone https://github.com/vimwiki/vimwiki.git
|
||||||
|
|
||||||
|
Installation using [Vim-Plug](https://github.com/junegunn/vim-plug)
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Add the following to the plugin-configuration in your vimrc:
|
||||||
|
|
||||||
|
Plug 'vimwiki/vimwiki', { 'branch': 'dev' }
|
||||||
|
|
||||||
|
Then run `:PlugInstall`.
|
||||||
|
|
||||||
Installation using [Vundle](https://github.com/VundleVim/Vundle.vim)
|
Installation using [Vundle](https://github.com/VundleVim/Vundle.vim)
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -146,6 +168,14 @@ Or download the [zip archive](https://github.com/vimwiki/vimwiki/archive/master.
|
|||||||
|
|
||||||
Then launch Vim, run `:Helptags` and then `:help vimwiki` to verify it was installed.
|
Then launch Vim, run `:Helptags` and then `:help vimwiki` to verify it was installed.
|
||||||
|
|
||||||
|
|
||||||
|
Getting help
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
Have a question? Visit the IRC channel `#vimwiki` on Freenode ([webchat](https://webchat.freenode.net/?channels=#vimwiki))
|
||||||
|
or post to the [mailing list](https://groups.google.com/forum/#!forum/vimwiki).
|
||||||
|
|
||||||
|
|
||||||
----
|
----
|
||||||
\* Screenshots made with the [solarized colorscheme](https://github.com/altercation/vim-colors-solarized)
|
\* Screenshots made with the [solarized colorscheme](https://github.com/altercation/vim-colors-solarized)
|
||||||
and [lightline](https://github.com/itchyny/lightline.vim)
|
and [lightline](https://github.com/itchyny/lightline.vim)
|
||||||
|
@ -46,14 +46,20 @@ endfunction
|
|||||||
" Returns: the number of the wiki a file belongs to or -1 if it doesn't belong
|
" Returns: the number of the wiki a file belongs to or -1 if it doesn't belong
|
||||||
" to any registered wiki.
|
" to any registered wiki.
|
||||||
function! vimwiki#base#find_wiki(file)
|
function! vimwiki#base#find_wiki(file)
|
||||||
|
let bestmatch = -1
|
||||||
|
let bestlen = 0
|
||||||
for idx in range(vimwiki#vars#number_of_wikis())
|
for idx in range(vimwiki#vars#number_of_wikis())
|
||||||
if vimwiki#path#is_file_in_dir(a:file, vimwiki#vars#get_wikilocal('path', idx))
|
let wiki_path = expand(vimwiki#vars#get_wikilocal('path', idx))
|
||||||
return idx
|
let common_prefix = vimwiki#path#path_common_pfx(wiki_path, a:file)
|
||||||
|
if vimwiki#path#is_equal(common_prefix, wiki_path)
|
||||||
|
if len(common_prefix) > bestlen
|
||||||
|
let bestlen = len(common_prefix)
|
||||||
|
let bestmatch = idx
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
" an orphan page has been detected
|
return bestmatch
|
||||||
return -1
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
@ -71,14 +77,9 @@ function! vimwiki#base#resolve_link(link_text, ...)
|
|||||||
|
|
||||||
let link_text = a:link_text
|
let link_text = a:link_text
|
||||||
|
|
||||||
" if link is schemeless add wikiN: scheme
|
|
||||||
if link_text !~# vimwiki#vars#get_global('rxSchemeUrl')
|
|
||||||
let link_text = 'wiki'.source_wiki.':'.link_text
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
let link_infos = {
|
let link_infos = {
|
||||||
\ 'index': -1,
|
\ 'index': 0,
|
||||||
\ 'scheme': '',
|
\ 'scheme': '',
|
||||||
\ 'is_file': 0, " 1 for a file, 0 for a URL (e.g. when the link was [[http://foo.bar]]),
|
\ 'is_file': 0, " 1 for a file, 0 for a URL (e.g. when the link was [[http://foo.bar]]),
|
||||||
\ " -1 if the whole link was malformed
|
\ " -1 if the whole link was malformed
|
||||||
@ -86,13 +87,17 @@ function! vimwiki#base#resolve_link(link_text, ...)
|
|||||||
\ 'anchor': '',
|
\ 'anchor': '',
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
|
if link_text == ''
|
||||||
" extract scheme
|
|
||||||
let link_infos.scheme = matchstr(link_text, vimwiki#vars#get_global('rxSchemeUrlMatchScheme'))
|
|
||||||
if link_infos.scheme == '' || link_text == ''
|
|
||||||
let link_infos.is_file = -1
|
let link_infos.is_file = -1
|
||||||
return link_infos
|
return link_infos
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let scheme = matchstr(link_text, '^\zs'.vimwiki#vars#get_global('rxSchemes').'\ze:')
|
||||||
|
if scheme == ''
|
||||||
|
let link_infos.scheme = 'wiki'.source_wiki
|
||||||
|
else
|
||||||
|
let link_infos.scheme = scheme
|
||||||
|
|
||||||
if link_infos.scheme !~# '\mwiki\d\+\|diary\|local\|file'
|
if link_infos.scheme !~# '\mwiki\d\+\|diary\|local\|file'
|
||||||
" unknown scheme, may be a weblink
|
" unknown scheme, may be a weblink
|
||||||
let link_infos.is_file = 0
|
let link_infos.is_file = 0
|
||||||
@ -102,7 +107,8 @@ function! vimwiki#base#resolve_link(link_text, ...)
|
|||||||
|
|
||||||
let link_infos.is_file = 1
|
let link_infos.is_file = 1
|
||||||
|
|
||||||
let link_text = matchstr(link_text, vimwiki#vars#get_global('rxSchemeUrlMatchUrl'))
|
let link_text = matchstr(link_text, '^'.vimwiki#vars#get_global('rxSchemes').':\zs.*\ze')
|
||||||
|
endif
|
||||||
|
|
||||||
let is_wiki_link = link_infos.scheme =~# '\mwiki\d\+' || link_infos.scheme ==# 'diary'
|
let is_wiki_link = link_infos.scheme =~# '\mwiki\d\+' || link_infos.scheme ==# 'diary'
|
||||||
|
|
||||||
@ -139,6 +145,7 @@ function! vimwiki#base#resolve_link(link_text, ...)
|
|||||||
let link_infos.index = eval(matchstr(link_infos.scheme, '\D\+\zs\d\+\ze'))
|
let link_infos.index = eval(matchstr(link_infos.scheme, '\D\+\zs\d\+\ze'))
|
||||||
if link_infos.index < 0 || link_infos.index >= vimwiki#vars#number_of_wikis()
|
if link_infos.index < 0 || link_infos.index >= vimwiki#vars#number_of_wikis()
|
||||||
let link_infos.is_file = -1
|
let link_infos.is_file = -1
|
||||||
|
let link_infos.index = -1
|
||||||
return link_infos
|
return link_infos
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -190,10 +197,10 @@ endfunction
|
|||||||
function! vimwiki#base#system_open_link(url)
|
function! vimwiki#base#system_open_link(url)
|
||||||
" handlers
|
" handlers
|
||||||
function! s:win32_handler(url)
|
function! s:win32_handler(url)
|
||||||
"http://vim.wikia.com/wiki/Opening_current_Vim_file_in_your_Windows_browser
|
"Disable shellslash for cmd and command.com, but enable for all other shells
|
||||||
"disable 'shellslash', otherwise the url will be enclosed in single quotes,
|
"See Issue #560
|
||||||
"which is problematic
|
if (&shell =~? "cmd") || (&shell =~? "command.com")
|
||||||
"see https://github.com/vimwiki/vimwiki/issues/54#issuecomment-48011289
|
|
||||||
if exists('+shellslash')
|
if exists('+shellslash')
|
||||||
let old_ssl = &shellslash
|
let old_ssl = &shellslash
|
||||||
set noshellslash
|
set noshellslash
|
||||||
@ -202,10 +209,20 @@ function! vimwiki#base#system_open_link(url)
|
|||||||
else
|
else
|
||||||
let url = shellescape(a:url, 1)
|
let url = shellescape(a:url, 1)
|
||||||
endif
|
endif
|
||||||
if &l:shell ==? "powershell"
|
execute 'silent ! start "Title" /B ' . url
|
||||||
execute 'silent ! start ' . a:url
|
|
||||||
else
|
else
|
||||||
execute 'silent ! start "Title" /B ' . a:url
|
|
||||||
|
if exists('+shellslash')
|
||||||
|
let old_ssl = &shellslash
|
||||||
|
set shellslash
|
||||||
|
let url = shellescape(a:url, 1)
|
||||||
|
let &shellslash = old_ssl
|
||||||
|
else
|
||||||
|
let url = shellescape(a:url, 1)
|
||||||
|
endif
|
||||||
|
execute 'silent ! start ' . url
|
||||||
|
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
function! s:macunix_handler(url)
|
function! s:macunix_handler(url)
|
||||||
@ -239,7 +256,11 @@ function! vimwiki#base#open_link(cmd, link, ...)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if link_infos.is_file == -1
|
if link_infos.is_file == -1
|
||||||
|
if link_infos.index == -1
|
||||||
|
echomsg 'Vimwiki Error: No registered wiki ''' . link_infos.scheme . '''.'
|
||||||
|
else
|
||||||
echomsg 'Vimwiki Error: Unable to resolve link!'
|
echomsg 'Vimwiki Error: Unable to resolve link!'
|
||||||
|
endif
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -696,19 +717,22 @@ function! vimwiki#base#edit_file(command, filename, anchor, ...)
|
|||||||
" This hack is necessary because apparently Vim messes up the result of
|
" This hack is necessary because apparently Vim messes up the result of
|
||||||
" getpos() directly after this command. Strange.
|
" getpos() directly after this command. Strange.
|
||||||
if !(a:command ==# ':e ' && vimwiki#path#is_equal(a:filename, expand('%:p')))
|
if !(a:command ==# ':e ' && vimwiki#path#is_equal(a:filename, expand('%:p')))
|
||||||
try
|
|
||||||
if &autowriteall && !&hidden " in this case, the file is saved before switching to the
|
if &autowriteall && !&hidden " in this case, the file is saved before switching to the
|
||||||
" new buffer. This causes Vim to show two messages in the command line which triggers
|
" new buffer. This causes Vim to show two messages in the command line which triggers
|
||||||
" the annoying hit-enter prompt. Solution: show no messages at all.
|
" the annoying hit-enter prompt. Solution: show no messages at all.
|
||||||
silent execute a:command fname
|
silent execute a:command fname
|
||||||
else
|
else
|
||||||
|
try
|
||||||
execute a:command fname
|
execute a:command fname
|
||||||
endif
|
|
||||||
catch /E37:/
|
catch /E37:/
|
||||||
echomsg 'Vimwiki: The current file is modified. Hint: Take a look at'
|
echomsg 'Vimwiki: Can''t leave the current buffer, because it is modified. Hint: Take a look at'
|
||||||
\ ''':h g:vimwiki_autowriteall'' to see how to save automatically.'
|
\ ''':h g:vimwiki_autowriteall'' to see how to save automatically.'
|
||||||
return
|
return
|
||||||
|
catch /E325:/
|
||||||
|
echom 'Vimwiki: Vim couldn''t open the file, probably because a swapfile already exists. See :h E325.'
|
||||||
|
return
|
||||||
endtry
|
endtry
|
||||||
|
endif
|
||||||
|
|
||||||
" If the opened file was not already loaded by Vim, an autocommand is
|
" If the opened file was not already loaded by Vim, an autocommand is
|
||||||
" triggered at this point
|
" triggered at this point
|
||||||
@ -825,16 +849,17 @@ function! s:update_wiki_link(fname, old, new)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! s:update_wiki_links_dir(dir, old_fname, new_fname)
|
function! s:update_wiki_links_dir(wiki_nr, dir, old_fname, new_fname)
|
||||||
let old_fname = substitute(a:old_fname, '[/\\]', '[/\\\\]', 'g')
|
let old_fname = substitute(a:old_fname, '[/\\]', '[/\\\\]', 'g')
|
||||||
let new_fname = a:new_fname
|
let new_fname = a:new_fname
|
||||||
|
|
||||||
let old_fname_r = vimwiki#base#apply_template(
|
let old_fname_r = vimwiki#base#apply_template(
|
||||||
\ vimwiki#vars#get_syntaxlocal('WikiLinkMatchUrlTemplate'), old_fname, '', '')
|
\ vimwiki#vars#get_syntaxlocal('WikiLinkMatchUrlTemplate',
|
||||||
|
\ vimwiki#vars#get_wikilocal('syntax', a:wiki_nr)), old_fname, '', '')
|
||||||
|
|
||||||
let files = split(glob(vimwiki#vars#get_wikilocal('path').a:dir.'*'.
|
let files = split(glob(vimwiki#vars#get_wikilocal('path', a:wiki_nr).a:dir.'*'.
|
||||||
\ vimwiki#vars#get_wikilocal('ext')), '\n')
|
\ vimwiki#vars#get_wikilocal('ext', a:wiki_nr)), '\n')
|
||||||
for fname in files
|
for fname in l:files
|
||||||
call s:update_wiki_link(fname, old_fname_r, new_fname)
|
call s:update_wiki_link(fname, old_fname_r, new_fname)
|
||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
@ -848,11 +873,11 @@ function! s:tail_name(fname)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! s:update_wiki_links(old_fname, new_fname)
|
function! s:update_wiki_links(wiki_nr, old_fname, new_fname,old_fname_relpath)
|
||||||
let old_fname = a:old_fname
|
let old_fname = a:old_fname
|
||||||
let new_fname = a:new_fname
|
let new_fname = a:new_fname
|
||||||
|
|
||||||
let subdirs = split(a:old_fname, '[/\\]')[: -2]
|
let subdirs = split(a:old_fname_relpath, '[/\\]')[: -2]
|
||||||
|
|
||||||
" TODO: Use Dictionary here...
|
" TODO: Use Dictionary here...
|
||||||
let dirs_keys = ['']
|
let dirs_keys = ['']
|
||||||
@ -874,7 +899,7 @@ function! s:update_wiki_links(old_fname, new_fname)
|
|||||||
while idx < len(dirs_keys)
|
while idx < len(dirs_keys)
|
||||||
let dir = dirs_keys[idx]
|
let dir = dirs_keys[idx]
|
||||||
let new_dir = dirs_vals[idx]
|
let new_dir = dirs_vals[idx]
|
||||||
call s:update_wiki_links_dir(dir, new_dir.old_fname, new_dir.new_fname)
|
call s:update_wiki_links_dir(a:wiki_nr, dir, new_dir.old_fname, new_dir.new_fname)
|
||||||
let idx = idx + 1
|
let idx = idx + 1
|
||||||
endwhile
|
endwhile
|
||||||
endfunction
|
endfunction
|
||||||
@ -974,7 +999,7 @@ endfunction
|
|||||||
" will only be updated if it already exists
|
" will only be updated if it already exists
|
||||||
function! vimwiki#base#update_listing_in_buffer(strings, start_header,
|
function! vimwiki#base#update_listing_in_buffer(strings, start_header,
|
||||||
\ content_regex, default_lnum, create)
|
\ content_regex, default_lnum, create)
|
||||||
" apparently, Vim behaves strange when files change while in diff mode
|
" Vim behaves strangely when files change while in diff mode
|
||||||
if &diff || &readonly
|
if &diff || &readonly
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
@ -1020,8 +1045,8 @@ function! vimwiki#base#update_listing_in_buffer(strings, start_header,
|
|||||||
" fold gets deleted. So we temporarily disable folds, and then reenable
|
" fold gets deleted. So we temporarily disable folds, and then reenable
|
||||||
" them right back.
|
" them right back.
|
||||||
let foldenable_save = &l:foldenable
|
let foldenable_save = &l:foldenable
|
||||||
setlo nofoldenable
|
setlocal nofoldenable
|
||||||
silent exe start_lnum.','.string(end_lnum - 1).'delete _'
|
silent exe 'keepjumps ' . start_lnum.','.string(end_lnum - 1).'delete _'
|
||||||
let &l:foldenable = foldenable_save
|
let &l:foldenable = foldenable_save
|
||||||
let lines_diff = 0 - (end_lnum - start_lnum)
|
let lines_diff = 0 - (end_lnum - start_lnum)
|
||||||
else
|
else
|
||||||
@ -1036,16 +1061,16 @@ function! vimwiki#base#update_listing_in_buffer(strings, start_header,
|
|||||||
let new_header = whitespaces_in_first_line
|
let new_header = whitespaces_in_first_line
|
||||||
\ . s:safesubstitute(vimwiki#vars#get_syntaxlocal('rxH1_Template'),
|
\ . s:safesubstitute(vimwiki#vars#get_syntaxlocal('rxH1_Template'),
|
||||||
\ '__Header__', a:start_header, '')
|
\ '__Header__', a:start_header, '')
|
||||||
call append(start_lnum - 1, new_header)
|
keepjumps call append(start_lnum - 1, new_header)
|
||||||
let start_lnum += 1
|
let start_lnum += 1
|
||||||
let lines_diff += 1 + len(a:strings)
|
let lines_diff += 1 + len(a:strings)
|
||||||
for string in a:strings
|
for string in a:strings
|
||||||
call append(start_lnum - 1, string)
|
keepjumps call append(start_lnum - 1, string)
|
||||||
let start_lnum += 1
|
let start_lnum += 1
|
||||||
endfor
|
endfor
|
||||||
" append an empty line if there is not one
|
" append an empty line if there is not one
|
||||||
if start_lnum <= line('$') && getline(start_lnum) !~# '\m^\s*$'
|
if start_lnum <= line('$') && getline(start_lnum) !~# '\m^\s*$'
|
||||||
call append(start_lnum - 1, '')
|
keepjumps call append(start_lnum - 1, '')
|
||||||
let lines_diff += 1
|
let lines_diff += 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -1077,8 +1102,10 @@ function! vimwiki#base#find_prev_link()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
" This is an API function, that is, remappable by the user. Don't change the signature.
|
function! vimwiki#base#follow_link(split, ...)
|
||||||
function! vimwiki#base#follow_link(split, reuse, move_cursor, ...)
|
let reuse_other_split_window = a:0 >= 1 ? a:1 : 0
|
||||||
|
let move_cursor_to_new_window = a:0 >= 2 ? a:2 : 1
|
||||||
|
|
||||||
" Parse link at cursor and pass to VimwikiLinkHandler, or failing that, the
|
" Parse link at cursor and pass to VimwikiLinkHandler, or failing that, the
|
||||||
" default open_link handler
|
" default open_link handler
|
||||||
|
|
||||||
@ -1114,7 +1141,7 @@ function! vimwiki#base#follow_link(split, reuse, move_cursor, ...)
|
|||||||
|
|
||||||
" if we want to and can reuse a split window, jump to that window and open
|
" if we want to and can reuse a split window, jump to that window and open
|
||||||
" the new file there
|
" the new file there
|
||||||
if (a:split ==# 'hsplit' || a:split ==# 'vsplit') && a:reuse
|
if (a:split ==# 'hsplit' || a:split ==# 'vsplit') && reuse_other_split_window
|
||||||
let previous_window_nr = winnr('#')
|
let previous_window_nr = winnr('#')
|
||||||
if previous_window_nr > 0 && previous_window_nr != winnr()
|
if previous_window_nr > 0 && previous_window_nr != winnr()
|
||||||
execute previous_window_nr . 'wincmd w'
|
execute previous_window_nr . 'wincmd w'
|
||||||
@ -1138,7 +1165,7 @@ function! vimwiki#base#follow_link(split, reuse, move_cursor, ...)
|
|||||||
|
|
||||||
call vimwiki#base#open_link(cmd, lnk)
|
call vimwiki#base#open_link(cmd, lnk)
|
||||||
|
|
||||||
if !a:move_cursor
|
if !move_cursor_to_new_window
|
||||||
if (a:split ==# 'hsplit' || a:split ==# 'vsplit')
|
if (a:split ==# 'hsplit' || a:split ==# 'vsplit')
|
||||||
execute 'wincmd p'
|
execute 'wincmd p'
|
||||||
elseif a:split ==# 'tab'
|
elseif a:split ==# 'tab'
|
||||||
@ -1147,8 +1174,8 @@ function! vimwiki#base#follow_link(split, reuse, move_cursor, ...)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
else
|
else
|
||||||
if a:0 > 0
|
if a:0 >= 3
|
||||||
execute "normal! ".a:1
|
execute "normal! ".a:3
|
||||||
else
|
else
|
||||||
call vimwiki#base#normalize_link(0)
|
call vimwiki#base#normalize_link(0)
|
||||||
endif
|
endif
|
||||||
@ -1247,12 +1274,10 @@ function! vimwiki#base#rename_link()
|
|||||||
let new_link = input('Enter new name: ')
|
let new_link = input('Enter new name: ')
|
||||||
|
|
||||||
if new_link =~# '[/\\]'
|
if new_link =~# '[/\\]'
|
||||||
" It is actually doable but I do not have free time to do it.
|
|
||||||
echomsg 'Vimwiki Error: Cannot rename to a filename with path!'
|
echomsg 'Vimwiki Error: Cannot rename to a filename with path!'
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" check new_fname - it should be 'good', not empty
|
|
||||||
if substitute(new_link, '\s', '', 'g') == ''
|
if substitute(new_link, '\s', '', 'g') == ''
|
||||||
echomsg 'Vimwiki Error: Cannot rename to an empty filename!'
|
echomsg 'Vimwiki Error: Cannot rename to an empty filename!'
|
||||||
return
|
return
|
||||||
@ -1264,6 +1289,7 @@ function! vimwiki#base#rename_link()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
let new_link = subdir.new_link
|
let new_link = subdir.new_link
|
||||||
|
let wiki_nr = vimwiki#vars#get_bufferlocal("wiki_nr")
|
||||||
let new_fname = vimwiki#vars#get_wikilocal('path') . new_link . vimwiki#vars#get_wikilocal('ext')
|
let new_fname = vimwiki#vars#get_wikilocal('path') . new_link . vimwiki#vars#get_wikilocal('ext')
|
||||||
|
|
||||||
" do not rename if file with such name exists
|
" do not rename if file with such name exists
|
||||||
@ -1307,7 +1333,7 @@ function! vimwiki#base#rename_link()
|
|||||||
setlocal nomore
|
setlocal nomore
|
||||||
|
|
||||||
" update links
|
" update links
|
||||||
call s:update_wiki_links(s:tail_name(old_fname), new_link)
|
call s:update_wiki_links(wiki_nr, s:tail_name(old_fname), s:tail_name(new_link),old_fname)
|
||||||
|
|
||||||
" restore wiki buffers
|
" restore wiki buffers
|
||||||
for bitem in blist
|
for bitem in blist
|
||||||
@ -1760,13 +1786,31 @@ endfunction
|
|||||||
" a:create == 0: update if TOC exists
|
" a:create == 0: update if TOC exists
|
||||||
function! vimwiki#base#table_of_contents(create)
|
function! vimwiki#base#table_of_contents(create)
|
||||||
let headers = s:collect_headers()
|
let headers = s:collect_headers()
|
||||||
|
let toc_header_text = vimwiki#vars#get_global('toc_header')
|
||||||
|
|
||||||
|
if !a:create
|
||||||
|
" Do nothing if there is no TOC to update. (This is a small performance optimization -- if
|
||||||
|
" auto_toc == 1, but the current buffer has no TOC but is long, saving the buffer could
|
||||||
|
" otherwise take a few seconds for nothing.)
|
||||||
|
let toc_already_present = 0
|
||||||
|
for entry in headers
|
||||||
|
if entry[2] ==# toc_header_text
|
||||||
|
let toc_already_present = 1
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
if !toc_already_present
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
let numbering = vimwiki#vars#get_global('html_header_numbering')
|
let numbering = vimwiki#vars#get_global('html_header_numbering')
|
||||||
let headers_levels = [['', 0], ['', 0], ['', 0], ['', 0], ['', 0], ['', 0]]
|
let headers_levels = [['', 0], ['', 0], ['', 0], ['', 0], ['', 0], ['', 0]]
|
||||||
let complete_header_infos = []
|
let complete_header_infos = []
|
||||||
for header in headers
|
for header in headers
|
||||||
let h_text = header[2]
|
let h_text = header[2]
|
||||||
let h_level = header[1]
|
let h_level = header[1]
|
||||||
if h_text ==# vimwiki#vars#get_global('toc_header') " don't include the TOC's header itself
|
if h_text ==# toc_header_text " don't include the TOC's header itself
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
let headers_levels[h_level-1] = [h_text, headers_levels[h_level-1][1]+1]
|
let headers_levels[h_level-1] = [h_text, headers_levels[h_level-1][1]+1]
|
||||||
@ -1794,18 +1838,20 @@ function! vimwiki#base#table_of_contents(create)
|
|||||||
let indentstring = repeat(' ', vimwiki#u#sw())
|
let indentstring = repeat(' ', vimwiki#u#sw())
|
||||||
let bullet = vimwiki#lst#default_symbol().' '
|
let bullet = vimwiki#lst#default_symbol().' '
|
||||||
for [lvl, link, desc] in complete_header_infos
|
for [lvl, link, desc] in complete_header_infos
|
||||||
let esc_link = substitute(link, "'", "''", 'g')
|
if vimwiki#vars#get_wikilocal('syntax') == 'markdown'
|
||||||
let esc_desc = substitute(desc, "'", "''", 'g')
|
let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template')
|
||||||
let link = s:safesubstitute(vimwiki#vars#get_global('WikiLinkTemplate2'), '__LinkUrl__',
|
else
|
||||||
\ '#'.esc_link, '')
|
let link_tpl = vimwiki#vars#get_global('WikiLinkTemplate2')
|
||||||
let link = s:safesubstitute(link, '__LinkDescription__', esc_desc, '')
|
endif
|
||||||
|
let link = s:safesubstitute(link_tpl, '__LinkUrl__',
|
||||||
|
\ '#'.link, '')
|
||||||
|
let link = s:safesubstitute(link, '__LinkDescription__', desc, '')
|
||||||
call add(lines, startindent.repeat(indentstring, lvl-1).bullet.link)
|
call add(lines, startindent.repeat(indentstring, lvl-1).bullet.link)
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
let links_rx = '\m^\s*'.vimwiki#u#escape(vimwiki#lst#default_symbol()).' '
|
let links_rx = '\m^\s*'.vimwiki#u#escape(vimwiki#lst#default_symbol()).' '
|
||||||
|
|
||||||
call vimwiki#base#update_listing_in_buffer(lines,
|
call vimwiki#base#update_listing_in_buffer(lines, toc_header_text, links_rx, 1, a:create)
|
||||||
\ vimwiki#vars#get_global('toc_header'), links_rx, 1, a:create)
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
@ -1830,17 +1876,21 @@ endfunction
|
|||||||
|
|
||||||
|
|
||||||
function! s:clean_url(url)
|
function! s:clean_url(url)
|
||||||
let url = split(a:url, '/\|=\|-\|&\|?\|\.')
|
" remove protocol and tld
|
||||||
|
let url = substitute(a:url, '^\a\+\d*:', '', '')
|
||||||
|
let url = substitute(url, '^//', '', '')
|
||||||
|
let url = substitute(url, '^\([^/]\+\)\.\a\{2,4}/', '\1/', '')
|
||||||
|
let url = split(url, '/\|=\|-\|&\|?\|\.')
|
||||||
let url = filter(url, 'v:val !=# ""')
|
let url = filter(url, 'v:val !=# ""')
|
||||||
let url = filter(url, 'v:val !=# "www"')
|
if url[0] == "www"
|
||||||
let url = filter(url, 'v:val !=# "com"')
|
let url = url[1:]
|
||||||
let url = filter(url, 'v:val !=# "org"')
|
endif
|
||||||
let url = filter(url, 'v:val !=# "net"')
|
if url[-1] =~ '^\(htm\|html\|php\)$'
|
||||||
let url = filter(url, 'v:val !=# "edu"')
|
let url = url[0:-2]
|
||||||
let url = filter(url, 'v:val !=# "http\:"')
|
endif
|
||||||
let url = filter(url, 'v:val !=# "https\:"')
|
" remove words consisting of only hexadecimal digits or non-word characters
|
||||||
let url = filter(url, 'v:val !=# "file\:"')
|
let url = filter(url, 'v:val !~ "^\\A\\{4,}$"')
|
||||||
let url = filter(url, 'v:val !=# "xml\:"')
|
let url = filter(url, 'v:val !~ "^\\x\\{4,}$" || v:val !~ "\\d"')
|
||||||
return join(url, " ")
|
return join(url, " ")
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@ -1881,12 +1931,12 @@ function! s:normalize_link_in_diary(lnk)
|
|||||||
let link_exists_in_wiki = filereadable(link_wiki)
|
let link_exists_in_wiki = filereadable(link_wiki)
|
||||||
let link_is_date = a:lnk =~# '\d\d\d\d-\d\d-\d\d'
|
let link_is_date = a:lnk =~# '\d\d\d\d-\d\d-\d\d'
|
||||||
|
|
||||||
if ! link_exists_in_wiki || link_exists_in_diary || link_is_date
|
if link_exists_in_diary || link_is_date
|
||||||
let str = a:lnk
|
let str = a:lnk
|
||||||
let rxUrl = vimwiki#vars#get_global('rxWord')
|
let rxUrl = vimwiki#vars#get_global('rxWord')
|
||||||
let rxDesc = ''
|
let rxDesc = ''
|
||||||
let template = vimwiki#vars#get_global('WikiLinkTemplate1')
|
let template = vimwiki#vars#get_global('WikiLinkTemplate1')
|
||||||
else
|
elseif link_exists_in_wiki
|
||||||
let relative_link =
|
let relative_link =
|
||||||
\ vimwiki#path#relpath(vimwiki#vars#get_wikilocal('diary_path'),
|
\ vimwiki#path#relpath(vimwiki#vars#get_wikilocal('diary_path'),
|
||||||
\ vimwiki#vars#get_wikilocal('path'))
|
\ vimwiki#vars#get_wikilocal('path'))
|
||||||
@ -1894,6 +1944,11 @@ function! s:normalize_link_in_diary(lnk)
|
|||||||
let rxUrl = '^.*\ze|'
|
let rxUrl = '^.*\ze|'
|
||||||
let rxDesc = '|\zs.*$'
|
let rxDesc = '|\zs.*$'
|
||||||
let template = vimwiki#vars#get_global('WikiLinkTemplate2')
|
let template = vimwiki#vars#get_global('WikiLinkTemplate2')
|
||||||
|
else
|
||||||
|
let str = a:lnk
|
||||||
|
let rxUrl = '.*'
|
||||||
|
let rxDesc = ''
|
||||||
|
let template = vimwiki#vars#get_global('WikiLinkTemplate1')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template)
|
return vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template)
|
||||||
@ -1937,9 +1992,8 @@ function! s:normalize_link_syntax_n()
|
|||||||
if s:is_diary_file(expand("%:p"))
|
if s:is_diary_file(expand("%:p"))
|
||||||
let sub = s:normalize_link_in_diary(lnk)
|
let sub = s:normalize_link_in_diary(lnk)
|
||||||
else
|
else
|
||||||
let sub = vimwiki#base#normalize_link_helper(lnk,
|
let sub = s:safesubstitute(
|
||||||
\ vimwiki#vars#get_global('rxWord'), '',
|
\ vimwiki#vars#get_global('WikiLinkTemplate1'), '__LinkUrl__', lnk, '')
|
||||||
\ vimwiki#vars#get_global('WikiLinkTemplate1'))
|
|
||||||
endif
|
endif
|
||||||
call vimwiki#base#replacestr_at_cursor('\V'.lnk, sub)
|
call vimwiki#base#replacestr_at_cursor('\V'.lnk, sub)
|
||||||
return
|
return
|
||||||
|
@ -149,17 +149,21 @@ function! s:format_diary()
|
|||||||
\ '__Header__', s:get_month_name(month), ''))
|
\ '__Header__', s:get_month_name(month), ''))
|
||||||
|
|
||||||
for [fl, cap] in s:sort(items(g_files[year][month]))
|
for [fl, cap] in s:sort(items(g_files[year][month]))
|
||||||
if empty(cap)
|
let link_tpl = vimwiki#vars#get_global('WikiLinkTemplate2')
|
||||||
let entry = substitute(vimwiki#vars#get_global('WikiLinkTemplate1'),
|
|
||||||
\ '__LinkUrl__', fl, '')
|
if vimwiki#vars#get_wikilocal('syntax') == 'markdown'
|
||||||
let entry = substitute(entry, '__LinkDescription__', cap, '')
|
let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template')
|
||||||
call add(result, repeat(' ', vimwiki#lst#get_list_margin()).'* '.entry)
|
|
||||||
else
|
if empty(cap) " When using markdown syntax, we should ensure we always have a link description.
|
||||||
let entry = substitute(vimwiki#vars#get_global('WikiLinkTemplate2'),
|
let cap = fl
|
||||||
\ '__LinkUrl__', fl, '')
|
|
||||||
let entry = substitute(entry, '__LinkDescription__', cap, '')
|
|
||||||
call add(result, repeat(' ', vimwiki#lst#get_list_margin()).'* '.entry)
|
|
||||||
endif
|
endif
|
||||||
|
elseif empty(cap)
|
||||||
|
let link_tpl = vimwiki#vars#get_global('WikiLinkTemplate1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
let entry = substitute(link_tpl, '__LinkUrl__', fl, '')
|
||||||
|
let entry = substitute(entry, '__LinkDescription__', cap, '')
|
||||||
|
call add(result, repeat(' ', vimwiki#lst#get_list_margin()).'* '.entry)
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
endfor
|
endfor
|
||||||
@ -169,20 +173,27 @@ function! s:format_diary()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" The given wiki number a:wnum is 1 for the first wiki, 2 for the second and so on. This is in
|
||||||
|
" contrast to most other places, where counting starts with 0. When a:wnum is 0, the current wiki
|
||||||
|
" is used.
|
||||||
function! vimwiki#diary#make_note(wnum, ...)
|
function! vimwiki#diary#make_note(wnum, ...)
|
||||||
if a:wnum > vimwiki#vars#number_of_wikis()
|
if a:wnum == 0
|
||||||
echomsg 'Vimwiki Error: Wiki '.a:wnum.' is not registered in g:vimwiki_list!'
|
let wiki_nr = vimwiki#vars#get_bufferlocal('wiki_nr')
|
||||||
|
if wiki_nr < 0 " this happens when e.g. VimwikiMakeDiaryNote was called outside a wiki buffer
|
||||||
|
let wiki_nr = 0
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let wiki_nr = a:wnum - 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if wiki_nr >= vimwiki#vars#number_of_wikis()
|
||||||
|
echomsg 'Vimwiki Error: Wiki '.wiki_nr.' is not registered in g:vimwiki_list!'
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" TODO: refactor it. base#goto_index uses the same
|
" 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#path#mkdir(vimwiki#vars#get_wikilocal('diary_path', idx))
|
call vimwiki#path#mkdir(vimwiki#vars#get_wikilocal('diary_path', wiki_nr))
|
||||||
|
|
||||||
let cmd = 'edit'
|
let cmd = 'edit'
|
||||||
if a:0
|
if a:0
|
||||||
@ -200,7 +211,7 @@ function! vimwiki#diary#make_note(wnum, ...)
|
|||||||
let link = 'diary:'.vimwiki#diary#diary_date_link()
|
let link = 'diary:'.vimwiki#diary#diary_date_link()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call vimwiki#base#open_link(cmd, link, s:diary_index(idx))
|
call vimwiki#base#open_link(cmd, link, s:diary_index(wiki_nr))
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
@ -218,6 +229,11 @@ function! vimwiki#diary#goto_diary_index(wnum)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
call vimwiki#base#edit_file('e', s:diary_index(idx), '')
|
call vimwiki#base#edit_file('e', s:diary_index(idx), '')
|
||||||
|
|
||||||
|
if vimwiki#vars#get_wikilocal('auto_diary_index')
|
||||||
|
call vimwiki#diary#generate_diary_section()
|
||||||
|
write! " save changes
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
@ -295,8 +311,7 @@ function! vimwiki#diary#calendar_action(day, month, year, week, dir)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" XXX: Well, +1 is for inconsistent index basing...
|
call vimwiki#diary#make_note(0, 0, link)
|
||||||
call vimwiki#diary#make_note(vimwiki#vars#get_bufferlocal('wiki_nr')+1, 0, link)
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
@ -183,13 +183,6 @@ function! s:subst_func(line, regexp, func, ...)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! s:save_vimwiki_buffer()
|
|
||||||
if &filetype ==? 'vimwiki' && filewritable(expand('%'))
|
|
||||||
silent update
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
function! s:process_date(placeholders, default_date)
|
function! s:process_date(placeholders, default_date)
|
||||||
if !empty(a:placeholders)
|
if !empty(a:placeholders)
|
||||||
for [placeholder, row, idx] in a:placeholders
|
for [placeholder, row, idx] in a:placeholders
|
||||||
@ -346,7 +339,7 @@ endfunction
|
|||||||
|
|
||||||
function! s:linkify_link(src, descr)
|
function! s:linkify_link(src, descr)
|
||||||
let src_str = ' href="'.s:escape_html_attribute(a:src).'"'
|
let src_str = ' href="'.s:escape_html_attribute(a:src).'"'
|
||||||
let descr = substitute(a:descr,'^\s*\(.*\)\s*$','\1','')
|
let descr = vimwiki#u#trim(a:descr)
|
||||||
let descr = (descr == "" ? a:src : descr)
|
let descr = (descr == "" ? a:src : descr)
|
||||||
let descr_str = (descr =~# vimwiki#vars#get_global('rxWikiIncl')
|
let descr_str = (descr =~# vimwiki#vars#get_global('rxWikiIncl')
|
||||||
\ ? s:tag_wikiincl(descr)
|
\ ? s:tag_wikiincl(descr)
|
||||||
@ -419,7 +412,8 @@ function! s:tag_wikilink(value)
|
|||||||
let str = a:value
|
let str = a:value
|
||||||
let url = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'))
|
let url = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'))
|
||||||
let descr = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'))
|
let descr = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'))
|
||||||
let descr = (substitute(descr,'^\s*\(.*\)\s*$','\1','') != '' ? descr : url)
|
let descr = vimwiki#u#trim(descr)
|
||||||
|
let descr = (descr != '' ? descr : url)
|
||||||
|
|
||||||
let line = VimwikiLinkConverter(url, s:current_wiki_file, s:current_html_file)
|
let line = VimwikiLinkConverter(url, s:current_wiki_file, s:current_html_file)
|
||||||
if line == ''
|
if line == ''
|
||||||
@ -1560,9 +1554,11 @@ function! vimwiki#html#WikiAll2HTML()
|
|||||||
echomsg 'Vimwiki: Saving Vimwiki files ...'
|
echomsg 'Vimwiki: Saving Vimwiki files ...'
|
||||||
let save_eventignore = &eventignore
|
let save_eventignore = &eventignore
|
||||||
let &eventignore = "all"
|
let &eventignore = "all"
|
||||||
let cur_buf = bufname('%')
|
try
|
||||||
bufdo call s:save_vimwiki_buffer()
|
wall
|
||||||
exe 'buffer '.cur_buf
|
catch
|
||||||
|
" just ignore errors
|
||||||
|
endtry
|
||||||
let &eventignore = save_eventignore
|
let &eventignore = save_eventignore
|
||||||
|
|
||||||
let path_html = vimwiki#vars#get_wikilocal('path_html')
|
let path_html = vimwiki#vars#get_wikilocal('path_html')
|
||||||
|
@ -299,6 +299,13 @@ function! s:regexp_of_marker(item)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Returns: Whether or not the checkbox of a list item is [X] or [-]
|
||||||
|
function! s:is_closed(item)
|
||||||
|
let state = a:item.cb
|
||||||
|
return state ==# vimwiki#vars#get_syntaxlocal('listsyms_list')[-1]
|
||||||
|
\ || state ==# vimwiki#vars#get_global('listsym_rejected')
|
||||||
|
endfunction
|
||||||
|
|
||||||
" ---------------------------------------------------------
|
" ---------------------------------------------------------
|
||||||
" functions for navigating between items
|
" functions for navigating between items
|
||||||
" ---------------------------------------------------------
|
" ---------------------------------------------------------
|
||||||
@ -756,10 +763,47 @@ function! s:set_state(item, new_rate)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
"Set state of the list item to [ ] or [o] or whatever
|
" Sets the state of the list item to [ ] or [o] or whatever. Updates the states of its child items.
|
||||||
"Updates the states of its child items
|
" If the new state should be [X] or [-], the state of the current list item is changed to this
|
||||||
function! s:set_state_plus_children(item, new_rate)
|
" state, but if a child item already has [X] or [-] it is left alone.
|
||||||
|
function! s:set_state_plus_children(item, new_rate, ...)
|
||||||
|
let retain_state_if_closed = a:0 > 0 && a:1 > 0
|
||||||
|
|
||||||
|
if !(retain_state_if_closed && (a:new_rate == 100 || a:new_rate == -1) && s:is_closed(a:item))
|
||||||
call s:set_state(a:item, a:new_rate)
|
call s:set_state(a:item, a:new_rate)
|
||||||
|
endif
|
||||||
|
|
||||||
|
let all_children_are_done = 1
|
||||||
|
let all_children_are_rejected = 1
|
||||||
|
|
||||||
|
let child_item = s:get_first_child(a:item)
|
||||||
|
while 1
|
||||||
|
if child_item.type == 0
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
if child_item.cb != vimwiki#vars#get_global('listsym_rejected')
|
||||||
|
let all_children_are_rejected = 0
|
||||||
|
endif
|
||||||
|
if child_item.cb != vimwiki#vars#get_syntaxlocal('listsyms_list')[-1]
|
||||||
|
let all_children_are_done = 0
|
||||||
|
endif
|
||||||
|
if !all_children_are_done && !all_children_are_rejected
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let child_item = s:get_next_child_item(a:item, child_item)
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
if (a:new_rate == 100 && all_children_are_done) ||
|
||||||
|
\ (a:new_rate == -1) && all_children_are_rejected
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (a:new_rate == -1 && all_children_are_done) ||
|
||||||
|
\ (a:new_rate == 100 && all_children_are_rejected)
|
||||||
|
let retain_closed_children = 0
|
||||||
|
else
|
||||||
|
let retain_closed_children = 1
|
||||||
|
endif
|
||||||
|
|
||||||
let child_item = s:get_first_child(a:item)
|
let child_item = s:get_first_child(a:item)
|
||||||
while 1
|
while 1
|
||||||
@ -767,7 +811,7 @@ function! s:set_state_plus_children(item, new_rate)
|
|||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
if child_item.cb != ''
|
if child_item.cb != ''
|
||||||
call s:set_state_plus_children(child_item, a:new_rate)
|
call s:set_state_plus_children(child_item, a:new_rate, retain_closed_children)
|
||||||
endif
|
endif
|
||||||
let child_item = s:get_next_child_item(a:item, child_item)
|
let child_item = s:get_next_child_item(a:item, child_item)
|
||||||
endwhile
|
endwhile
|
||||||
@ -802,6 +846,7 @@ function! s:update_state(item)
|
|||||||
|
|
||||||
let sum_children_rate = 0
|
let sum_children_rate = 0
|
||||||
let count_children_with_cb = 0
|
let count_children_with_cb = 0
|
||||||
|
let count_rejected_children = 0
|
||||||
|
|
||||||
let child_item = s:get_first_child(a:item)
|
let child_item = s:get_first_child(a:item)
|
||||||
|
|
||||||
@ -811,16 +856,24 @@ function! s:update_state(item)
|
|||||||
endif
|
endif
|
||||||
if child_item.cb != ''
|
if child_item.cb != ''
|
||||||
let rate = s:get_rate(child_item)
|
let rate = s:get_rate(child_item)
|
||||||
if rate != -1
|
if rate == -1
|
||||||
|
" for calculating the parent rate, a [-] item counts as much as a [X] item ...
|
||||||
|
let rate = 100
|
||||||
|
" ... with the exception that a parent with *only* [-] items will be [-] too
|
||||||
|
let count_rejected_children += 1
|
||||||
|
endif
|
||||||
let count_children_with_cb += 1
|
let count_children_with_cb += 1
|
||||||
let sum_children_rate += rate
|
let sum_children_rate += rate
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
let child_item = s:get_next_child_item(a:item, child_item)
|
let child_item = s:get_next_child_item(a:item, child_item)
|
||||||
endwhile
|
endwhile
|
||||||
|
|
||||||
if count_children_with_cb > 0
|
if count_children_with_cb > 0
|
||||||
|
if count_rejected_children == count_children_with_cb
|
||||||
|
let new_rate = -1
|
||||||
|
else
|
||||||
let new_rate = sum_children_rate / count_children_with_cb
|
let new_rate = sum_children_rate / count_children_with_cb
|
||||||
|
endif
|
||||||
call s:set_state_recursively(a:item, new_rate)
|
call s:set_state_recursively(a:item, new_rate)
|
||||||
else
|
else
|
||||||
let rate = s:get_rate(a:item)
|
let rate = s:get_rate(a:item)
|
||||||
@ -841,13 +894,13 @@ endfunction
|
|||||||
|
|
||||||
"Creates checkbox in a list item.
|
"Creates checkbox in a list item.
|
||||||
"Returns: 1 if successful
|
"Returns: 1 if successful
|
||||||
function! s:create_cb(item)
|
function! s:create_cb(item, start_rate)
|
||||||
if a:item.type == 0 || a:item.cb != ''
|
if a:item.type == 0 || a:item.cb != ''
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let new_item = a:item
|
let new_item = a:item
|
||||||
let new_item.cb = vimwiki#vars#get_syntaxlocal('listsyms_list')[0]
|
let new_item.cb = s:rate_to_state(a:start_rate)
|
||||||
call s:substitute_rx_in_line(new_item.lnum,
|
call s:substitute_rx_in_line(new_item.lnum,
|
||||||
\ vimwiki#u#escape(new_item.mrkr) . '\zs\ze', ' [' . new_item.cb . ']')
|
\ vimwiki#u#escape(new_item.mrkr) . '\zs\ze', ' [' . new_item.cb . ']')
|
||||||
|
|
||||||
@ -866,8 +919,7 @@ function! s:remove_cb(item)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
"Change state of checkbox
|
" Change state of the checkboxes in the lines of the given range
|
||||||
"in the lines of the given range
|
|
||||||
function! s:change_cb(from_line, to_line, new_rate)
|
function! s:change_cb(from_line, to_line, new_rate)
|
||||||
let from_item = s:get_corresponding_item(a:from_line)
|
let from_item = s:get_corresponding_item(a:from_line)
|
||||||
if from_item.type == 0
|
if from_item.type == 0
|
||||||
@ -894,9 +946,9 @@ function! s:change_cb(from_line, to_line, new_rate)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
"Toggles checkbox between two states in the lines of the given range,
|
" Toggles checkbox between two states in the lines of the given range, creates checkboxes (with
|
||||||
"creates chceckboxes if there aren't any.
|
" a:start_rate as state) if there aren't any.
|
||||||
function! s:toggle_create_cb(from_line, to_line, state1, state2)
|
function! s:toggle_create_cb(from_line, to_line, state1, state2, start_rate)
|
||||||
let from_item = s:get_corresponding_item(a:from_line)
|
let from_item = s:get_corresponding_item(a:from_line)
|
||||||
if from_item.type == 0
|
if from_item.type == 0
|
||||||
return
|
return
|
||||||
@ -908,7 +960,7 @@ function! s:toggle_create_cb(from_line, to_line, state1, state2)
|
|||||||
let parent_items_of_lines = []
|
let parent_items_of_lines = []
|
||||||
for cur_ln in range(from_item.lnum, a:to_line)
|
for cur_ln in range(from_item.lnum, a:to_line)
|
||||||
let cur_item = s:get_item(cur_ln)
|
let cur_item = s:get_item(cur_ln)
|
||||||
let success = s:create_cb(cur_item)
|
let success = s:create_cb(cur_item, a:start_rate)
|
||||||
|
|
||||||
if success
|
if success
|
||||||
let cur_parent_item = s:get_parent(cur_item)
|
let cur_parent_item = s:get_parent(cur_item)
|
||||||
@ -974,46 +1026,14 @@ endfunction
|
|||||||
"Toggles checkbox between [ ] and [X] or creates one
|
"Toggles checkbox between [ ] and [X] or creates one
|
||||||
"in the lines of the given range
|
"in the lines of the given range
|
||||||
function! vimwiki#lst#toggle_cb(from_line, to_line)
|
function! vimwiki#lst#toggle_cb(from_line, to_line)
|
||||||
return s:toggle_create_cb(a:from_line, a:to_line, 100, 0)
|
return s:toggle_create_cb(a:from_line, a:to_line, 100, 0, 0)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
"Toggles checkbox between [ ] and [-] or creates one
|
"Toggles checkbox between [ ] and [-] or creates one
|
||||||
"in the lines of the given range
|
"in the lines of the given range
|
||||||
function! vimwiki#lst#toggle_rejected_cb(from_line, to_line)
|
function! vimwiki#lst#toggle_rejected_cb(from_line, to_line)
|
||||||
return s:toggle_create_cb(a:from_line, a:to_line, -1, 0)
|
return s:toggle_create_cb(a:from_line, a:to_line, -1, 0, -1)
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
"Increment checkbox between [ ] and [X]
|
|
||||||
"in the lines of the given range
|
|
||||||
function! vimwiki#lst#increment_cb(from_line, to_line)
|
|
||||||
let from_item = s:get_corresponding_item(a:from_line)
|
|
||||||
if from_item.type == 0
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
"if from_line has CB, increment it and set all siblings to the same new state
|
|
||||||
let rate_first_line = s:get_rate(from_item)
|
|
||||||
let n = len(vimwiki#vars#get_syntaxlocal('listsyms_list'))
|
|
||||||
let new_rate = min([rate_first_line + 100/(n-1)+1, 100])
|
|
||||||
|
|
||||||
call s:change_cb(a:from_line, a:to_line, new_rate)
|
|
||||||
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
"Toggles checkbox between [ ] and [X] or creates one
|
|
||||||
"in the lines of the given range
|
|
||||||
function! vimwiki#lst#toggle_cb(from_line, to_line)
|
|
||||||
return s:toggle_create_cb(a:from_line, a:to_line, 100, 0)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
"Toggles checkbox between [ ] and [-] or creates one
|
|
||||||
"in the lines of the given range
|
|
||||||
function! vimwiki#lst#toggle_rejected_cb(from_line, to_line)
|
|
||||||
return s:toggle_create_cb(a:from_line, a:to_line, -1, 0)
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
@ -1395,7 +1415,7 @@ function! s:clone_marker_from_to(from, to)
|
|||||||
let new_indent = ( vimwiki#vars#get_syntaxlocal('recurring_bullets') ? 0 : indent(a:from) )
|
let new_indent = ( vimwiki#vars#get_syntaxlocal('recurring_bullets') ? 0 : indent(a:from) )
|
||||||
call s:set_indent(a:to, new_indent)
|
call s:set_indent(a:to, new_indent)
|
||||||
if item_from.cb != ''
|
if item_from.cb != ''
|
||||||
call s:create_cb(s:get_item(a:to))
|
call s:create_cb(s:get_item(a:to), 0)
|
||||||
call s:update_state(s:get_parent(s:get_item(a:to)))
|
call s:update_state(s:get_parent(s:get_item(a:to)))
|
||||||
endif
|
endif
|
||||||
if item_from.type == 2
|
if item_from.type == 2
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
" global user variables and syntax stuff which is the same for every syntax.
|
" global user variables and syntax stuff which is the same for every syntax.
|
||||||
"
|
"
|
||||||
" - wiki-local variables. They are stored in g:vimwiki_wikilocal_vars which is a list of
|
" - wiki-local variables. They are stored in g:vimwiki_wikilocal_vars which is a list of
|
||||||
" dictionaries. One dict for every registered wiki. The last dictionary contains default values
|
" dictionaries, one dict for every registered wiki. The last dictionary contains default values
|
||||||
" (used for temporary wikis).
|
" (used for temporary wikis).
|
||||||
"
|
"
|
||||||
" - syntax variables. Stored in the dict g:vimwiki_syntax_variables which holds all the regexes and
|
" - syntax variables. Stored in the dict g:vimwiki_syntax_variables which holds all the regexes and
|
||||||
@ -28,82 +28,38 @@
|
|||||||
|
|
||||||
function! s:populate_global_variables()
|
function! s:populate_global_variables()
|
||||||
|
|
||||||
let g:vimwiki_global_vars = {
|
let g:vimwiki_global_vars = {}
|
||||||
\ 'CJK_length': 0,
|
|
||||||
\ 'auto_chdir': 0,
|
|
||||||
\ 'autowriteall': 1,
|
|
||||||
\ 'conceallevel': 2,
|
|
||||||
\ 'diary_months':
|
|
||||||
\ {
|
|
||||||
\ 1: 'January', 2: 'February', 3: 'March',
|
|
||||||
\ 4: 'April', 5: 'May', 6: 'June',
|
|
||||||
\ 7: 'July', 8: 'August', 9: 'September',
|
|
||||||
\ 10: 'October', 11: 'November', 12: 'December'
|
|
||||||
\ },
|
|
||||||
\ 'dir_link': '',
|
|
||||||
\ 'ext2syntax': {},
|
|
||||||
\ 'folding': '',
|
|
||||||
\ 'global_ext': 1,
|
|
||||||
\ 'hl_cb_checked': 0,
|
|
||||||
\ 'hl_headers': 0,
|
|
||||||
\ 'html_header_numbering': 0,
|
|
||||||
\ 'html_header_numbering_sym': '',
|
|
||||||
\ 'list_ignore_newline': 1,
|
|
||||||
\ 'text_ignore_newline': 1,
|
|
||||||
\ 'listsyms': ' .oOX',
|
|
||||||
\ 'listsym_rejected': '-',
|
|
||||||
\ 'map_prefix': '<Leader>w',
|
|
||||||
\ 'menu': 'Vimwiki',
|
|
||||||
\ 'table_auto_fmt': 1,
|
|
||||||
\ 'table_mappings': 1,
|
|
||||||
\ 'toc_header': 'Contents',
|
|
||||||
\ 'url_maxsave': 15,
|
|
||||||
\ 'use_calendar': 1,
|
|
||||||
\ 'use_mouse': 0,
|
|
||||||
\ 'user_htmls': '',
|
|
||||||
\ 'valid_html_tags': 'b,i,s,u,sub,sup,kbd,br,hr,div,center,strong,em',
|
|
||||||
\ 'w32_dir_enc': '',
|
|
||||||
\ }
|
|
||||||
|
|
||||||
" copy the user's settings from variables of the form g:vimwiki_<option> into the dict
|
call s:read_global_settings_from_user()
|
||||||
" g:vimwiki_global_vars (or set a default value)
|
call s:normalize_global_settings()
|
||||||
for key in keys(g:vimwiki_global_vars)
|
|
||||||
if exists('g:vimwiki_'.key)
|
|
||||||
let g:vimwiki_global_vars[key] = g:vimwiki_{key}
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
|
|
||||||
call s:validate_global_settings()
|
|
||||||
|
|
||||||
" non-configurable global variables:
|
" non-configurable global variables:
|
||||||
|
|
||||||
" Scheme regexes must be defined even if syntax file is not loaded yet cause users should be
|
" Scheme regexes must be defined even if syntax file is not loaded yet cause users should be
|
||||||
" able to <leader>w<leader>w without opening any vimwiki file first
|
" able to <leader>w<leader>w without opening any vimwiki file first
|
||||||
let g:vimwiki_global_vars.schemes = 'wiki\d\+,diary,local'
|
let g:vimwiki_global_vars.schemes = join(['wiki\d\+', 'diary', 'local'], '\|')
|
||||||
let g:vimwiki_global_vars.web_schemes1 = 'http,https,file,ftp,gopher,telnet,nntp,ldap,rsync'.
|
let g:vimwiki_global_vars.web_schemes1 = join(['http', 'https', 'file', 'ftp', 'gopher',
|
||||||
\ ',imap,pop,irc,ircs,cvs,svn,svn+ssh,git,ssh,fish,sftp'
|
\ 'telnet', 'nntp', 'ldap', 'rsync', 'imap', 'pop', 'irc', 'ircs', 'cvs', 'svn', 'svn+ssh',
|
||||||
let web_schemes2 = 'mailto,news,xmpp,sip,sips,doi,urn,tel,data'
|
\ 'git', 'ssh', 'fish', 'sftp'], '\|')
|
||||||
|
let web_schemes2 =
|
||||||
|
\ join(['mailto', 'news', 'xmpp', 'sip', 'sips', 'doi', 'urn', 'tel', 'data'], '\|')
|
||||||
|
|
||||||
let rx_schemes = '\%('.
|
let g:vimwiki_global_vars.rxSchemes = '\%('.
|
||||||
\ join(split(g:vimwiki_global_vars.schemes, '\s*,\s*'), '\|').'\|'.
|
\ g:vimwiki_global_vars.schemes . '\|'.
|
||||||
\ join(split(g:vimwiki_global_vars.web_schemes1, '\s*,\s*'), '\|').'\|'.
|
\ g:vimwiki_global_vars.web_schemes1 . '\|'.
|
||||||
\ join(split(web_schemes2, '\s*,\s*'), '\|').
|
\ web_schemes2 .
|
||||||
\ '\)'
|
\ '\)'
|
||||||
|
|
||||||
let g:vimwiki_global_vars.rxSchemeUrl = rx_schemes.':.*'
|
|
||||||
let g:vimwiki_global_vars.rxSchemeUrlMatchScheme = '\zs'.rx_schemes.'\ze:.*'
|
|
||||||
let g:vimwiki_global_vars.rxSchemeUrlMatchUrl = rx_schemes.':\zs.*\ze'
|
|
||||||
|
|
||||||
" match URL for common protocols; see http://en.wikipedia.org/wiki/URI_scheme
|
" match URL for common protocols; see http://en.wikipedia.org/wiki/URI_scheme
|
||||||
" http://tools.ietf.org/html/rfc3986
|
" http://tools.ietf.org/html/rfc3986
|
||||||
let rxWebProtocols =
|
let rxWebProtocols =
|
||||||
\ '\%('.
|
\ '\%('.
|
||||||
\ '\%('.
|
\ '\%('.
|
||||||
\ '\%('.join(split(g:vimwiki_global_vars.web_schemes1, '\s*,\s*'), '\|').'\):'.
|
\ '\%('.g:vimwiki_global_vars.web_schemes1 . '\):'.
|
||||||
\ '\%(//\)'.
|
\ '\%(//\)'.
|
||||||
\ '\)'.
|
\ '\)'.
|
||||||
\ '\|'.
|
\ '\|'.
|
||||||
\ '\%('.join(split(web_schemes2, '\s*,\s*'), '\|').'\):'.
|
\ '\%('.web_schemes2.'\):'.
|
||||||
\ '\)'
|
\ '\)'
|
||||||
|
|
||||||
let g:vimwiki_global_vars.rxWeblinkUrl = rxWebProtocols . '\S\{-1,}'. '\%(([^ \t()]*)\)\='
|
let g:vimwiki_global_vars.rxWeblinkUrl = rxWebProtocols . '\S\{-1,}'. '\%(([^ \t()]*)\)\='
|
||||||
@ -183,15 +139,103 @@ function! s:populate_global_variables()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! s:validate_global_settings()
|
function! s:read_global_settings_from_user()
|
||||||
|
let global_settings = {
|
||||||
|
\ 'CJK_length': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
|
\ 'auto_chdir': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
|
\ 'autowriteall': {'type': type(0), 'default': 1, 'min': 0, 'max': 1},
|
||||||
|
\ 'conceallevel': {'type': type(0), 'default': 2, 'min': 0, 'max': 3},
|
||||||
|
\ 'diary_months': {'type': type({}), 'default':
|
||||||
|
\ {
|
||||||
|
\ 1: 'January', 2: 'February', 3: 'March',
|
||||||
|
\ 4: 'April', 5: 'May', 6: 'June',
|
||||||
|
\ 7: 'July', 8: 'August', 9: 'September',
|
||||||
|
\ 10: 'October', 11: 'November', 12: 'December'
|
||||||
|
\ }},
|
||||||
|
\ 'dir_link': {'type': type(''), 'default': ''},
|
||||||
|
\ 'ext2syntax': {'type': type({}), 'default': {}},
|
||||||
|
\ 'folding': {'type': type(''), 'default': '', 'possible_values': ['', 'expr', 'syntax',
|
||||||
|
\ 'list', 'custom', ':quick', 'expr:quick', 'syntax:quick', 'list:quick',
|
||||||
|
\ 'custom:quick']},
|
||||||
|
\ 'global_ext': {'type': type(0), 'default': 1, 'min': 0, 'max': 1},
|
||||||
|
\ 'hl_cb_checked': {'type': type(0), 'default': 0, 'min': 0, 'max': 2},
|
||||||
|
\ 'hl_headers': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
|
\ 'html_header_numbering': {'type': type(0), 'default': 0, 'min': 0, 'max': 6},
|
||||||
|
\ 'html_header_numbering_sym': {'type': type(''), 'default': ''},
|
||||||
|
\ 'list_ignore_newline': {'type': type(0), 'default': 1, 'min': 0, 'max': 1},
|
||||||
|
\ 'text_ignore_newline': {'type': type(0), 'default': 1, 'min': 0, 'max': 1},
|
||||||
|
\ 'listsyms': {'type': type(''), 'default': ' .oOX', 'min_length': 2},
|
||||||
|
\ 'listsym_rejected': {'type': type(''), 'default': '-', 'length': 1},
|
||||||
|
\ 'map_prefix': {'type': type(''), 'default': '<Leader>w'},
|
||||||
|
\ 'menu': {'type': type(''), 'default': 'Vimwiki'},
|
||||||
|
\ 'table_auto_fmt': {'type': type(0), 'default': 1, 'min': 0, 'max': 1},
|
||||||
|
\ 'table_mappings': {'type': type(0), 'default': 1, 'min': 0, 'max': 1},
|
||||||
|
\ 'toc_header': {'type': type(''), 'default': 'Contents', 'min_length': 1},
|
||||||
|
\ 'url_maxsave': {'type': type(0), 'default': 15, 'min': 0},
|
||||||
|
\ 'use_calendar': {'type': type(0), 'default': 1, 'min': 0, 'max': 1},
|
||||||
|
\ 'use_mouse': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
|
\ 'user_htmls': {'type': type(''), 'default': ''},
|
||||||
|
\ 'valid_html_tags': {'type': type(''), 'default':
|
||||||
|
\ 'b,i,s,u,sub,sup,kbd,br,hr,div,center,strong,em'},
|
||||||
|
\ 'w32_dir_enc': {'type': type(''), 'default': ''},
|
||||||
|
\ }
|
||||||
|
|
||||||
|
" copy the user's settings from variables of the form g:vimwiki_<option> into the dict
|
||||||
|
" g:vimwiki_global_vars (or set a default value)
|
||||||
|
for key in keys(global_settings)
|
||||||
|
if exists('g:vimwiki_'.key)
|
||||||
|
let users_value = g:vimwiki_{key}
|
||||||
|
let value_infos = global_settings[key]
|
||||||
|
|
||||||
|
call s:check_users_value(key, users_value, value_infos, 1)
|
||||||
|
|
||||||
|
let g:vimwiki_global_vars[key] = users_value
|
||||||
|
else
|
||||||
|
let g:vimwiki_global_vars[key] = global_settings[key].default
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" validate some settings individually
|
||||||
|
|
||||||
|
let key = 'diary_months'
|
||||||
|
let users_value = g:vimwiki_global_vars[key]
|
||||||
|
for month in range(1, 12)
|
||||||
|
if !has_key(users_value, month) || type(users_value[month]) != type('') ||
|
||||||
|
\ empty(users_value[month])
|
||||||
|
echom printf('Vimwiki Error: The provided value ''%s'' of the option ''g:vimwiki_%s'' is'
|
||||||
|
\ . ' invalid. See '':h g:vimwiki_%s''.', string(users_value), key, key)
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
let key = 'ext2syntax'
|
||||||
|
let users_value = g:vimwiki_global_vars[key]
|
||||||
|
for ext in keys(users_value)
|
||||||
|
if empty(ext) || index(['markdown', 'media', 'mediawiki', 'default'], users_value[ext]) == -1
|
||||||
|
echom printf('Vimwiki Error: The provided value ''%s'' of the option ''g:vimwiki_%s'' is'
|
||||||
|
\ . ' invalid. See '':h g:vimwiki_%s''.', string(users_value), key, key)
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! s:normalize_global_settings()
|
||||||
let g:vimwiki_global_vars.dir_link =
|
let g:vimwiki_global_vars.dir_link =
|
||||||
\ vimwiki#path#file_segment(g:vimwiki_global_vars.dir_link)
|
\ vimwiki#path#file_segment(g:vimwiki_global_vars.dir_link)
|
||||||
|
|
||||||
for extension in g:vimwiki_global_vars.ext2syntax
|
let keys = keys(g:vimwiki_global_vars.ext2syntax)
|
||||||
if extension[0] != '.'
|
for ext in keys
|
||||||
let g:vimwiki_global_vars.ext2syntax['.'.extension] =
|
" ensure the file extensions in ext2syntax start with a dot
|
||||||
\ g:vimwiki_global_vars.ext2syntax[extension]
|
if ext[0] != '.'
|
||||||
call remove(g:vimwiki_global_vars.ext2syntax, extension)
|
let new_ext = '.' . ext
|
||||||
|
let g:vimwiki_global_vars.ext2syntax[new_ext] = g:vimwiki_global_vars.ext2syntax[ext]
|
||||||
|
call remove(g:vimwiki_global_vars.ext2syntax, ext)
|
||||||
|
endif
|
||||||
|
" for convenience, we also allow the term 'mediawiki'
|
||||||
|
if g:vimwiki_global_vars.ext2syntax[ext] ==# 'mediawiki'
|
||||||
|
let g:vimwiki_global_vars.ext2syntax[ext] = 'media'
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
@ -204,32 +248,32 @@ function! s:validate_global_settings()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
" g:vimwiki_wikilocal_vars is a list of dictionaries: one dict for every registered wiki plus one
|
|
||||||
" (the last in the list) which contains the default values (used for temporary wikis).
|
|
||||||
function! s:populate_wikilocal_options()
|
function! s:populate_wikilocal_options()
|
||||||
let default_values = {
|
let default_values = {
|
||||||
\ 'auto_export': 0,
|
\ 'auto_diary_index': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
\ 'auto_tags': 0,
|
\ 'auto_export': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
\ 'auto_toc': 0,
|
\ 'auto_tags': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
\ 'automatic_nested_syntaxes': 1,
|
\ 'auto_toc': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
\ 'css_name': 'style.css',
|
\ 'automatic_nested_syntaxes': {'type': type(0), 'default': 1, 'min': 0, 'max': 1},
|
||||||
\ 'custom_wiki2html': '',
|
\ 'css_name': {'type': type(''), 'default': 'style.css', 'min_length': 1},
|
||||||
\ 'custom_wiki2html_args': '',
|
\ 'custom_wiki2html': {'type': type(''), 'default': ''},
|
||||||
\ 'diary_header': 'Diary',
|
\ 'custom_wiki2html_args': {'type': type(''), 'default': ''},
|
||||||
\ 'diary_index': 'diary',
|
\ 'diary_header': {'type': type(''), 'default': 'Diary', 'min_length': 1},
|
||||||
\ 'diary_rel_path': 'diary/',
|
\ 'diary_index': {'type': type(''), 'default': 'diary', 'min_length': 1},
|
||||||
\ 'diary_sort': 'desc',
|
\ 'diary_rel_path': {'type': type(''), 'default': 'diary/', 'min_length': 1},
|
||||||
\ 'ext': '.wiki',
|
\ 'diary_sort': {'type': type(''), 'default': 'desc', 'possible_values': ['asc', 'desc']},
|
||||||
\ 'index': 'index',
|
\ 'ext': {'type': type(''), 'default': '.wiki', 'min_length': 1},
|
||||||
\ 'list_margin': -1,
|
\ 'index': {'type': type(''), 'default': 'index', 'min_length': 1},
|
||||||
\ 'maxhi': 0,
|
\ 'list_margin': {'type': type(0), 'default': -1, 'min': -1},
|
||||||
\ 'nested_syntaxes': {},
|
\ 'maxhi': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
\ 'path': '~/vimwiki/',
|
\ 'nested_syntaxes': {'type': type({}), 'default': {}},
|
||||||
\ 'path_html': '',
|
\ 'path': {'type': type(''), 'default': $HOME . '/vimwiki/', 'min_length': 1},
|
||||||
\ 'syntax': 'default',
|
\ 'path_html': {'type': type(''), 'default': ''},
|
||||||
\ 'template_default': 'default',
|
\ 'syntax': {'type': type(''), 'default': 'default',
|
||||||
\ 'template_ext': '.tpl',
|
\ 'possible_values': ['default', 'markdown', 'media', 'mediawiki']},
|
||||||
\ 'template_path': '~/vimwiki/templates/',
|
\ 'template_default': {'type': type(''), 'default': 'default', 'min_length': 1},
|
||||||
|
\ 'template_ext': {'type': type(''), 'default': '.tpl'},
|
||||||
|
\ 'template_path': {'type': type(''), 'default': $HOME . '/vimwiki/templates/'},
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
let g:vimwiki_wikilocal_vars = []
|
let g:vimwiki_wikilocal_vars = []
|
||||||
@ -237,9 +281,10 @@ function! s:populate_wikilocal_options()
|
|||||||
let default_wiki_settings = {}
|
let default_wiki_settings = {}
|
||||||
for key in keys(default_values)
|
for key in keys(default_values)
|
||||||
if exists('g:vimwiki_'.key)
|
if exists('g:vimwiki_'.key)
|
||||||
|
call s:check_users_value(key, g:vimwiki_{key}, default_values[key], 1)
|
||||||
let default_wiki_settings[key] = g:vimwiki_{key}
|
let default_wiki_settings[key] = g:vimwiki_{key}
|
||||||
else
|
else
|
||||||
let default_wiki_settings[key] = default_values[key]
|
let default_wiki_settings[key] = default_values[key].default
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
@ -249,11 +294,10 @@ function! s:populate_wikilocal_options()
|
|||||||
let new_wiki_settings = {}
|
let new_wiki_settings = {}
|
||||||
for key in keys(default_values)
|
for key in keys(default_values)
|
||||||
if has_key(users_wiki_settings, key)
|
if has_key(users_wiki_settings, key)
|
||||||
|
call s:check_users_value(key, users_wiki_settings[key], default_values[key], 0)
|
||||||
let new_wiki_settings[key] = users_wiki_settings[key]
|
let new_wiki_settings[key] = users_wiki_settings[key]
|
||||||
elseif exists('g:vimwiki_'.key)
|
|
||||||
let new_wiki_settings[key] = g:vimwiki_{key}
|
|
||||||
else
|
else
|
||||||
let new_wiki_settings[key] = default_values[key]
|
let new_wiki_settings[key] = default_wiki_settings[key]
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
@ -273,11 +317,79 @@ function! s:populate_wikilocal_options()
|
|||||||
let temporary_wiki_settings.is_temporary_wiki = 1
|
let temporary_wiki_settings.is_temporary_wiki = 1
|
||||||
call add(g:vimwiki_wikilocal_vars, temporary_wiki_settings)
|
call add(g:vimwiki_wikilocal_vars, temporary_wiki_settings)
|
||||||
|
|
||||||
call s:validate_wikilocal_settings()
|
" check some values individually
|
||||||
|
let key = 'nested_syntaxes'
|
||||||
|
for wiki_settings in g:vimwiki_wikilocal_vars
|
||||||
|
let users_value = wiki_settings[key]
|
||||||
|
for keyword in keys(users_value)
|
||||||
|
if type(keyword) != type('') || empty(keyword) || type(users_value[keyword]) != type('') ||
|
||||||
|
\ empty(users_value[keyword])
|
||||||
|
echom printf('Vimwiki Error: The provided value ''%s'' of the option ''g:vimwiki_%s'' is'
|
||||||
|
\ . ' invalid. See '':h g:vimwiki_%s''.', string(users_value), key, key)
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
|
||||||
|
call s:normalize_wikilocal_settings()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! s:validate_wikilocal_settings()
|
function! s:check_users_value(key, users_value, value_infos, comes_from_global_variable)
|
||||||
|
let type_code_to_name = {
|
||||||
|
\ type(0): 'number',
|
||||||
|
\ type(''): 'string',
|
||||||
|
\ type([]): 'list',
|
||||||
|
\ type({}): 'dictionary'}
|
||||||
|
|
||||||
|
let setting_origin = a:comes_from_global_variable ?
|
||||||
|
\ printf('''g:vimwiki_%s''', a:key) :
|
||||||
|
\ printf('''%s'' in g:vimwiki_list', a:key)
|
||||||
|
|
||||||
|
if has_key(a:value_infos, 'type') && type(a:users_value) != a:value_infos.type
|
||||||
|
echom printf('Vimwiki Error: The provided value of the option %s is a %s, ' .
|
||||||
|
\ 'but expected is a %s. See '':h g:vimwiki_%s''.', setting_origin,
|
||||||
|
\ type_code_to_name[type(a:users_value)], type_code_to_name[a:value_infos.type], a:key)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a:value_infos.type == type(0) && has_key(a:value_infos, 'min') &&
|
||||||
|
\ a:users_value < a:value_infos.min
|
||||||
|
echom printf('Vimwiki Error: The provided value ''%i'' of the option %s is'
|
||||||
|
\ . ' too small. The minimum value is %i. See '':h g:vimwiki_%s''.', a:users_value,
|
||||||
|
\ setting_origin, a:value_infos.min, a:key)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a:value_infos.type == type(0) && has_key(a:value_infos, 'max') &&
|
||||||
|
\ a:users_value > a:value_infos.max
|
||||||
|
echom printf('Vimwiki Error: The provided value ''%i'' of the option %s is'
|
||||||
|
\ . ' too large. The maximum value is %i. See '':h g:vimwiki_%s''.', a:users_value,
|
||||||
|
\ setting_origin, a:value_infos.max, a:key)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has_key(a:value_infos, 'possible_values') &&
|
||||||
|
\ index(a:value_infos.possible_values, a:users_value) == -1
|
||||||
|
echom printf('Vimwiki Error: The provided value ''%s'' of the option %s is'
|
||||||
|
\ . ' invalid. Allowed values are %s. See ''g:vimwiki_%s''.', a:users_value,
|
||||||
|
\ setting_origin, string(a:value_infos.possible_values), a:key)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a:value_infos.type == type('') && has_key(a:value_infos, 'length') &&
|
||||||
|
\ strwidth(a:users_value) != a:value_infos.length
|
||||||
|
echom printf('Vimwiki Error: The provided value ''%s'' of the option %s must'
|
||||||
|
\ . ' contain exactly %i character(s) but has %i. See '':h g:vimwiki_%s''.',
|
||||||
|
\ a:users_value, setting_origin, a:value_infos.length, strwidth(a:users_value), a:key)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a:value_infos.type == type('') && has_key(a:value_infos, 'min_length') &&
|
||||||
|
\ strwidth(a:users_value) < a:value_infos.min_length
|
||||||
|
echom printf('Vimwiki Error: The provided value ''%s'' of the option %s must'
|
||||||
|
\ . ' have at least %d character(s) but has %d. See '':h g:vimwiki_%s''.', a:users_value,
|
||||||
|
\ setting_origin, a:value_infos.min_length, strwidth(a:users_value), a:key)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! s:normalize_wikilocal_settings()
|
||||||
for wiki_settings in g:vimwiki_wikilocal_vars
|
for wiki_settings in g:vimwiki_wikilocal_vars
|
||||||
let wiki_settings.css_name = vimwiki#path#file_segment(wiki_settings.css_name)
|
let wiki_settings.css_name = vimwiki#path#file_segment(wiki_settings.css_name)
|
||||||
|
|
||||||
@ -296,6 +408,16 @@ function! s:validate_wikilocal_settings()
|
|||||||
let wiki_settings['template_path'] = vimwiki#path#dir_obj(wiki_settings['template_path'])
|
let wiki_settings['template_path'] = vimwiki#path#dir_obj(wiki_settings['template_path'])
|
||||||
let wiki_settings['diary_path'] = vimwiki#path#join_dir(wiki_settings['path'],
|
let wiki_settings['diary_path'] = vimwiki#path#join_dir(wiki_settings['path'],
|
||||||
\ vimwiki#path#dir_segment(wiki_settings['diary_rel_path']))
|
\ vimwiki#path#dir_segment(wiki_settings['diary_rel_path']))
|
||||||
|
|
||||||
|
let ext = wiki_settings['ext']
|
||||||
|
if !empty(ext) && ext[0] != '.'
|
||||||
|
let wiki_settings['ext'] = '.' . ext
|
||||||
|
endif
|
||||||
|
|
||||||
|
" for convenience, we also allow the term 'mediawiki'
|
||||||
|
if wiki_settings.syntax ==# 'mediawiki'
|
||||||
|
let wiki_settings.syntax = 'media'
|
||||||
|
endif
|
||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@ -390,7 +512,7 @@ function! vimwiki#vars#populate_syntax_vars(syntax)
|
|||||||
"create regexp for bulleted list items
|
"create regexp for bulleted list items
|
||||||
if !empty(g:vimwiki_syntax_variables[a:syntax].bullet_types)
|
if !empty(g:vimwiki_syntax_variables[a:syntax].bullet_types)
|
||||||
let g:vimwiki_syntax_variables[a:syntax].rxListBullet =
|
let g:vimwiki_syntax_variables[a:syntax].rxListBullet =
|
||||||
\ join( map(g:vimwiki_syntax_variables[a:syntax].bullet_types,
|
\ join( map(copy(g:vimwiki_syntax_variables[a:syntax].bullet_types),
|
||||||
\'vimwiki#u#escape(v:val).'
|
\'vimwiki#u#escape(v:val).'
|
||||||
\ .'repeat("\\+", g:vimwiki_syntax_variables[a:syntax].recurring_bullets)'
|
\ .'repeat("\\+", g:vimwiki_syntax_variables[a:syntax].recurring_bullets)'
|
||||||
\ ) , '\|')
|
\ ) , '\|')
|
||||||
@ -727,7 +849,7 @@ function! vimwiki#vars#add_temporary_wiki(settings)
|
|||||||
let new_temp_wiki_settings[key] = value
|
let new_temp_wiki_settings[key] = value
|
||||||
endfor
|
endfor
|
||||||
call insert(g:vimwiki_wikilocal_vars, new_temp_wiki_settings, -1)
|
call insert(g:vimwiki_wikilocal_vars, new_temp_wiki_settings, -1)
|
||||||
call s:validate_wikilocal_settings()
|
call s:normalize_wikilocal_settings()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
186
doc/vimwiki.txt
186
doc/vimwiki.txt
@ -9,7 +9,7 @@
|
|||||||
|___| |___| |_| |_||__| |__||___| |___| |_||___| ~
|
|___| |___| |_| |_||__| |__||___| |___| |_||___| ~
|
||||||
|
|
||||||
|
|
||||||
Version: 2.3
|
Version: 2.4
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
CONTENTS *vimwiki*
|
CONTENTS *vimwiki*
|
||||||
@ -47,10 +47,11 @@ CONTENTS *vimwiki*
|
|||||||
12.2. Temporary Wiki |vimwiki-temporary-wiki|
|
12.2. Temporary Wiki |vimwiki-temporary-wiki|
|
||||||
12.3. Per-Wiki Options |vimwiki-local-options|
|
12.3. Per-Wiki Options |vimwiki-local-options|
|
||||||
12.4. Global Options |vimwiki-global-options|
|
12.4. Global Options |vimwiki-global-options|
|
||||||
13. Contributing |vimwiki-contributing|
|
13. Getting help |vimwiki-help|
|
||||||
14. Development |vimwiki-development|
|
14. Contributing & Bug reports |vimwiki-contributing|
|
||||||
15. Changelog |vimwiki-changelog|
|
15. Development |vimwiki-development|
|
||||||
16. License |vimwiki-license|
|
16. Changelog |vimwiki-changelog|
|
||||||
|
17. License |vimwiki-license|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
@ -676,12 +677,24 @@ Vimwiki file.
|
|||||||
*:VimwikiGoBackLink*
|
*:VimwikiGoBackLink*
|
||||||
Go back to the wiki page you came from.
|
Go back to the wiki page you came from.
|
||||||
|
|
||||||
*:VimwikiSplitLink*
|
*:VimwikiSplitLink* [reuse] [move_cursor]
|
||||||
Split and follow wiki link (create target wiki page if needed).
|
Split and follow wiki link (create target wiki page if needed).
|
||||||
|
|
||||||
*:VimwikiVSplitLink*
|
If the argument 'reuse' is given and nonzero, the link is opened in a
|
||||||
|
possibly existing split window instead of making a new split.
|
||||||
|
|
||||||
|
If 'move_cursor' is given and nonzero, the cursor moves to the window with
|
||||||
|
the opened link, otherwise, it stays in the window with the link.
|
||||||
|
|
||||||
|
*:VimwikiVSplitLink* [reuse] [move_cursor]
|
||||||
Vertical split and follow wiki link (create target wiki page if needed).
|
Vertical split and follow wiki link (create target wiki page if needed).
|
||||||
|
|
||||||
|
If the argument 'reuse' is given and nonzero, the link is opened in a
|
||||||
|
possibly existing split window instead of making a new split.
|
||||||
|
|
||||||
|
If 'move_cursor' is given and nonzero, the cursor moves to the window with
|
||||||
|
the opened link, otherwise, it stays in the window with the link.
|
||||||
|
|
||||||
*:VimwikiTabnewLink*
|
*:VimwikiTabnewLink*
|
||||||
Follow wiki link in a new tab (create target wiki page if needed).
|
Follow wiki link in a new tab (create target wiki page if needed).
|
||||||
|
|
||||||
@ -736,6 +749,11 @@ Vimwiki file.
|
|||||||
To display next match use |:lnext| command.
|
To display next match use |:lnext| command.
|
||||||
To display previous match use |:lprevious| command.
|
To display previous match use |:lprevious| command.
|
||||||
|
|
||||||
|
Hint: this feature is simply a wrapper around |:lvimgrep|. For a
|
||||||
|
description of how the pattern can look like, see |:vimgrep|. For example,
|
||||||
|
to do a case insensitive search, use >
|
||||||
|
:VWS /\cpattern/
|
||||||
|
|
||||||
*:VimwikiBacklinks*
|
*:VimwikiBacklinks*
|
||||||
*:VWB*
|
*:VWB*
|
||||||
Search for wikilinks to the current wiki page in all files of current
|
Search for wikilinks to the current wiki page in all files of current
|
||||||
@ -823,35 +841,6 @@ Vimwiki file.
|
|||||||
are specified, outputs all tags. To make this command work properly, make
|
are specified, outputs all tags. To make this command work properly, make
|
||||||
sure the tags have been built (see |vimwiki-build-tags|).
|
sure the tags have been built (see |vimwiki-build-tags|).
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
4.3. Functions *vimwiki-functions*
|
|
||||||
|
|
||||||
Functions to interact with Vimwiki. (It's intended that most commands will be
|
|
||||||
replaced with corresponding function calls in the future.)
|
|
||||||
Warning: this is currently unstable and likely to change.
|
|
||||||
|
|
||||||
|
|
||||||
To map them to a key, use >
|
|
||||||
nnoremap <C-K> :call vimwiki#base#function_name(arg1, arg2)<CR>
|
|
||||||
<
|
|
||||||
|
|
||||||
*vimwiki-follow_link*
|
|
||||||
vimwiki#base#follow_link({split}, {reuse}, {move_cursor})
|
|
||||||
Open the link under the cursor. {split} can have the following values:
|
|
||||||
'nosplit' open the link in the current window
|
|
||||||
'vsplit' open in a vertically split window
|
|
||||||
'hsplit' open in a horizontally split window
|
|
||||||
'tab' open in a new tab
|
|
||||||
|
|
||||||
If {reuse} is 1 and {split} one of 'vsplit' or 'hsplit', open the link in
|
|
||||||
a possibly existing split window instead of making a new split.
|
|
||||||
|
|
||||||
If {move_cursor} is 1 the cursor moves to the window or tab with the
|
|
||||||
opened link, otherwise, it stays in the window or tab with the link.
|
|
||||||
|
|
||||||
For example, <CR> is per default mapped to
|
|
||||||
vimwiki#base#follow_link('nosplit', 0, 1)
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
5. Wiki syntax *vimwiki-syntax*
|
5. Wiki syntax *vimwiki-syntax*
|
||||||
@ -888,6 +877,8 @@ is decorated: >
|
|||||||
super^script^
|
super^script^
|
||||||
sub,,script,,
|
sub,,script,,
|
||||||
|
|
||||||
|
Furthermore, there are a number of words which are highlighted extra flashy:
|
||||||
|
TODO, DONE, STARTED, FIXME, FIXED, XXX.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
5.2. Links *vimwiki-syntax-links*
|
5.2. Links *vimwiki-syntax-links*
|
||||||
@ -1677,7 +1668,7 @@ checkbox without a childitem.
|
|||||||
|
|
||||||
It is possible to toggle several list items using visual mode. But note that
|
It is possible to toggle several list items using visual mode. But note that
|
||||||
instead of toggling every item individually, all items get checked if the
|
instead of toggling every item individually, all items get checked if the
|
||||||
first item is unchecked and all items get unchecked if the first item is
|
first item was unchecked and all items get unchecked if the first item was
|
||||||
checked.
|
checked.
|
||||||
|
|
||||||
Use gl<Space> (see |vimwiki_gl<Space>|) to remove a single checkbox and
|
Use gl<Space> (see |vimwiki_gl<Space>|) to remove a single checkbox and
|
||||||
@ -1763,7 +1754,7 @@ See |g:vimwiki_use_calendar| option to turn it off/on.
|
|||||||
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
12. Anchors *vimwiki-anchors*
|
11. Anchors *vimwiki-anchors*
|
||||||
|
|
||||||
Every header, tag, and bold text can be used as an anchor. To jump to it, use
|
Every header, tag, and bold text can be used as an anchor. To jump to it, use
|
||||||
a wikilink of the form >
|
a wikilink of the form >
|
||||||
@ -1850,6 +1841,12 @@ as described in |vimwiki-register-wiki|, or may be registered on the fly as
|
|||||||
described in |vimwiki-temporary-wiki|. For a list of per-wiki options, see
|
described in |vimwiki-temporary-wiki|. For a list of per-wiki options, see
|
||||||
|vimwiki-local-options|.
|
|vimwiki-local-options|.
|
||||||
|
|
||||||
|
A note for Vim power users:
|
||||||
|
If you have an elaborated Vim setup, where you e.g. load plugins
|
||||||
|
conditionally, make sure the settings are set before Vimwiki loads (that is,
|
||||||
|
before plugin/vimwiki.vim is sourced). If this is not possible, try this
|
||||||
|
command after the Vimwiki settings are (re-) set: >
|
||||||
|
:call vimwiki#vars#init()
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
12.1 Registered Wiki *g:vimwiki_list* *vimwiki-register-wiki*
|
12.1 Registered Wiki *g:vimwiki_list* *vimwiki-register-wiki*
|
||||||
@ -2258,15 +2255,15 @@ be located at https://github.com/vimwiki-backup/vimwiki/issues/384
|
|||||||
To use the internal wiki2html converter, use an empty string (the default).
|
To use the internal wiki2html converter, use an empty string (the default).
|
||||||
|
|
||||||
|
|
||||||
vimwiki-option-custom_wiki2html_args
|
*vimwiki-option-custom_wiki2html_args*
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Key Default value~
|
Key Default value~
|
||||||
custom_wiki2html_args ''
|
custom_wiki2html_args ''
|
||||||
|
|
||||||
Description
|
Description~
|
||||||
If a custom script is called with |vimwiki-option-custom_wiki2html|, additional
|
If a custom script is called with |vimwiki-option-custom_wiki2html|, additional
|
||||||
parameters can be passed by setting them using 'custom_wiki2html_args' in
|
parameters can be passed using this option: >
|
||||||
|g:vimwiki_list|.
|
let g:vimwiki_list = [{'path': '~/path/', 'custom_wiki2html_args': 'stuff'}]
|
||||||
|
|
||||||
|
|
||||||
*vimwiki-option-list_margin*
|
*vimwiki-option-list_margin*
|
||||||
@ -2298,6 +2295,17 @@ current wiki page is saved: >
|
|||||||
let g:vimwiki_list = [{'path': '~/my_site/', 'auto_tags': 1}]
|
let g:vimwiki_list = [{'path': '~/my_site/', 'auto_tags': 1}]
|
||||||
|
|
||||||
|
|
||||||
|
*vimwiki-option-auto_diary_index*
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Key Default value Values~
|
||||||
|
auto_diary_index 0 0, 1
|
||||||
|
|
||||||
|
Description~
|
||||||
|
Set this option to 1 to automatically update the diary index when opened.
|
||||||
|
See |:VimwikiDiaryGenerateLinks|: >
|
||||||
|
let g:vimwiki_list = [{'path': '~/my_site/', 'auto_diary_index': 1}]
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
12.4 Global Options *vimwiki-global-options*
|
12.4 Global Options *vimwiki-global-options*
|
||||||
|
|
||||||
@ -2887,29 +2895,26 @@ Value Description~
|
|||||||
|
|
||||||
Default: 0
|
Default: 0
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
13. Getting help *vimwiki-help*
|
||||||
|
|
||||||
|
For questions, discussions, praise or rants there is a mailing list:
|
||||||
|
https://groups.google.com/forum/#!forum/vimwiki
|
||||||
|
|
||||||
|
Also, there is the IRC channel #vimwiki on Freenode which can be accessed via
|
||||||
|
webchat: https://webchat.freenode.net/?channels=#vimwiki
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
13. Contributing *vimwiki-contributing*
|
14. Contributing & Bug reports *vimwiki-contributing*
|
||||||
|
|
||||||
Your help in making Vimwiki better is really appreciated!
|
Your help in making Vimwiki better is really appreciated!
|
||||||
Any help, whether it is a spelling correction or a code snippet to patch --
|
Any help, whether it is a spelling correction or a code snippet to patch --
|
||||||
everything is welcomed.
|
everything is welcomed.
|
||||||
|
|
||||||
Before filing a bug or starting to write a patch, check the latest development
|
See CONTRIBUTING.md for info about how to file bugs etc.
|
||||||
version from https://github.com/vimwiki/vimwiki/tree/dev to see if your
|
|
||||||
problem is already fixed.
|
|
||||||
|
|
||||||
Issues can be filed at https://github.com/vimwiki/vimwiki/issues/.
|
|
||||||
|
|
||||||
If you want to provide a pull request on GitHub, please start from the dev
|
|
||||||
branch, not from the master branch.
|
|
||||||
|
|
||||||
For questions, discussions, praise or rants there is a mailing list:
|
|
||||||
https://groups.google.com/forum/#!forum/vimwiki
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
14. Development *vimwiki-development*
|
15. Development *vimwiki-development*
|
||||||
|
|
||||||
Homepage: http://vimwiki.github.io/
|
Homepage: http://vimwiki.github.io/
|
||||||
Github: https://github.com/vimwiki/vimwiki/
|
Github: https://github.com/vimwiki/vimwiki/
|
||||||
@ -2953,10 +2958,24 @@ Contributors and their Github usernames in roughly chronological order:
|
|||||||
- Daniel Trnka (@trnila)
|
- Daniel Trnka (@trnila)
|
||||||
- Yuchen Pei (@ycpei)
|
- Yuchen Pei (@ycpei)
|
||||||
- @maqiv
|
- @maqiv
|
||||||
|
- @dpc
|
||||||
|
- Drew Hays (@Dru89)
|
||||||
|
- Daniel Etrata (@danetrata)
|
||||||
|
- Keith Haber (@kjhaber)
|
||||||
|
- @beuerle
|
||||||
|
- Silvio Ricardo Cordeiro (@silvioricardoc)
|
||||||
|
- @blyoa
|
||||||
|
- Jonathan McElroy (@jonathanmcelroy)
|
||||||
|
- @PetrusZ
|
||||||
|
- Brian Gianforcaro (@bgianfo)
|
||||||
|
- Ben Burrill (@benburrill)
|
||||||
|
- Zhuang Ma (@mzlogin)
|
||||||
|
- Huy Le (@huynle)
|
||||||
|
- Nick Borden (@hcwndbyw)
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
15. Changelog *vimwiki-changelog*
|
16. Changelog *vimwiki-changelog*
|
||||||
|
|
||||||
|
|
||||||
Issue numbers starting with '#' are issues from
|
Issue numbers starting with '#' are issues from
|
||||||
@ -2965,14 +2984,61 @@ http://code.google.com/p/vimwiki/issues/list. They may be accessible from
|
|||||||
https://github.com/vimwiki-backup/vimwiki/issues.
|
https://github.com/vimwiki-backup/vimwiki/issues.
|
||||||
|
|
||||||
|
|
||||||
|
2.4 (not yet released)~
|
||||||
|
|
||||||
|
New:~
|
||||||
|
* Add the option |g:vimwiki_text_ignore_newline|.
|
||||||
|
* |g:vimwiki_listsyms| can have fewer or more than 5 symbols.
|
||||||
|
* glx on a list item marks a checkbox as won't do, see |vimwiki_glx|.
|
||||||
|
* Add the option |g:vimwiki_listsym_rejected| to set the character used
|
||||||
|
for won't-do list items.
|
||||||
|
* gln and glp change the "done" status of a checkbox, see |vimwiki_gln|.
|
||||||
|
* |:VimwikiSplitLink| and |:VimwikiVSplitLink| can now reuse an existing
|
||||||
|
split window and not move the cursor.
|
||||||
|
* Add 'aH' and 'iH' text objects, see |vimwiki-text-objects|.
|
||||||
|
* Add the keys |vimwiki_[[|, |vimwiki_]]|, |vimwiki_[=|, |vimwiki_]=| and
|
||||||
|
|vimwiki_]u| for navigating between headers.
|
||||||
|
* Add the command |:VimwikiMakeTomorrowDiaryNote|.
|
||||||
|
* |g:vimwiki_folding| has a new option 'custom'.
|
||||||
|
* Add the ':quick' option for faster folding, see |g:vimwiki_folding|.
|
||||||
|
* Add the %date placeholder, see |vimwiki-date|.
|
||||||
|
* Add the option |vimwiki-option-custom_wiki2html_args|.
|
||||||
|
* Add support for HTML-style comments when using markdown syntax.
|
||||||
|
|
||||||
|
Removed:~
|
||||||
|
* Remove the undocumented and buggy command :VimwikiReadLocalOptions
|
||||||
|
which allowed to store Vimwiki related settings in a local file.
|
||||||
|
* Remove the undocumented command :VimwikiPrintWikiState.
|
||||||
|
* For complicated reasons, Vimwiki doesn't clean up its settings anymore
|
||||||
|
if you change the filetype of a wiki buffer.
|
||||||
|
|
||||||
|
Fixed:~
|
||||||
|
* Make |vimwiki-option-automatic_nested_syntaxes| work also for markdown.
|
||||||
|
* Issue #236: Highlight math blocks as TeX math, not TeX.
|
||||||
|
* Issue #264: Don't overwrite mappings to i_<CR> from other plugins.
|
||||||
|
* Fix an error where <BS> sometimes didn't work under Windows.
|
||||||
|
* Issue #302: |:VimwikiDiaryGenerateLinks| had issues with markdown.
|
||||||
|
* Issue #445: Better handling of |'autowriteall'| and |'hidden'|.
|
||||||
|
* Improve 'ah' and 'ih' text objects, see |vimwiki-text-objects|.
|
||||||
|
* Allow opening of links using Powershell.
|
||||||
|
* Allow any visual mode to be used with |vimwiki_+|.
|
||||||
|
* Markdown syntax for |vimwiki-toc| is used, when appropriate.
|
||||||
|
* Wikis can now be in subfolders of other wikis.
|
||||||
|
* Issue #482: |:VimwikiMakeDiaryNote| now uses the diary of the current wiki.
|
||||||
|
* Opening the diary and wikis from the menu works correctly now.
|
||||||
|
* Issue #497: Make |:VimwikiMakeDiaryNote| work outside a wiki buffer.
|
||||||
|
* Use markdown syntax in the diary when appropriate.
|
||||||
|
* Various other minor fixes.
|
||||||
|
|
||||||
|
|
||||||
2.3 (2016-03-31)~
|
2.3 (2016-03-31)~
|
||||||
|
|
||||||
New:
|
New:~
|
||||||
* Add |:VimwikiMakeYesterdayDiaryNote| command
|
* Add |:VimwikiMakeYesterdayDiaryNote| command
|
||||||
* Issue #128: add option |vimwiki-option-automatic_nested_syntaxes|
|
* Issue #128: add option |vimwiki-option-automatic_nested_syntaxes|
|
||||||
* Issue #192: Sort links in the list generated by |:VimwikiGenerateTags|
|
* Issue #192: Sort links in the list generated by |:VimwikiGenerateTags|
|
||||||
|
|
||||||
Fixed:
|
Fixed:~
|
||||||
* Issue #176: Fix issue when the wiki path contains spaces
|
* Issue #176: Fix issue when the wiki path contains spaces
|
||||||
* Also look for tags in wiki files in subdirectories
|
* Also look for tags in wiki files in subdirectories
|
||||||
* Locate the .tags file correctly on Windows
|
* Locate the .tags file correctly on Windows
|
||||||
@ -3198,7 +3264,7 @@ http://code.google.com/p/vimwiki/issues/list
|
|||||||
* First public version.
|
* First public version.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
16. License *vimwiki-license*
|
17. License *vimwiki-license*
|
||||||
|
|
||||||
The MIT License
|
The MIT License
|
||||||
http://www.opensource.org/licenses/mit-license.php
|
http://www.opensource.org/licenses/mit-license.php
|
||||||
|
@ -63,14 +63,14 @@ function! Complete_wikifiles(findstart, base)
|
|||||||
elseif a:base !~# '#'
|
elseif a:base !~# '#'
|
||||||
" we look for wiki files
|
" we look for wiki files
|
||||||
|
|
||||||
if a:base =~# '^wiki\d:'
|
if a:base =~# '\m^wiki\d\+:'
|
||||||
let wikinumber = eval(matchstr(a:base, '^wiki\zs\d'))
|
let wikinumber = eval(matchstr(a:base, '\m^wiki\zs\d\+'))
|
||||||
if wikinumber >= vimwiki#vars#number_of_wikis()
|
if wikinumber >= vimwiki#vars#number_of_wikis()
|
||||||
return []
|
return []
|
||||||
endif
|
endif
|
||||||
let diary = 0
|
let diary = 0
|
||||||
let prefix = matchstr(a:base, '^wiki\d:\zs.*')
|
let prefix = matchstr(a:base, '\m^wiki\d\+:\zs.*')
|
||||||
let scheme = matchstr(a:base, '^wiki\d:\ze')
|
let scheme = matchstr(a:base, '\m^wiki\d\+:\ze')
|
||||||
elseif a:base =~# '^diary:'
|
elseif a:base =~# '^diary:'
|
||||||
let wikinumber = vimwiki#vars#get_bufferlocal('wiki_nr')
|
let wikinumber = vimwiki#vars#get_bufferlocal('wiki_nr')
|
||||||
let diary = 1
|
let diary = 1
|
||||||
@ -263,8 +263,8 @@ command! -buffer VimwikiDeleteLink call vimwiki#base#delete_link()
|
|||||||
command! -buffer VimwikiRenameLink call vimwiki#base#rename_link()
|
command! -buffer VimwikiRenameLink call vimwiki#base#rename_link()
|
||||||
command! -buffer VimwikiFollowLink call vimwiki#base#follow_link('nosplit', 0, 1)
|
command! -buffer VimwikiFollowLink call vimwiki#base#follow_link('nosplit', 0, 1)
|
||||||
command! -buffer VimwikiGoBackLink call vimwiki#base#go_back_link()
|
command! -buffer VimwikiGoBackLink call vimwiki#base#go_back_link()
|
||||||
command! -buffer VimwikiSplitLink call vimwiki#base#follow_link('hsplit', 0, 1)
|
command! -buffer -nargs=* VimwikiSplitLink call vimwiki#base#follow_link('hsplit', <f-args>)
|
||||||
command! -buffer VimwikiVSplitLink call vimwiki#base#follow_link('vsplit', 0, 1)
|
command! -buffer -nargs=* VimwikiVSplitLink call vimwiki#base#follow_link('vsplit', <f-args>)
|
||||||
|
|
||||||
command! -buffer -nargs=? VimwikiNormalizeLink call vimwiki#base#normalize_link(<f-args>)
|
command! -buffer -nargs=? VimwikiNormalizeLink call vimwiki#base#normalize_link(<f-args>)
|
||||||
|
|
||||||
|
@ -14,6 +14,13 @@ let s:old_cpo = &cpo
|
|||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
|
|
||||||
|
if exists('g:vimwiki_autowriteall')
|
||||||
|
let s:vimwiki_autowriteall_saved = g:vimwiki_autowriteall
|
||||||
|
else
|
||||||
|
let s:vimwiki_autowriteall_saved = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
" this is called when the cursor leaves the buffer
|
" this is called when the cursor leaves the buffer
|
||||||
function! s:setup_buffer_leave()
|
function! s:setup_buffer_leave()
|
||||||
" don't do anything if it's not managed by Vimwiki (that is, when it's not in
|
" don't do anything if it's not managed by Vimwiki (that is, when it's not in
|
||||||
@ -24,7 +31,7 @@ function! s:setup_buffer_leave()
|
|||||||
|
|
||||||
let &autowriteall = s:vimwiki_autowriteall_saved
|
let &autowriteall = s:vimwiki_autowriteall_saved
|
||||||
|
|
||||||
if vimwiki#vars#get_global('menu') != ""
|
if !empty(vimwiki#vars#get_global('menu'))
|
||||||
exe 'nmenu disable '.vimwiki#vars#get_global('menu').'.Table'
|
exe 'nmenu disable '.vimwiki#vars#get_global('menu').'.Table'
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
@ -49,6 +56,10 @@ function! s:create_temporary_wiki()
|
|||||||
\ }
|
\ }
|
||||||
|
|
||||||
call vimwiki#vars#add_temporary_wiki(new_temp_wiki_settings)
|
call vimwiki#vars#add_temporary_wiki(new_temp_wiki_settings)
|
||||||
|
|
||||||
|
" Update the wiki number of the current buffer, because it may have changed when adding this
|
||||||
|
" temporary wiki.
|
||||||
|
call vimwiki#vars#set_bufferlocal('wiki_nr', vimwiki#base#find_wiki(expand('%:p')))
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
@ -137,7 +148,7 @@ function! s:set_global_options()
|
|||||||
let s:vimwiki_autowriteall_saved = &autowriteall
|
let s:vimwiki_autowriteall_saved = &autowriteall
|
||||||
let &autowriteall = vimwiki#vars#get_global('autowriteall')
|
let &autowriteall = vimwiki#vars#get_global('autowriteall')
|
||||||
|
|
||||||
if vimwiki#vars#get_global('menu') !=# ''
|
if !empty(vimwiki#vars#get_global('menu'))
|
||||||
exe 'nmenu enable '.vimwiki#vars#get_global('menu').'.Table'
|
exe 'nmenu enable '.vimwiki#vars#get_global('menu').'.Table'
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
@ -147,6 +158,7 @@ endfunction
|
|||||||
" Vim defaults. So we enforce our settings here when the cursor enters a
|
" Vim defaults. So we enforce our settings here when the cursor enters a
|
||||||
" Vimwiki buffer.
|
" Vimwiki buffer.
|
||||||
function! s:set_windowlocal_options()
|
function! s:set_windowlocal_options()
|
||||||
|
if !&diff " if Vim is currently in diff mode, don't interfere with its folding
|
||||||
let foldmethod = vimwiki#vars#get_global('folding')
|
let foldmethod = vimwiki#vars#get_global('folding')
|
||||||
if foldmethod =~? '^expr.*'
|
if foldmethod =~? '^expr.*'
|
||||||
setlocal foldmethod=expr
|
setlocal foldmethod=expr
|
||||||
@ -165,6 +177,7 @@ function! s:set_windowlocal_options()
|
|||||||
setlocal foldmethod=manual
|
setlocal foldmethod=manual
|
||||||
normal! zE
|
normal! zE
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
if vimwiki#vars#get_global('conceallevel') && exists("+conceallevel")
|
if vimwiki#vars#get_global('conceallevel') && exists("+conceallevel")
|
||||||
let &conceallevel = vimwiki#vars#get_global('conceallevel')
|
let &conceallevel = vimwiki#vars#get_global('conceallevel')
|
||||||
@ -219,11 +232,11 @@ endif
|
|||||||
|
|
||||||
augroup vimwiki
|
augroup vimwiki
|
||||||
autocmd!
|
autocmd!
|
||||||
|
autocmd ColorScheme * call s:setup_cleared_syntax()
|
||||||
for s:ext in s:known_extensions
|
for s:ext in s:known_extensions
|
||||||
exe 'autocmd BufNewFile,BufRead *'.s:ext.' call s:setup_new_wiki_buffer()'
|
exe 'autocmd BufNewFile,BufRead *'.s:ext.' call s:setup_new_wiki_buffer()'
|
||||||
exe 'autocmd BufEnter *'.s:ext.' call s:setup_buffer_enter()'
|
exe 'autocmd BufEnter *'.s:ext.' call s:setup_buffer_enter()'
|
||||||
exe 'autocmd BufLeave *'.s:ext.' call s:setup_buffer_leave()'
|
exe 'autocmd BufLeave *'.s:ext.' call s:setup_buffer_leave()'
|
||||||
exe 'autocmd ColorScheme *'.s:ext.' call s:setup_cleared_syntax()'
|
|
||||||
" Format tables when exit from insert mode. Do not use textwidth to
|
" Format tables when exit from insert mode. Do not use textwidth to
|
||||||
" autowrap tables.
|
" autowrap tables.
|
||||||
if vimwiki#vars#get_global('table_auto_fmt')
|
if vimwiki#vars#get_global('table_auto_fmt')
|
||||||
@ -256,14 +269,14 @@ command! -count=1 VimwikiTabIndex
|
|||||||
command! -count=1 VimwikiDiaryIndex
|
command! -count=1 VimwikiDiaryIndex
|
||||||
\ call vimwiki#diary#goto_diary_index(v:count1)
|
\ call vimwiki#diary#goto_diary_index(v:count1)
|
||||||
command! -count=1 VimwikiMakeDiaryNote
|
command! -count=1 VimwikiMakeDiaryNote
|
||||||
\ call vimwiki#diary#make_note(v:count1)
|
\ call vimwiki#diary#make_note(v:count)
|
||||||
command! -count=1 VimwikiTabMakeDiaryNote
|
command! -count=1 VimwikiTabMakeDiaryNote
|
||||||
\ call vimwiki#diary#make_note(v:count1, 1)
|
\ call vimwiki#diary#make_note(v:count, 1)
|
||||||
command! -count=1 VimwikiMakeYesterdayDiaryNote
|
command! -count=1 VimwikiMakeYesterdayDiaryNote
|
||||||
\ call vimwiki#diary#make_note(v:count1, 0,
|
\ call vimwiki#diary#make_note(v:count, 0,
|
||||||
\ vimwiki#diary#diary_date_link(localtime() - 60*60*24))
|
\ vimwiki#diary#diary_date_link(localtime() - 60*60*24))
|
||||||
command! -count=1 VimwikiMakeTomorrowDiaryNote
|
command! -count=1 VimwikiMakeTomorrowDiaryNote
|
||||||
\ call vimwiki#diary#make_note(v:count1, 0,
|
\ call vimwiki#diary#make_note(v:count, 0,
|
||||||
\ vimwiki#diary#diary_date_link(localtime() + 60*60*24))
|
\ vimwiki#diary#diary_date_link(localtime() + 60*60*24))
|
||||||
|
|
||||||
command! VimwikiDiaryGenerateLinks
|
command! VimwikiDiaryGenerateLinks
|
||||||
@ -329,9 +342,9 @@ function! s:build_menu(topmenu)
|
|||||||
let norm_path = vimwiki#path#to_string(vimwiki#vars#get_wikilocal('path', idx))
|
let norm_path = vimwiki#path#to_string(vimwiki#vars#get_wikilocal('path', idx))
|
||||||
let norm_path = escape(norm_path, '\ .')
|
let norm_path = escape(norm_path, '\ .')
|
||||||
execute 'menu '.a:topmenu.'.Open\ index.'.norm_path.
|
execute 'menu '.a:topmenu.'.Open\ index.'.norm_path.
|
||||||
\ ' :call vimwiki#base#goto_index('.idx.')<CR>'
|
\ ' :call vimwiki#base#goto_index('.(idx+1).')<CR>'
|
||||||
execute 'menu '.a:topmenu.'.Open/Create\ diary\ note.'.norm_path.
|
execute 'menu '.a:topmenu.'.Open/Create\ diary\ note.'.norm_path.
|
||||||
\ ' :call vimwiki#diary#make_note('.idx.')<CR>'
|
\ ' :call vimwiki#diary#make_note('.(idx+1).')<CR>'
|
||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
@ -106,8 +106,8 @@ call s:add_target_syntax_ON(vimwiki#vars#get_syntaxlocal('rxWeblink'), 'VimwikiL
|
|||||||
" WikiLink
|
" WikiLink
|
||||||
" All remaining schemes are highlighted automatically
|
" All remaining schemes are highlighted automatically
|
||||||
let s:rxSchemes = '\%('.
|
let s:rxSchemes = '\%('.
|
||||||
\ join(split(vimwiki#vars#get_global('schemes'), '\s*,\s*'), '\|').'\|'.
|
\ vimwiki#vars#get_global('schemes') . '\|'.
|
||||||
\ join(split(vimwiki#vars#get_global('web_schemes1'), '\s*,\s*'), '\|').
|
\ vimwiki#vars#get_global('web_schemes1').
|
||||||
\ '\):'
|
\ '\):'
|
||||||
|
|
||||||
" a) match [[nonwiki-scheme-URL]]
|
" a) match [[nonwiki-scheme-URL]]
|
||||||
|
@ -104,8 +104,8 @@ call s:add_target_syntax_ON(vimwiki#vars#get_syntaxlocal('rxWeblink1'), 'Vimwiki
|
|||||||
" WikiLink
|
" WikiLink
|
||||||
" All remaining schemes are highlighted automatically
|
" All remaining schemes are highlighted automatically
|
||||||
let s:rxSchemes = '\%('.
|
let s:rxSchemes = '\%('.
|
||||||
\ join(split(vimwiki#vars#get_global('schemes'), '\s*,\s*'), '\|').'\|'.
|
\ vimwiki#vars#get_global('schemes') . '\|'.
|
||||||
\ join(split(vimwiki#vars#get_global('web_schemes1'), '\s*,\s*'), '\|').
|
\ vimwiki#vars#get_global('web_schemes1').
|
||||||
\ '\):'
|
\ '\):'
|
||||||
|
|
||||||
" a) match [nonwiki-scheme-URL]
|
" a) match [nonwiki-scheme-URL]
|
||||||
|
Loading…
Reference in New Issue
Block a user