diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim
index 2eeae95..39ae7ff 100644
--- a/autoload/vimwiki/base.vim
+++ b/autoload/vimwiki/base.vim
@@ -20,165 +20,17 @@ function! s:vimwiki_get_known_syntaxes() " {{{
" Getting all syntaxes that different wikis could have
let syntaxes = {}
let syntaxes['default'] = 1
- for wiki in g:vimwiki_list
- if has_key(wiki, 'syntax')
- let syntaxes[wiki.syntax] = 1
- endif
+ for wiki_nr in range(vimwiki#vars#number_of_wikis())
+ let wiki_syntax = vimwiki#vars#get_wikilocal('syntax', wiki_nr)
+ let syntaxes[wiki_syntax] = 1
endfor
- " append map g:vimwiki_ext2syntax
- for syn in values(g:vimwiki_ext2syntax)
+ " also consider the syntaxes from g:vimwiki_ext2syntax
+ for syn in values(vimwiki#vars#get_global('ext2syntax'))
let syntaxes[syn] = 1
endfor
return keys(syntaxes)
endfunction " }}}
-" vimwiki#base#apply_wiki_options
-function! vimwiki#base#apply_wiki_options(options) " {{{ Update the current
- " wiki using the options dictionary
- for kk in keys(a:options)
- let g:vimwiki_list[g:vimwiki_current_idx][kk] = a:options[kk]
- endfor
- call Validate_wiki_options(g:vimwiki_current_idx)
- call vimwiki#base#setup_buffer_state(g:vimwiki_current_idx)
-endfunction " }}}
-
-" vimwiki#base#read_wiki_options
-function! vimwiki#base#read_wiki_options(check) " {{{ Attempt to read wiki
- " options from the current page's directory, or its ancesters. If a file
- " named vimwiki.vimrc is found, which declares a wiki-options dictionary
- " named g:local_wiki, a message alerts the user that an update has been
- " found and may be applied. If the argument check=1, the user is queried
- " before applying the update to the current wiki's option.
-
- " Save global vimwiki options ... after all, the global list is often
- " initialized for the first time in vimrc files, and we don't want to
- " overwrite !! (not to mention all the other globals ...)
- let l:vimwiki_list = deepcopy(g:vimwiki_list, 1)
- "
- if a:check > 1
- call vimwiki#base#print_wiki_state()
- echo " \n"
- endif
- "
- let g:local_wiki = {}
- let done = 0
- " ... start the wild-goose chase!
- for invsubdir in ['.', '..', '../..', '../../..']
- " other names are possible, but most vimrc files will cause grief!
- for nm in ['vimwiki.vimrc']
- " TODO: use an alternate strategy, instead of source, to read options
- if done
- continue
- endif
- "
- let local_wiki_options_filename = expand('%:p:h').'/'.invsubdir.'/'.nm
- if !filereadable(local_wiki_options_filename)
- continue
- endif
- "
- echo "\nFound file : ".local_wiki_options_filename
- let query = "Vimwiki: Check for options in this file [Y]es/[n]o? "
- if a:check > 0 && input(query) =~? '^n')
- continue
- endif
- "
- try
- execute 'source '.local_wiki_options_filename
- catch
- endtry
- if empty(g:local_wiki)
- continue
- endif
- "
- if a:check > 0
- echo "\n\nFound wiki options\n g:local_wiki = ".string(g:local_wiki)
- let query = "Vimwiki: Apply these options [Y]es/[n]o? "
- if input(query) =~? '^n'
- let g:local_wiki = {}
- continue
- endif
- endif
- "
- " restore global list
- " - this prevents corruption by g:vimwiki_list in options_file
- let g:vimwiki_list = deepcopy(l:vimwiki_list, 1)
- "
- call vimwiki#base#apply_wiki_options(g:local_wiki)
- let done = 1
- endfor
- endfor
- if !done
- "
- " restore global list, if no local options were found
- " - this prevents corruption by g:vimwiki_list in options_file
- let g:vimwiki_list = deepcopy(l:vimwiki_list, 1)
- "
- endif
- if a:check > 1
- echo " \n "
- if done
- call vimwiki#base#print_wiki_state()
- else
- echo "Vimwiki: No options were applied."
- endif
- endif
-endfunction " }}}
-
-" vimwiki#base#setup_buffer_state
-function! vimwiki#base#setup_buffer_state(idx) " {{{ Init page-specific variables
- " Only call this function *after* opening a wiki page.
- if a:idx < 0
- return
- endif
-
- let g:vimwiki_current_idx = a:idx
-
- " The following state depends on the current active wiki page
- let subdir = vimwiki#base#current_subdir(a:idx)
- call VimwikiSet('subdir', subdir, a:idx)
- call VimwikiSet('invsubdir', vimwiki#base#invsubdir(subdir), a:idx)
-
- if g:vimwiki_auto_chdir == 1
- exe 'lcd' VimwikiGet('path')
- endif
-
- " update cache
- call vimwiki#base#cache_buffer_state()
-endfunction " }}}
-
-" vimwiki#base#cache_buffer_state
-function! vimwiki#base#cache_buffer_state() "{{{
- let b:vimwiki_idx = g:vimwiki_current_idx
-endfunction "}}}
-
-" vimwiki#base#recall_buffer_state
-function! vimwiki#base#recall_buffer_state() "{{{
- if !exists('b:vimwiki_idx')
- return 0
- else
- let g:vimwiki_current_idx = b:vimwiki_idx
- return 1
- endif
-endfunction " }}}
-
-" vimwiki#base#print_wiki_state
-function! vimwiki#base#print_wiki_state() "{{{ print wiki options
- " and buffer state variables
- let g_width = 18
- let b_width = 18
- echo "- Wiki Options (idx=".g:vimwiki_current_idx.") -"
- for kk in VimwikiGetOptionNames()
- echo " '".kk."': ".repeat(' ', g_width-len(kk)).string(VimwikiGet(kk))
- endfor
- if !exists('b:vimwiki_list')
- return
- endif
- echo "- Cached Variables -"
- for kk in keys(b:vimwiki_list)
- echo " '".kk."': ".repeat(' ', b_width-len(kk)).string(b:vimwiki_list[kk])
- endfor
-endfunction "}}}
-
" vimwiki#base#file_pattern
function! vimwiki#base#file_pattern(files) "{{{ Get search regex from glob()
" string. Aim to support *all* special characters, forcing the user to choose
@@ -215,8 +67,8 @@ function! vimwiki#base#subdir(path, filename) "{{{
endfunction "}}}
" vimwiki#base#current_subdir
-function! vimwiki#base#current_subdir(idx)"{{{
- return vimwiki#base#subdir(VimwikiGet('path', a:idx), expand('%:p'))
+function! vimwiki#base#current_subdir()"{{{
+ return vimwiki#base#subdir(vimwiki#vars#get_wikilocal('path'), expand('%:p'))
endfunction"}}}
" vimwiki#base#invsubdir
@@ -228,16 +80,15 @@ endfunction " }}}
" Returns: the number of the wiki a file belongs to
function! vimwiki#base#find_wiki(path) "{{{
let path = vimwiki#path#path_norm(vimwiki#path#chomp_slash(a:path))
- let idx = 0
- while idx < len(g:vimwiki_list)
- let idx_path = expand(VimwikiGet('path', idx))
+ for idx in range(vimwiki#vars#number_of_wikis())
+ let idx_path = expand(vimwiki#vars#get_wikilocal('path', idx))
let idx_path = vimwiki#path#path_norm(vimwiki#path#chomp_slash(idx_path))
if vimwiki#path#is_equal(
\ vimwiki#path#path_common_pfx(idx_path, path), idx_path)
return idx
endif
let idx += 1
- endwhile
+ endfor
" an orphan page has been detected
return -1
@@ -253,14 +104,14 @@ function! vimwiki#base#resolve_link(link_text, ...) "{{{
let source_wiki = vimwiki#base#find_wiki(a:1)
let source_file = a:1
else
- let source_wiki = g:vimwiki_current_idx
+ let source_wiki = vimwiki#vars#get_bufferlocal('wiki_nr')
let source_file = vimwiki#path#current_wiki_file()
endif
let link_text = a:link_text
" if link is schemeless add wikiN: scheme
- if link_text !~# g:vimwiki_rxSchemeUrl
+ if link_text !~# vimwiki#vars#get_global('rxSchemeUrl')
let link_text = 'wiki'.source_wiki.':'.link_text
endif
@@ -274,7 +125,7 @@ function! vimwiki#base#resolve_link(link_text, ...) "{{{
" extract scheme
- let link_infos.scheme = matchstr(link_text, g:vimwiki_rxSchemeUrlMatchScheme)
+ let link_infos.scheme = matchstr(link_text, vimwiki#vars#get_global('rxSchemeUrlMatchScheme'))
if link_infos.scheme == '' || link_text == ''
let link_infos.filename = '' " malformed link
return link_infos
@@ -283,7 +134,7 @@ function! vimwiki#base#resolve_link(link_text, ...) "{{{
let link_infos.filename = link_text " unknown scheme, may be a weblink
return link_infos
endif
- let link_text = matchstr(link_text, g:vimwiki_rxSchemeUrlMatchUrl)
+ let link_text = matchstr(link_text, vimwiki#vars#get_global('rxSchemeUrlMatchUrl'))
let is_wiki_link = link_infos.scheme =~# '\mwiki\d\+' ||
\ link_infos.scheme ==# 'diary'
@@ -317,34 +168,34 @@ function! vimwiki#base#resolve_link(link_text, ...) "{{{
" extract the other items depending on the scheme
if link_infos.scheme =~# '\mwiki\d\+'
let link_infos.index = eval(matchstr(link_infos.scheme, '\D\+\zs\d\+\ze'))
- if link_infos.index < 0 || link_infos.index >= len(g:vimwiki_list)
+ if link_infos.index < 0 || link_infos.index >= vimwiki#vars#number_of_wikis()
let link_infos.filename = ''
return link_infos
endif
if !is_relative || link_infos.index != source_wiki
- let root_dir = VimwikiGet('path', link_infos.index)
+ let root_dir = vimwiki#vars#get_wikilocal('path', link_infos.index)
endif
let link_infos.filename = root_dir . link_text
if vimwiki#path#is_link_to_dir(link_text)
- if g:vimwiki_dir_link != ''
- let link_infos.filename .= g:vimwiki_dir_link .
- \ VimwikiGet('ext', link_infos.index)
+ if vimwiki#vars#get_global('dir_link') != ''
+ let link_infos.filename .= vimwiki#vars#get_global('dir_link') .
+ \ vimwiki#vars#get_wikilocal('ext', link_infos.index)
endif
else
- let link_infos.filename .= VimwikiGet('ext', link_infos.index)
+ let link_infos.filename .= vimwiki#vars#get_wikilocal('ext', link_infos.index)
endif
elseif link_infos.scheme ==# 'diary'
let link_infos.index = source_wiki
let link_infos.filename =
- \ VimwikiGet('path', link_infos.index) .
- \ VimwikiGet('diary_rel_path', link_infos.index) .
+ \ vimwiki#vars#get_wikilocal('path', link_infos.index) .
+ \ vimwiki#vars#get_wikilocal('diary_rel_path', link_infos.index) .
\ link_text .
- \ VimwikiGet('ext', link_infos.index)
+ \ vimwiki#vars#get_wikilocal('ext', link_infos.index)
elseif (link_infos.scheme ==# 'file' || link_infos.scheme ==# 'local')
\ && is_relative
let link_infos.filename = simplify(root_dir . link_text)
@@ -429,10 +280,6 @@ function! vimwiki#base#open_link(cmd, link, ...) "{{{
if is_wiki_link
call vimwiki#base#edit_file(a:cmd, link_infos.filename, link_infos.anchor,
\ vimwiki_prev_link, update_prev_link)
- if link_infos.index != g:vimwiki_current_idx
- " this call to setup_buffer_state may not be necessary
- call vimwiki#base#setup_buffer_state(link_infos.index)
- endif
else
call vimwiki#base#system_open_link(link_infos.filename)
endif
@@ -444,9 +291,9 @@ function! vimwiki#base#get_globlinks_escaped() abort "{{{only get links from the
let orig_pwd = getcwd()
lcd! %:h
" all path are relative to the current file's location
- let globlinks = glob('*'.VimwikiGet('ext'),1)."\n"
+ let globlinks = glob('*'.vimwiki#vars#get_wikilocal('ext'), 1)."\n"
" remove extensions
- let globlinks = substitute(globlinks, '\'.VimwikiGet('ext').'\ze\n', '', 'g')
+ let globlinks = substitute(globlinks, '\'.vimwiki#vars#get_wikilocal('ext').'\ze\n', '', 'g')
" restore the original working directory
exe 'lcd! '.orig_pwd
" convert to a List
@@ -463,7 +310,7 @@ endfunction " }}}
function! vimwiki#base#generate_links() "{{{
let lines = []
- let links = vimwiki#base#get_wikilinks(g:vimwiki_current_idx, 0)
+ let links = vimwiki#base#get_wikilinks(vimwiki#vars#get_bufferlocal('wiki_nr'), 0)
call sort(links)
let bullet = repeat(' ', vimwiki#lst#get_list_margin()).
@@ -472,7 +319,8 @@ function! vimwiki#base#generate_links() "{{{
let abs_filepath = vimwiki#path#abs_path_of_link(link)
if !s:is_diary_file(abs_filepath)
call add(lines, bullet.
- \ s:safesubstitute(g:vimwiki_WikiLinkTemplate1, '__LinkUrl__', link, ''))
+ \ s:safesubstitute(vimwiki#vars#get_global('WikiLinkTemplate1'),
+ \ '__LinkUrl__', link, ''))
endif
endfor
@@ -488,7 +336,7 @@ function! vimwiki#base#goto(...) "{{{
let anchor = a:0 > 1 ? a:2 : ''
call vimwiki#base#edit_file(':e',
- \ VimwikiGet('path') . key . VimwikiGet('ext'),
+ \ vimwiki#vars#get_wikilocal('path') . key . vimwiki#vars#get_wikilocal('ext'),
\ anchor)
endfunction "}}}
@@ -496,8 +344,8 @@ endfunction "}}}
function! vimwiki#base#backlinks() "{{{
let current_filename = expand("%:p")
let locations = []
- for idx in range(len(g:vimwiki_list))
- let syntax = VimwikiGet('syntax', idx)
+ for idx in range(vimwiki#vars#number_of_wikis())
+ let syntax = vimwiki#vars#get_wikilocal('syntax', idx)
let wikifiles = vimwiki#base#find_files(idx, 0)
for source_file in wikifiles
let links = s:get_links(source_file, idx)
@@ -525,20 +373,20 @@ endfunction "}}}
function! vimwiki#base#find_files(wiki_nr, directories_only)
let wiki_nr = a:wiki_nr
if wiki_nr >= 0
- let root_directory = VimwikiGet('path', wiki_nr)
+ let root_directory = vimwiki#vars#get_wikilocal('path', wiki_nr)
else
- let root_directory = VimwikiGet('path').VimwikiGet('diary_rel_path')
- let wiki_nr = g:vimwiki_current_idx
+ let root_directory = vimwiki#vars#get_wikilocal('path') . vimwiki#vars#get_wikilocal('diary_rel_path')
+ let wiki_nr = vimwiki#vars#get_bufferlocal('wiki_nr')
endif
if a:directories_only
let ext = '/'
else
- let ext = VimwikiGet('ext', wiki_nr)
+ let ext = vimwiki#vars#get_wikilocal('ext', wiki_nr)
endif
" if current wiki is temporary -- was added by an arbitrary wiki file then do
" not search wiki files in subdirectories. Or it would hang the system if
" wiki file was created in $HOME or C:/ dirs.
- if VimwikiGet('temp', wiki_nr)
+ if vimwiki#vars#get_wikilocal('is_temporary_wiki', wiki_nr)
let pattern = '*'.ext
else
let pattern = '**/*'.ext
@@ -552,12 +400,12 @@ endfunction
" If also_absolute_links is nonzero, also return links of the form /file
function! vimwiki#base#get_wikilinks(wiki_nr, also_absolute_links)
let files = vimwiki#base#find_files(a:wiki_nr, 0)
- if a:wiki_nr == g:vimwiki_current_idx
+ if a:wiki_nr == vimwiki#vars#get_bufferlocal('wiki_nr')
let cwd = vimwiki#path#wikify_path(expand('%:p:h'))
elseif a:wiki_nr < 0
- let cwd = VimwikiGet('path').VimwikiGet('diary_rel_path')
+ let cwd = vimwiki#vars#get_wikilocal('path') . vimwiki#vars#get_wikilocal('diary_rel_path')
else
- let cwd = VimwikiGet('path', a:wiki_nr)
+ let cwd = vimwiki#vars#get_wikilocal('path', a:wiki_nr)
endif
let result = []
for wikifile in files
@@ -567,10 +415,10 @@ function! vimwiki#base#get_wikilinks(wiki_nr, also_absolute_links)
endfor
if a:also_absolute_links
for wikifile in files
- if a:wiki_nr == g:vimwiki_current_idx
- let cwd = VimwikiGet('path')
+ if a:wiki_nr == vimwiki#vars#get_bufferlocal('wiki_nr')
+ let cwd = vimwiki#vars#get_wikilocal('path')
elseif a:wiki_nr < 0
- let cwd = VimwikiGet('path').VimwikiGet('diary_rel_path')
+ let cwd = vimwiki#vars#get_wikilocal('path') . vimwiki#vars#get_wikilocal('diary_rel_path')
endif
let wikifile = fnamemodify(wikifile, ':r') " strip extension
let wikifile = '/'.vimwiki#path#relpath(cwd, wikifile)
@@ -583,17 +431,17 @@ endfunction
" Returns: a list containing the links to all directories from the current file
function! vimwiki#base#get_wiki_directories(wiki_nr)
let dirs = vimwiki#base#find_files(a:wiki_nr, 1)
- if a:wiki_nr == g:vimwiki_current_idx
+ if a:wiki_nr == vimwiki#vars#get_bufferlocal('wiki_nr')
let cwd = vimwiki#path#wikify_path(expand('%:p:h'))
- let root_dir = VimwikiGet('path')
+ let root_dir = vimwiki#vars#get_wikilocal('path')
else
- let cwd = VimwikiGet('path', a:wiki_nr)
+ let cwd = vimwiki#vars#get_wikilocal('path', a:wiki_nr)
endif
let result = ['./']
for wikidir in dirs
let wikidir_relative = vimwiki#path#relpath(cwd, wikidir)
call add(result, wikidir_relative)
- if a:wiki_nr == g:vimwiki_current_idx
+ if a:wiki_nr == vimwiki#vars#get_bufferlocal('wiki_nr')
let wikidir_absolute = '/'.vimwiki#path#relpath(root_dir, wikidir)
call add(result, wikidir_absolute)
endif
@@ -606,9 +454,9 @@ function! vimwiki#base#get_anchors(filename, syntax) "{{{
return []
endif
- let rxheader = g:vimwiki_{a:syntax}_header_search
- let rxbold = g:vimwiki_{a:syntax}_bold_search
- let rxtag = g:vimwiki_{a:syntax}_tag_search
+ let rxheader = vimwiki#vars#get_syntaxlocal('header_search', a:syntax)
+ let rxbold = vimwiki#vars#get_syntaxlocal('bold_search', a:syntax)
+ let rxtag = vimwiki#vars#get_syntaxlocal('tag_search', a:syntax)
let anchor_level = ['', '', '', '', '', '', '']
let anchors = []
@@ -682,14 +530,17 @@ function! s:jump_to_anchor(anchor) "{{{
let anchor = vimwiki#u#escape(a:anchor)
let segments = split(anchor, '#', 0)
+
for segment in segments
let anchor_header = s:safesubstitute(
- \ g:vimwiki_{VimwikiGet('syntax')}_header_match,
+ \ vimwiki#vars#get_syntaxlocal('header_match'),
\ '__Header__', segment, '')
- let anchor_bold = s:safesubstitute(g:vimwiki_{VimwikiGet('syntax')}_bold_match,
+ let anchor_bold = s:safesubstitute(
+ \ vimwiki#vars#get_syntaxlocal('bold_match'),
\ '__Text__', segment, '')
- let anchor_tag = s:safesubstitute(g:vimwiki_{VimwikiGet('syntax')}_tag_match,
+ let anchor_tag = s:safesubstitute(
+ \ vimwiki#vars#get_syntaxlocal('tag_match'),
\ '__Tag__', segment, '')
if !search(anchor_tag, 'Wc')
@@ -711,8 +562,8 @@ function! s:get_links(wikifile, idx) "{{{
return []
endif
- let syntax = VimwikiGet('syntax', a:idx)
- let rx_link = g:vimwiki_{syntax}_wikilink
+ let syntax = vimwiki#vars#get_wikilocal('syntax', a:idx)
+ let rx_link = vimwiki#vars#get_syntaxlocal('wikilink', syntax)
let links = []
let lnum = 0
@@ -742,8 +593,8 @@ function! vimwiki#base#check_links() "{{{
let anchors_of_files = {}
let links_of_files = {}
let errors = []
- for idx in range(len(g:vimwiki_list))
- let syntax = VimwikiGet('syntax', idx)
+ for idx in range(vimwiki#vars#number_of_wikis())
+ let syntax = vimwiki#vars#get_wikilocal('syntax', idx)
let wikifiles = vimwiki#base#find_files(idx, 0)
for wikifile in wikifiles
let links_of_files[wikifile] = s:get_links(wikifile, idx)
@@ -796,9 +647,9 @@ function! vimwiki#base#check_links() "{{{
endfor
" mark every index file as reachable
- for idx in range(len(g:vimwiki_list))
- let index_file = VimwikiGet('path', idx) . VimwikiGet('index', idx) .
- \ VimwikiGet('ext', idx)
+ for idx in range(vimwiki#vars#number_of_wikis())
+ let index_file = vimwiki#vars#get_wikilocal('path', idx) . vimwiki#vars#get_wikilocal('index', idx) .
+ \ vimwiki#vars#get_wikilocal('ext', idx)
if filereadable(index_file)
let reachable_wikifiles[index_file] = 1
endif
@@ -864,11 +715,15 @@ function! vimwiki#base#edit_file(command, filename, anchor, ...) "{{{
" getpos() directly after this command. Strange.
if !(a:command ==# ':e ' && vimwiki#path#is_equal(a:filename, expand('%:p')))
execute a:command.' '.fname
+
+ " If the opened file was not already loaded by Vim, an autocommand is
+ " triggered at this point
+
" Make sure no other plugin takes ownership over the new file. Vimwiki
" rules them all! Well, except for directories, which may be opened with
" Netrw
if &filetype != 'vimwiki' && fname !~ '\m/$'
- set filetype=vimwiki
+ setfiletype vimwiki
endif
endif
if a:anchor != ''
@@ -879,7 +734,7 @@ function! vimwiki#base#edit_file(command, filename, anchor, ...) "{{{
" a:1 -- previous vimwiki link to save
" a:2 -- should we update previous link
if a:0 && a:2 && len(a:1) > 0
- let b:vimwiki_prev_link = a:1
+ call vimwiki#vars#set_bufferlocal('prev_link', a:1)
endif
endfunction " }}}
@@ -941,15 +796,15 @@ endf "}}}
" s:print_wiki_list
function! s:print_wiki_list() "{{{
let idx = 0
- while idx < len(g:vimwiki_list)
- if idx == g:vimwiki_current_idx
+ while idx < vimwiki#vars#number_of_wikis()
+ if idx == vimwiki#vars#get_bufferlocal('wiki_nr')
let sep = ' * '
echohl PmenuSel
else
let sep = ' '
echohl None
endif
- echo (idx + 1).sep.VimwikiGet('path', idx)
+ echo (idx + 1) . sep . vimwiki#vars#get_wikilocal('path', idx)
let idx += 1
endwhile
echohl None
@@ -981,9 +836,9 @@ function! s:update_wiki_links_dir(dir, old_fname, new_fname) " {{{
let new_fname = a:new_fname
let old_fname_r = vimwiki#base#apply_template(
- \ g:vimwiki_WikiLinkMatchUrlTemplate, old_fname, '', '')
+ \ vimwiki#vars#get_syntaxlocal('WikiLinkMatchUrlTemplate'), old_fname, '', '')
- let files = split(glob(VimwikiGet('path').a:dir.'*'.VimwikiGet('ext')), '\n')
+ let files = split(glob(vimwiki#vars#get_wikilocal('path').a:dir.'*'.vimwiki#vars#get_wikilocal('ext')), '\n')
for fname in files
call s:update_wiki_link(fname, old_fname_r, new_fname)
endfor
@@ -1037,8 +892,10 @@ function! s:get_wiki_buffers() "{{{
while bcount<=bufnr("$")
if bufexists(bcount)
let bname = fnamemodify(bufname(bcount), ":p")
- if bname =~# VimwikiGet('ext')."$"
- let bitem = [bname, getbufvar(bname, "vimwiki_prev_link")]
+ " this may find buffers that are not part of the current wiki, but that
+ " doesn't hurt
+ if bname =~# vimwiki#vars#get_wikilocal('ext')."$"
+ let bitem = [bname, vimwiki#vars#get_bufferlocal('prev_link', bcount)]
call add(blist, bitem)
endif
endif
@@ -1051,7 +908,7 @@ endfunction " }}}
function! s:open_wiki_buffer(item) "{{{
call vimwiki#base#edit_file(':e', a:item[0], '')
if !empty(a:item[1])
- call setbufvar(a:item[0], "vimwiki_prev_link", a:item[1])
+ call vimwiki#vars#set_bufferlocal('prev_link', a:item[1], a:item[0])
endif
endfunction " }}}
@@ -1131,7 +988,7 @@ function! vimwiki#base#update_listing_in_buffer(strings, start_header,
let already_there = 0
let header_rx = '\m^\s*'.
- \ substitute(g:vimwiki_rxH1_Template, '__Header__', a:start_header, '')
+ \ substitute(vimwiki#vars#get_syntaxlocal('rxH1_Template'), '__Header__', a:start_header, '')
\ .'\s*$'
let start_lnum = 1
@@ -1183,7 +1040,7 @@ function! vimwiki#base#update_listing_in_buffer(strings, start_header,
" write new listing
let new_header = whitespaces_in_first_line
- \ . s:safesubstitute(g:vimwiki_rxH1_Template,
+ \ . s:safesubstitute(vimwiki#vars#get_syntaxlocal('rxH1_Template'),
\ '__Header__', a:start_header, '')
call append(start_lnum - 1, new_header)
let start_lnum += 1
@@ -1213,7 +1070,7 @@ endfunction "}}}
" WIKI link following functions {{{
" vimwiki#base#find_next_link
function! vimwiki#base#find_next_link() "{{{
- call vimwiki#base#search_word(g:vimwiki_rxAnyLink, '')
+ call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), '')
endfunction " }}}
" vimwiki#base#find_prev_link
@@ -1221,9 +1078,9 @@ function! vimwiki#base#find_prev_link() "{{{
"Jump 2 times if the cursor is in the middle of a link
if synIDattr(synID(line('.'), col('.'), 0), "name") =~# "VimwikiLink.*" &&
\ synIDattr(synID(line('.'), col('.')-1, 0), "name") =~# "VimwikiLink.*"
- call vimwiki#base#search_word(g:vimwiki_rxAnyLink, 'b')
+ call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), 'b')
endif
- call vimwiki#base#search_word(g:vimwiki_rxAnyLink, 'b')
+ call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), 'b')
endfunction " }}}
" vimwiki#base#follow_link
@@ -1232,17 +1089,17 @@ function! vimwiki#base#follow_link(split, reuse, move_cursor, ...) "{{{
" default open_link handler
" try WikiLink
- let lnk = matchstr(vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWikiLink),
- \ g:vimwiki_rxWikiLinkMatchUrl)
+ let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink')),
+ \ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'))
" try WikiIncl
if lnk == ""
- let lnk = matchstr(vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWikiIncl),
- \ g:vimwiki_rxWikiInclMatchUrl)
+ let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiIncl')),
+ \ vimwiki#vars#get_syntaxlocal('rxWikiInclMatchUrl'))
endif
" try Weblink
if lnk == ""
- let lnk = matchstr(vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWeblink),
- \ g:vimwiki_rxWeblinkMatchUrl)
+ let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWeblink')),
+ \ vimwiki#vars#get_syntaxlocal('rxWeblinkMatchUrl'))
endif
if lnk != "" " cursor is indeed on a link
@@ -1272,7 +1129,7 @@ function! vimwiki#base#follow_link(split, reuse, move_cursor, ...) "{{{
endif
- if VimwikiGet('syntax') == 'markdown'
+ if vimwiki#vars#get_wikilocal('syntax') == 'markdown'
let processed_by_markdown_reflink = vimwiki#markdown_base#open_reflink(lnk)
if processed_by_markdown_reflink
return
@@ -1280,7 +1137,7 @@ function! vimwiki#base#follow_link(split, reuse, move_cursor, ...) "{{{
" remove the extension from the filename if exists, because non-vimwiki
" markdown files usually include the extension in links
- let lnk = substitute(lnk, '\'.VimwikiGet('ext').'$', '', '')
+ let lnk = substitute(lnk, '\'.vimwiki#vars#get_wikilocal('ext').'$', '', '')
endif
let current_tab_page = tabpagenr()
@@ -1306,11 +1163,11 @@ endfunction " }}}
" vimwiki#base#go_back_link
function! vimwiki#base#go_back_link() "{{{
- if exists("b:vimwiki_prev_link")
+ let prev_link = vimwiki#vars#get_bufferlocal('prev_link')
+ if !empty(prev_link)
" go back to saved wiki link
- let prev_word = b:vimwiki_prev_link
- execute ":e ".substitute(prev_word[0], '\s', '\\\0', 'g')
- call setpos('.', prev_word[1])
+ execute ":e ".substitute(prev_link[0], '\s', '\\\0', 'g')
+ call setpos('.', prev_link[1])
else
" maybe we came here by jumping to a tag -> pop from the tag stack
silent! pop!
@@ -1319,13 +1176,13 @@ endfunction " }}}
" vimwiki#base#goto_index
function! vimwiki#base#goto_index(wnum, ...) "{{{
- if a:wnum > len(g:vimwiki_list)
- echomsg 'Vimwiki Error: Wiki '.a:wnum.' is not registered in g:vimwiki_list!'
+ if a:wnum > vimwiki#vars#number_of_wikis()
+ echomsg 'Vimwiki Error: Wiki '.a:wnum.' is not registered in your Vimwiki settings!'
return
endif
" usually a:wnum is greater then 0 but with the following command it is == 0:
- " vim -n -c "exe 'VimwikiIndex' | echo g:vimwiki_current_idx"
+ " vim -n -c ":VimwikiIndex"
if a:wnum > 0
let idx = a:wnum - 1
else
@@ -1344,12 +1201,11 @@ function! vimwiki#base#goto_index(wnum, ...) "{{{
let cmd = 'edit'
endif
- call Validate_wiki_options(idx)
- call vimwiki#base#edit_file(cmd,
- \ VimwikiGet('path', idx).VimwikiGet('index', idx).
- \ VimwikiGet('ext', idx),
- \ '')
- call vimwiki#base#setup_buffer_state(idx)
+ let index_file = vimwiki#vars#get_wikilocal('path', idx).
+ \ vimwiki#vars#get_wikilocal('index', idx).
+ \ vimwiki#vars#get_wikilocal('ext', idx)
+
+ call vimwiki#base#edit_file(cmd, index_file, '')
endfunction "}}}
" vimwiki#base#delete_link
@@ -1380,7 +1236,7 @@ endfunction "}}}
" vimwiki#base#rename_link
" Rename current file, update all links to it
function! vimwiki#base#rename_link() "{{{
- let subdir = VimwikiGet('subdir')
+ let subdir = vimwiki#vars#get_bufferlocal('subdir')
let old_fname = subdir.expand('%:t')
" there is no file (new one maybe)
@@ -1409,13 +1265,13 @@ function! vimwiki#base#rename_link() "{{{
return
endif
- let url = matchstr(new_link, g:vimwiki_rxWikiLinkMatchUrl)
+ let url = matchstr(new_link, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'))
if url != ''
let new_link = url
endif
let new_link = subdir.new_link
- let new_fname = VimwikiGet('path').new_link.VimwikiGet('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
let fname = glob(new_fname)
@@ -1426,7 +1282,7 @@ function! vimwiki#base#rename_link() "{{{
endif
" rename wiki link file
try
- echomsg 'Vimwiki: Renaming '.VimwikiGet('path').old_fname.' to '.new_fname
+ echomsg 'Vimwiki: Renaming '.vimwiki#vars#get_wikilocal('path').old_fname.' to '.new_fname
let res = rename(expand('%:p'), expand(new_fname))
if res != 0
throw "Cannot rename!"
@@ -1439,7 +1295,7 @@ function! vimwiki#base#rename_link() "{{{
let &buftype="nofile"
let cur_buffer = [expand('%:p'),
- \getbufvar(expand('%:p'), "vimwiki_prev_link")]
+ \ vimwiki#vars#get_bufferlocal('prev_link')]
let blist = s:get_wiki_buffers()
@@ -1720,15 +1576,15 @@ endfunction "}}}
function! vimwiki#base#AddHeaderLevel() "{{{
let lnum = line('.')
let line = getline(lnum)
- let rxHdr = g:vimwiki_rxH
+ let rxHdr = vimwiki#vars#get_syntaxlocal('rxH')
if line =~# '^\s*$'
return
endif
- if line =~# g:vimwiki_rxHeader
+ if line =~# vimwiki#vars#get_syntaxlocal('rxHeader')
let level = vimwiki#u#count_first_sym(line)
if level < 6
- if g:vimwiki_symH
+ if vimwiki#vars#get_syntaxlocal('symH')
let line = substitute(line, '\('.rxHdr.'\+\).\+\1', rxHdr.'&'.rxHdr, '')
else
let line = substitute(line, '\('.rxHdr.'\+\).\+', rxHdr.'&', '')
@@ -1737,7 +1593,7 @@ function! vimwiki#base#AddHeaderLevel() "{{{
endif
else
let line = substitute(line, '^\s*', '&'.rxHdr.' ', '')
- if g:vimwiki_symH
+ if vimwiki#vars#get_syntaxlocal('symH')
let line = substitute(line, '\s*$', ' '.rxHdr.'&', '')
endif
call setline(lnum, line)
@@ -1748,19 +1604,19 @@ endfunction "}}}
function! vimwiki#base#RemoveHeaderLevel() "{{{
let lnum = line('.')
let line = getline(lnum)
- let rxHdr = g:vimwiki_rxH
+ let rxHdr = vimwiki#vars#get_syntaxlocal('rxH')
if line =~# '^\s*$'
return
endif
- if line =~# g:vimwiki_rxHeader
+ if line =~# vimwiki#vars#get_syntaxlocal('rxHeader')
let level = vimwiki#u#count_first_sym(line)
let old = repeat(rxHdr, level)
let new = repeat(rxHdr, level - 1)
let chomp = line =~# rxHdr.'\s'
- if g:vimwiki_symH
+ if vimwiki#vars#get_syntaxlocal('symH')
let line = substitute(line, old, new, 'g')
else
let line = substitute(line, old, new, '')
@@ -1782,32 +1638,33 @@ endfunction " }}}
function! vimwiki#base#table_of_contents(create)
" collect new headers
let is_inside_pre_or_math = 0 " 1: inside pre, 2: inside math, 0: outside
+ let numbering = vimwiki#vars#get_global('html_header_numbering')
let headers = []
let headers_levels = [['', 0], ['', 0], ['', 0], ['', 0], ['', 0], ['', 0]]
for lnum in range(1, line('$'))
let line_content = getline(lnum)
- if (is_inside_pre_or_math == 1 && line_content =~# g:vimwiki_rxPreEnd) ||
- \ (is_inside_pre_or_math == 2 && line_content =~# g:vimwiki_rxMathEnd)
+ if (is_inside_pre_or_math == 1 && line_content =~# vimwiki#vars#get_syntaxlocal('rxPreEnd')) ||
+ \ (is_inside_pre_or_math == 2 && line_content =~# vimwiki#vars#get_syntaxlocal('rxMathEnd'))
let is_inside_pre_or_math = 0
continue
endif
if is_inside_pre_or_math > 0
continue
endif
- if line_content =~# g:vimwiki_rxPreStart
+ if line_content =~# vimwiki#vars#get_syntaxlocal('rxPreStart')
let is_inside_pre_or_math = 1
continue
endif
- if line_content =~# g:vimwiki_rxMathStart
+ if line_content =~# vimwiki#vars#get_syntaxlocal('rxMathStart')
let is_inside_pre_or_math = 2
continue
endif
- if line_content !~# g:vimwiki_rxHeader
+ if line_content !~# vimwiki#vars#get_syntaxlocal('rxHeader')
continue
endif
let h_level = vimwiki#u#count_first_sym(line_content)
- let h_text = vimwiki#u#trim(matchstr(line_content, g:vimwiki_rxHeader))
- if h_text ==# g:vimwiki_toc_header " don't include the TOC's header itself
+ let h_text = vimwiki#u#trim(matchstr(line_content, vimwiki#vars#get_syntaxlocal('rxHeader')))
+ if h_text ==# vimwiki#vars#get_global('toc_header') " don't include the TOC's header itself
continue
endif
let headers_levels[h_level-1] = [h_text, headers_levels[h_level-1][1]+1]
@@ -1821,11 +1678,11 @@ function! vimwiki#base#table_of_contents(create)
endfor
let h_complete_id .= headers_levels[h_level-1][0]
- if g:vimwiki_html_header_numbering > 0
- \ && g:vimwiki_html_header_numbering <= h_level
+ if numbering > 0
+ \ && numbering <= h_level
let h_number = join(map(copy(headers_levels[
- \ g:vimwiki_html_header_numbering-1 : h_level-1]), 'v:val[1]'), '.')
- let h_number .= g:vimwiki_html_header_numbering_sym
+ \ numbering-1 : h_level-1]), 'v:val[1]'), '.')
+ let h_number .= vimwiki#vars#get_global('html_header_numbering_sym')
let h_text = h_number.' '.h_text
endif
@@ -1839,7 +1696,7 @@ function! vimwiki#base#table_of_contents(create)
for [lvl, link, desc] in headers
let esc_link = substitute(link, "'", "''", 'g')
let esc_desc = substitute(desc, "'", "''", 'g')
- let link = s:safesubstitute(g:vimwiki_WikiLinkTemplate2, '__LinkUrl__',
+ let link = s:safesubstitute(vimwiki#vars#get_global('WikiLinkTemplate2'), '__LinkUrl__',
\ '#'.esc_link, '')
let link = s:safesubstitute(link, '__LinkDescription__', esc_desc, '')
call add(lines, startindent.repeat(indentstring, lvl-1).bullet.link)
@@ -1847,7 +1704,7 @@ function! vimwiki#base#table_of_contents(create)
let links_rx = '\m^\s*'.vimwiki#u#escape(vimwiki#lst#default_symbol()).' '
- call vimwiki#base#update_listing_in_buffer(lines, g:vimwiki_toc_header, links_rx,
+ call vimwiki#base#update_listing_in_buffer(lines, vimwiki#vars#get_global('toc_header'), links_rx,
\ 1, a:create)
endfunction
"}}}
@@ -1892,8 +1749,8 @@ endfunction " }}}
" s:is_diary_file
function! s:is_diary_file(filename) " {{{
let file_path = vimwiki#path#path_norm(a:filename)
- let rel_path = VimwikiGet('diary_rel_path')
- let diary_path = vimwiki#path#path_norm(VimwikiGet('path') . rel_path)
+ let rel_path = vimwiki#vars#get_wikilocal('diary_rel_path')
+ let diary_path = vimwiki#path#path_norm(vimwiki#vars#get_wikilocal('path') . rel_path)
return rel_path != ''
\ && file_path =~# '^'.vimwiki#u#escape(diary_path)
endfunction " }}}
@@ -1922,25 +1779,25 @@ endfunction " }}}
" s:normalize_link_in_diary
function! s:normalize_link_in_diary(lnk) " {{{
- let link = a:lnk . VimwikiGet('ext')
- let link_wiki = VimwikiGet('path') . '/' . link
- let link_diary = VimwikiGet('path') . '/'
- \ . VimwikiGet('diary_rel_path') . '/' . link
+ let link = a:lnk . vimwiki#vars#get_wikilocal('ext')
+ let link_wiki = vimwiki#vars#get_wikilocal('path') . '/' . link
+ let link_diary = vimwiki#vars#get_wikilocal('path') . '/'
+ \ . vimwiki#vars#get_wikilocal('diary_rel_path') . '/' . link
let link_exists_in_diary = filereadable(link_diary)
let link_exists_in_wiki = filereadable(link_wiki)
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
let str = a:lnk
- let rxUrl = g:vimwiki_rxWord
+ let rxUrl = vimwiki#vars#get_global('rxWord')
let rxDesc = ''
- let template = g:vimwiki_WikiLinkTemplate1
+ let template = vimwiki#vars#get_global('WikiLinkTemplate1')
else
- let depth = len(split(VimwikiGet('diary_rel_path'), '/'))
+ let depth = len(split(vimwiki#vars#get_wikilocal('diary_rel_path'), '/'))
let str = repeat('../', depth) . a:lnk . '|' . a:lnk
let rxUrl = '^.*\ze|'
let rxDesc = '|\zs.*$'
- let template = g:vimwiki_WikiLinkTemplate2
+ let template = vimwiki#vars#get_global('WikiLinkTemplate2')
endif
return vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template)
@@ -1950,42 +1807,42 @@ endfunction " }}}
function! s:normalize_link_syntax_n() " {{{
" try WikiLink
- let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWikiLink)
+ let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink'))
if !empty(lnk)
let sub = vimwiki#base#normalize_link_helper(lnk,
- \ g:vimwiki_rxWikiLinkMatchUrl, g:vimwiki_rxWikiLinkMatchDescr,
- \ g:vimwiki_WikiLinkTemplate2)
- call vimwiki#base#replacestr_at_cursor(g:vimwiki_rxWikiLink, sub)
+ \ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'), vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'),
+ \ vimwiki#vars#get_global('WikiLinkTemplate2'))
+ call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink'), sub)
return
endif
" try WikiIncl
- let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWikiIncl)
+ let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWikiIncl'))
if !empty(lnk)
" NO-OP !!
return
endif
" try Weblink
- let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWeblink)
+ let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWeblink'))
if !empty(lnk)
let sub = vimwiki#base#normalize_link_helper(lnk,
- \ lnk, '', g:vimwiki_WikiLinkTemplate2)
- call vimwiki#base#replacestr_at_cursor(g:vimwiki_rxWeblink, sub)
+ \ lnk, '', vimwiki#vars#get_global('WikiLinkTemplate2'))
+ call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWeblink'), sub)
return
endif
" try Word (any characters except separators)
" rxWord is less permissive than rxWikiLinkUrl which is used in
" normalize_link_syntax_v
- let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWord)
+ let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWord'))
if !empty(lnk)
if s:is_diary_file(expand("%:p"))
let sub = s:normalize_link_in_diary(lnk)
else
let sub = vimwiki#base#normalize_link_helper(lnk,
- \ g:vimwiki_rxWord, '',
- \ g:vimwiki_WikiLinkTemplate1)
+ \ vimwiki#vars#get_global('rxWord'), '',
+ \ vimwiki#vars#get_global('WikiLinkTemplate1'))
endif
call vimwiki#base#replacestr_at_cursor('\V'.lnk, sub)
return
@@ -2008,7 +1865,7 @@ function! s:normalize_link_syntax_v() " {{{
if s:is_diary_file(expand("%:p"))
let sub = s:normalize_link_in_diary(@")
else
- let sub = s:safesubstitute(g:vimwiki_WikiLinkTemplate1,
+ let sub = s:safesubstitute(vimwiki#vars#get_global('WikiLinkTemplate1'),
\ '__LinkUrl__', @", '')
endif
@@ -2023,9 +1880,9 @@ endfunction " }}}
" vimwiki#base#normalize_link
function! vimwiki#base#normalize_link(is_visual_mode) "{{{
- if exists('*vimwiki#'.VimwikiGet('syntax').'_base#normalize_link')
+ if exists('*vimwiki#'.vimwiki#vars#get_wikilocal('syntax').'_base#normalize_link')
" Syntax-specific links
- call vimwiki#{VimwikiGet('syntax')}_base#normalize_link(a:is_visual_mode)
+ call vimwiki#{vimwiki#vars#get_wikilocal('syntax')}_base#normalize_link(a:is_visual_mode)
else
if !a:is_visual_mode
call s:normalize_link_syntax_n()
diff --git a/autoload/vimwiki/diary.vim b/autoload/vimwiki/diary.vim
index 109ae07..e02e94b 100644
--- a/autoload/vimwiki/diary.vim
+++ b/autoload/vimwiki/diary.vim
@@ -20,23 +20,22 @@ function! s:prefix_zero(num) "{{{
return a:num
endfunction "}}}
-function! s:get_date_link(fmt) "{{{
- return strftime(a:fmt)
-endfunction "}}}
-
function! s:diary_path(...) "{{{
- let idx = a:0 == 0 ? g:vimwiki_current_idx : a:1
- return VimwikiGet('path', idx).VimwikiGet('diary_rel_path', idx)
+ let idx = a:0 == 0 ? vimwiki#vars#get_bufferlocal('wiki_nr') : a:1
+ return vimwiki#vars#get_wikilocal('path', idx).vimwiki#vars#get_wikilocal('diary_rel_path', idx)
endfunction "}}}
function! s:diary_index(...) "{{{
- let idx = a:0 == 0 ? g:vimwiki_current_idx : a:1
- return s:diary_path(idx).VimwikiGet('diary_index', idx).VimwikiGet('ext', idx)
+ let idx = a:0 == 0 ? vimwiki#vars#get_bufferlocal('wiki_nr') : a:1
+ return s:diary_path(idx).vimwiki#vars#get_wikilocal('diary_index', idx).vimwiki#vars#get_wikilocal('ext', idx)
endfunction "}}}
-function! s:diary_date_link(...) "{{{
- let idx = a:0 == 0 ? g:vimwiki_current_idx : a:1
- return s:get_date_link(VimwikiGet('diary_link_fmt', idx))
+function! vimwiki#diary#diary_date_link(...) "{{{
+ if a:0
+ return strftime('%Y-%m-%d', a:1)
+ else
+ return strftime('%Y-%m-%d')
+ endif
endfunction "}}}
function! s:get_position_links(link) "{{{
@@ -45,8 +44,8 @@ function! s:get_position_links(link) "{{{
if a:link =~# '^\d\{4}-\d\d-\d\d'
let links = map(s:get_diary_files(), 'fnamemodify(v:val, ":t:r")')
" include 'today' into links
- if index(links, s:diary_date_link()) == -1
- call add(links, s:diary_date_link())
+ if index(links, vimwiki#diary#diary_date_link()) == -1
+ call add(links, vimwiki#diary#diary_date_link())
endif
call sort(links)
let idx = index(links, a:link)
@@ -55,7 +54,7 @@ function! s:get_position_links(link) "{{{
endfunction "}}}
fun! s:get_month_name(month) "{{{
- return g:vimwiki_diary_months[str2nr(a:month)]
+ return vimwiki#vars#get_global('diary_months')[str2nr(a:month)]
endfun "}}}
" Helpers }}}
@@ -63,14 +62,15 @@ endfun "}}}
" Diary index stuff {{{
fun! s:read_captions(files) "{{{
let result = {}
+ let rx_header = vimwiki#vars#get_syntaxlocal('rxHeader')
for fl in a:files
" remove paths and extensions
- let fl_key = substitute(fnamemodify(fl, ':t'), VimwikiGet('ext').'$', '', '')
+ let fl_key = substitute(fnamemodify(fl, ':t'), vimwiki#vars#get_wikilocal('ext').'$', '', '')
if filereadable(fl)
for line in readfile(fl, '', s:vimwiki_max_scan_for_caption)
- if line =~# g:vimwiki_rxHeader && !has_key(result, fl_key)
- let result[fl_key] = vimwiki#u#trim(matchstr(line, g:vimwiki_rxHeader))
+ if line =~# rx_header && !has_key(result, fl_key)
+ let result[fl_key] = vimwiki#u#trim(matchstr(line, rx_header))
endif
endfor
endif
@@ -85,7 +85,7 @@ endfun "}}}
fun! s:get_diary_files() "{{{
let rx = '^\d\{4}-\d\d-\d\d'
- let s_files = glob(VimwikiGet('path').VimwikiGet('diary_rel_path').'*'.VimwikiGet('ext'))
+ let s_files = glob(vimwiki#vars#get_wikilocal('path').vimwiki#vars#get_wikilocal('diary_rel_path').'*'.vimwiki#vars#get_wikilocal('ext'))
let files = split(s_files, '\n')
call filter(files, 'fnamemodify(v:val, ":t") =~# "'.escape(rx, '\').'"')
@@ -117,7 +117,7 @@ fun! s:group_links(links) "{{{
endfun "}}}
function! s:sort(lst) "{{{
- if VimwikiGet("diary_sort") ==? 'desc'
+ if vimwiki#vars#get_wikilocal('diary_sort') ==? 'desc'
return reverse(sort(a:lst))
else
return sort(a:lst)
@@ -133,19 +133,19 @@ function! s:format_diary() "{{{
for year in s:sort(keys(g_files))
call add(result, '')
- call add(result, substitute(g:vimwiki_rxH2_Template, '__Header__', year , ''))
+ call add(result, substitute(vimwiki#vars#get_syntaxlocal('rxH2_Template'), '__Header__', year , ''))
for month in s:sort(keys(g_files[year]))
call add(result, '')
- call add(result, substitute(g:vimwiki_rxH3_Template, '__Header__', s:get_month_name(month), ''))
+ call add(result, substitute(vimwiki#vars#get_syntaxlocal('rxH3_Template'), '__Header__', s:get_month_name(month), ''))
for [fl, cap] in s:sort(items(g_files[year][month]))
if empty(cap)
- let entry = substitute(g:vimwiki_WikiLinkTemplate1, '__LinkUrl__', fl, '')
+ let entry = substitute(vimwiki#vars#get_global('WikiLinkTemplate1'), '__LinkUrl__', fl, '')
let entry = substitute(entry, '__LinkDescription__', cap, '')
call add(result, repeat(' ', &sw).'* '.entry)
else
- let entry = substitute(g:vimwiki_WikiLinkTemplate2, '__LinkUrl__', fl, '')
+ let entry = substitute(vimwiki#vars#get_global('WikiLinkTemplate2'), '__LinkUrl__', fl, '')
let entry = substitute(entry, '__LinkDescription__', cap, '')
call add(result, repeat(' ', &sw).'* '.entry)
endif
@@ -160,7 +160,7 @@ endfunction "}}}
" Diary index stuff }}}
function! vimwiki#diary#make_note(wnum, ...) "{{{
- if a:wnum > len(g:vimwiki_list)
+ if a:wnum > vimwiki#vars#number_of_wikis()
echomsg 'Vimwiki Error: Wiki '.a:wnum.' is not registered in g:vimwiki_list!'
return
endif
@@ -172,7 +172,7 @@ function! vimwiki#diary#make_note(wnum, ...) "{{{
let idx = 0
endif
- call vimwiki#path#mkdir(VimwikiGet('path', idx).VimwikiGet('diary_rel_path', idx))
+ call vimwiki#path#mkdir(vimwiki#vars#get_wikilocal('path', idx).vimwiki#vars#get_wikilocal('diary_rel_path', idx))
let cmd = 'edit'
if a:0
@@ -187,15 +187,14 @@ function! vimwiki#diary#make_note(wnum, ...) "{{{
if a:0>1
let link = 'diary:'.a:2
else
- let link = 'diary:'.s:diary_date_link(idx)
+ let link = 'diary:'.vimwiki#diary#diary_date_link()
endif
call vimwiki#base#open_link(cmd, link, s:diary_index(idx))
- call vimwiki#base#setup_buffer_state(idx)
endfunction "}}}
function! vimwiki#diary#goto_diary_index(wnum) "{{{
- if a:wnum > len(g:vimwiki_list)
+ if a:wnum > vimwiki#vars#number_of_wikis()
echomsg 'Vimwiki Error: Wiki '.a:wnum.' is not registered in g:vimwiki_list!'
return
endif
@@ -208,7 +207,6 @@ function! vimwiki#diary#goto_diary_index(wnum) "{{{
endif
call vimwiki#base#edit_file('e', s:diary_index(idx), '')
- call vimwiki#base#setup_buffer_state(idx)
endfunction "}}}
function! vimwiki#diary#goto_next_day() "{{{
@@ -223,7 +221,7 @@ function! vimwiki#diary#goto_next_day() "{{{
let link = 'diary:'.links[idx+1]
else
" goto today
- let link = 'diary:'.s:diary_date_link()
+ let link = 'diary:'.vimwiki#diary#diary_date_link()
endif
if len(link)
@@ -243,7 +241,7 @@ function! vimwiki#diary#goto_prev_day() "{{{
let link = 'diary:'.links[idx-1]
else
" goto today
- let link = 'diary:'.s:diary_date_link()
+ let link = 'diary:'.vimwiki#diary#diary_date_link()
endif
if len(link)
@@ -255,9 +253,9 @@ function! vimwiki#diary#generate_diary_section() "{{{
let current_file = vimwiki#path#path_norm(expand("%:p"))
let diary_file = vimwiki#path#path_norm(s:diary_index())
if vimwiki#path#is_equal(current_file, diary_file)
- let content_rx = '^\%(\s*\* \)\|\%(^\s*$\)\|\%('.g:vimwiki_rxHeader.'\)'
+ let content_rx = '^\%(\s*\* \)\|\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxHeader').'\)'
call vimwiki#base#update_listing_in_buffer(s:format_diary(),
- \ VimwikiGet('diary_header'), content_rx, line('$')+1, 1)
+ \ vimwiki#vars#get_wikilocal('diary_header'), content_rx, line('$')+1, 1)
else
echomsg 'Vimwiki Error: You can generate diary links only in a diary index page!'
endif
@@ -284,15 +282,15 @@ function! vimwiki#diary#calendar_action(day, month, year, week, dir) "{{{
endif
" XXX: Well, +1 is for inconsistent index basing...
- call vimwiki#diary#make_note(g:vimwiki_current_idx+1, 0, link)
+ call vimwiki#diary#make_note(vimwiki#vars#get_bufferlocal('wiki_nr')+1, 0, link)
endfunction "}}}
" Sign function.
function vimwiki#diary#calendar_sign(day, month, year) "{{{
let day = s:prefix_zero(a:day)
let month = s:prefix_zero(a:month)
- let sfile = VimwikiGet('path').VimwikiGet('diary_rel_path').
- \ a:year.'-'.month.'-'.day.VimwikiGet('ext')
+ let sfile = vimwiki#vars#get_wikilocal('path').vimwiki#vars#get_wikilocal('diary_rel_path').
+ \ a:year.'-'.month.'-'.day.vimwiki#vars#get_wikilocal('ext')
return filereadable(expand(sfile))
endfunction "}}}
diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim
index 88f186b..6f5e803 100644
--- a/autoload/vimwiki/html.vim
+++ b/autoload/vimwiki/html.vim
@@ -26,7 +26,7 @@ function! s:root_path(subdir) "{{{
endfunction "}}}
function! s:syntax_supported() " {{{
- return VimwikiGet('syntax') ==? "default"
+ return vimwiki#vars#get_wikilocal('syntax') ==? "default"
endfunction " }}}
function! s:remove_blank_lines(lines) " {{{
@@ -68,7 +68,7 @@ endfunction " }}}
function! s:default_CSS_full_name(path) " {{{
let path = expand(a:path)
- let css_full_name = path.VimwikiGet('css_name')
+ let css_full_name = path . vimwiki#vars#get_wikilocal('css_name')
return css_full_name
endfunction "}}}
@@ -88,13 +88,13 @@ endfunction "}}}
function! s:template_full_name(name) "{{{
if a:name == ''
- let name = VimwikiGet('template_default')
+ let name = vimwiki#vars#get_wikilocal('template_default')
else
let name = a:name
endif
- let fname = expand(VimwikiGet('template_path').
- \ name.VimwikiGet('template_ext'))
+ let fname = expand(vimwiki#vars#get_wikilocal('template_path').
+ \ name . vimwiki#vars#get_wikilocal('template_ext'))
if filereadable(fname)
return fname
@@ -157,14 +157,14 @@ function! s:delete_html_files(path) "{{{
let htmlfiles = split(glob(a:path.'**/*.html'), '\n')
for fname in htmlfiles
" ignore user html files, e.g. search.html,404.html
- if stridx(g:vimwiki_user_htmls, fnamemodify(fname, ":t")) >= 0
+ if stridx(vimwiki#vars#get_global('user_htmls'), fnamemodify(fname, ":t")) >= 0
continue
endif
" delete if there is no corresponding wiki file
- let subdir = vimwiki#base#subdir(VimwikiGet('path_html'), fname)
- let wikifile = VimwikiGet('path').subdir.
- \fnamemodify(fname, ":t:r").VimwikiGet('ext')
+ let subdir = vimwiki#base#subdir(vimwiki#vars#get_wikilocal('path_html'), fname)
+ let wikifile = vimwiki#vars#get_wikilocal('path').subdir.
+ \fnamemodify(fname, ":t:r").vimwiki#vars#get_wikilocal('ext')
if filereadable(wikifile)
continue
endif
@@ -244,7 +244,7 @@ function! s:is_html_uptodate(wikifile) "{{{
endif
let wikifile = fnamemodify(a:wikifile, ":p")
- let htmlfile = expand(VimwikiGet('path_html').VimwikiGet('subdir').
+ let htmlfile = expand(vimwiki#vars#get_wikilocal('path_html') . vimwiki#vars#get_bufferlocal('subdir') .
\fnamemodify(wikifile, ":t:r").".html")
if getftime(wikifile) <= getftime(htmlfile) && tpl_time <= getftime(htmlfile)
@@ -358,12 +358,12 @@ endfunction "}}}
" match n-th ARG within {{URL[|ARG1|ARG2|...]}} " {{{
" *c,d,e),...
function! vimwiki#html#incl_match_arg(nn_index)
- let rx = g:vimwiki_rxWikiInclPrefix. g:vimwiki_rxWikiInclUrl
- let rx = rx. repeat(g:vimwiki_rxWikiInclSeparator. g:vimwiki_rxWikiInclArg, a:nn_index-1)
+ let rx = vimwiki#vars#get_global('rxWikiInclPrefix'). vimwiki#vars#get_global('rxWikiInclUrl')
+ let rx = rx. repeat(vimwiki#vars#get_global('rxWikiInclSeparator'). vimwiki#vars#get_global('rxWikiInclArg'), a:nn_index-1)
if a:nn_index > 0
- let rx = rx. g:vimwiki_rxWikiInclSeparator. '\zs'. g:vimwiki_rxWikiInclArg. '\ze'
+ let rx = rx. vimwiki#vars#get_global('rxWikiInclSeparator'). '\zs'. vimwiki#vars#get_global('rxWikiInclArg'). '\ze'
endif
- let rx = rx. g:vimwiki_rxWikiInclArgs. g:vimwiki_rxWikiInclSuffix
+ let rx = rx. vimwiki#vars#get_global('rxWikiInclArgs'). vimwiki#vars#get_global('rxWikiInclSuffix')
return rx
endfunction
"}}}
@@ -372,7 +372,7 @@ function! vimwiki#html#linkify_link(src, descr) "{{{
let src_str = ' href="'.s:safe_html_anchor(a:src).'"'
let descr = substitute(a:descr,'^\s*\(.*\)\s*$','\1','')
let descr = (descr == "" ? a:src : descr)
- let descr_str = (descr =~# g:vimwiki_rxWikiIncl
+ let descr_str = (descr =~# vimwiki#vars#get_global('rxWikiIncl')
\ ? s:tag_wikiincl(descr)
\ : descr)
return ''.descr_str.''
@@ -388,8 +388,8 @@ endfunction "}}}
function! s:tag_weblink(value) "{{{
" Weblink Template -> descr
let str = a:value
- let url = matchstr(str, g:vimwiki_rxWeblinkMatchUrl)
- let descr = matchstr(str, g:vimwiki_rxWeblinkMatchDescr)
+ let url = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWeblinkMatchUrl'))
+ let descr = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWeblinkMatchDescr'))
let line = vimwiki#html#linkify_link(url, descr)
return line
endfunction "}}}
@@ -404,7 +404,7 @@ function! s:tag_wikiincl(value) "{{{
let line = VimwikiWikiIncludeHandler(str)
" otherwise, assume image transclusion
if line == ''
- let url_0 = matchstr(str, g:vimwiki_rxWikiInclMatchUrl)
+ let url_0 = matchstr(str, vimwiki#vars#get_global('rxWikiInclMatchUrl'))
let descr = matchstr(str, vimwiki#html#incl_match_arg(1))
let verbatim_str = matchstr(str, vimwiki#html#incl_match_arg(2))
@@ -437,8 +437,8 @@ function! s:tag_wikilink(value) "{{{
" [[url#a1#a2]] -> url#a1#a2
" [[#a1#a2]] -> #a1#a2
let str = a:value
- let url = matchstr(str, g:vimwiki_rxWikiLinkMatchUrl)
- let descr = matchstr(str, g:vimwiki_rxWikiLinkMatchDescr)
+ let url = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'))
+ let descr = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'))
let descr = (substitute(descr,'^\s*\(.*\)\s*$','\1','') != '' ? descr : url)
let line = VimwikiLinkConverter(url, s:current_wiki_file,
@@ -527,16 +527,16 @@ function! s:make_tag(line, regexp, func, ...) "{{{
" Exclude preformatted text and href links.
" FIXME
let patt_splitter = '\(`[^`]\+`\)\|'.
- \ '\('.g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd.'\)\|'.
+ \ '\('.vimwiki#vars#get_syntaxlocal('rxPreStart').'.\+'.vimwiki#vars#get_syntaxlocal('rxPreEnd').'\)\|'.
\ '\(\)\|'.
\ '\(\)\|'.
\ '\(\)\|'.
- \ '\('.g:vimwiki_rxEqIn.'\)'
+ \ '\('.vimwiki#vars#get_syntaxlocal('rxEqIn').'\)'
"FIXME FIXME !!! these can easily occur on the same line!
"XXX {{{ }}} ??? obsolete
if '`[^`]\+`' ==# a:regexp || '{{{.\+}}}' ==# a:regexp ||
- \ g:vimwiki_rxEqIn ==# a:regexp
+ \ vimwiki#vars#get_syntaxlocal('rxEqIn') ==# a:regexp
let res_line = s:subst_func(a:line, a:regexp, a:func)
else
let pos = 0
@@ -570,23 +570,23 @@ endfunction " }}}
function! s:process_tags_typefaces(line, header_ids) "{{{
let line = a:line
- let line = s:make_tag(line, g:vimwiki_rxItalic, 's:tag_em')
- let line = s:make_tag(line, g:vimwiki_rxBold, 's:tag_strong', a:header_ids)
- let line = s:make_tag(line, g:vimwiki_rxTodo, 's:tag_todo')
- let line = s:make_tag(line, g:vimwiki_rxDelText, 's:tag_strike')
- let line = s:make_tag(line, g:vimwiki_rxSuperScript, 's:tag_super')
- let line = s:make_tag(line, g:vimwiki_rxSubScript, 's:tag_sub')
- let line = s:make_tag(line, g:vimwiki_rxCode, 's:tag_code')
- let line = s:make_tag(line, g:vimwiki_rxEqIn, 's:tag_eqin')
- let line = s:make_tag(line, g:vimwiki_rxTags, 's:tag_tags', a:header_ids)
+ let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxItalic'), 's:tag_em')
+ let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxBold'), 's:tag_strong', a:header_ids)
+ let line = s:make_tag(line, vimwiki#vars#get_global('rxTodo'), 's:tag_todo')
+ let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxDelText'), 's:tag_strike')
+ let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxSuperScript'), 's:tag_super')
+ let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxSubScript'), 's:tag_sub')
+ let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxCode'), 's:tag_code')
+ let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxEqIn'), 's:tag_eqin')
+ let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxTags'), 's:tag_tags', a:header_ids)
return line
endfunction " }}}
function! s:process_tags_links(line) " {{{
let line = a:line
- let line = s:make_tag(line, g:vimwiki_rxWikiLink, 's:tag_wikilink')
- let line = s:make_tag(line, g:vimwiki_rxWikiIncl, 's:tag_wikiincl')
- let line = s:make_tag(line, g:vimwiki_rxWeblink, 's:tag_weblink')
+ let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxWikiLink'), 's:tag_wikilink')
+ let line = s:make_tag(line, vimwiki#vars#get_global('rxWikiIncl'), 's:tag_wikiincl')
+ let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxWeblink'), 's:tag_weblink')
return line
endfunction " }}}
@@ -872,11 +872,11 @@ function! s:process_tag_list(line, lists) "{{{
let st_tag = ''
let chk = matchlist(a:line, a:rx_list)
if !empty(chk) && len(chk[1]) > 0
- let completion = index(g:vimwiki_listsyms_list, chk[1])
- let n = len(g:vimwiki_listsyms_list)
+ let completion = index(vimwiki#vars#get_syntaxlocal('listsyms_list'), chk[1])
+ let n = len(vimwiki#vars#get_syntaxlocal('listsyms_list'))
if completion == 0
let st_tag = ''
- elseif completion == -1 && chk[1] == g:vimwiki_listsym_rejected
+ elseif completion == -1 && chk[1] == vimwiki#vars#get_global('listsym_rejected')
let st_tag = ''
elseif completion > 0 && completion < n
let completion = float2nr(round(completion / (n-1.0) * 3.0 + 0.5 ))
@@ -892,7 +892,7 @@ function! s:process_tag_list(line, lists) "{{{
" text.
" XXX necessary? in *bold* text, no space must follow the first *
if !in_list
- let pos = match(a:line, '^\s*'.g:vimwiki_rxBold)
+ let pos = match(a:line, '^\s*'.vimwiki#vars#get_syntaxlocal('rxBold'))
if pos != -1
return [0, []]
endif
@@ -952,7 +952,7 @@ function! s:process_tag_list(line, lists) "{{{
\ substitute(a:line, lstRegExp.'\%('.checkbox.'\)\?', '', ''))
let processed = 1
elseif in_list && a:line =~# '^\s\+\S\+'
- if g:vimwiki_list_ignore_newline
+ if vimwiki#vars#get_global('list_ignore_newline')
call add(lines, a:line)
else
call add(lines, '
'.a:line)
@@ -998,7 +998,7 @@ function! s:process_tag_para(line, para) "{{{
let para = 1
endif
let processed = 1
- if g:vimwiki_text_ignore_newline == 1
+ if vimwiki#vars#get_global('text_ignore_newline')
call add(lines, a:line)
else
call add(lines, a:line."
")
@@ -1017,18 +1017,18 @@ function! s:process_tag_h(line, id) "{{{
let h_text = ''
let h_id = ''
- if a:line =~# g:vimwiki_rxHeader
+ if a:line =~# vimwiki#vars#get_syntaxlocal('rxHeader')
let h_level = vimwiki#u#count_first_sym(a:line)
endif
if h_level > 0
- let h_text = vimwiki#u#trim(matchstr(line, g:vimwiki_rxHeader))
+ let h_text = vimwiki#u#trim(matchstr(line, vimwiki#vars#get_syntaxlocal('rxHeader')))
let h_number = ''
let h_complete_id = ''
let h_id = s:safe_html_anchor(h_text)
let centered = (a:line =~# '^\s')
- if h_text !=# g:vimwiki_toc_header
+ if h_text !=# vimwiki#vars#get_global('toc_header')
let a:id[h_level-1] = [h_text, a:id[h_level-1][1]+1]
@@ -1046,11 +1046,11 @@ function! s:process_tag_h(line, id) "{{{
let h_number .= a:id[h_level-1][1]
let h_complete_id .= a:id[h_level-1][0]
- if g:vimwiki_html_header_numbering
+ if vimwiki#vars#get_global('html_header_numbering')
let num = matchstr(h_number,
- \ '^\(\d.\)\{'.(g:vimwiki_html_header_numbering-1).'}\zs.*')
+ \ '^\(\d.\)\{'.(vimwiki#vars#get_global('html_header_numbering')-1).'}\zs.*')
if !empty(num)
- let num .= g:vimwiki_html_header_numbering_sym
+ let num .= vimwiki#vars#get_global('html_header_numbering_sym')
endif
let h_text = num.' '.h_text
endif
@@ -1198,7 +1198,7 @@ function! s:parse_line(line, state) " {{{
"}}}
if !processed
- if line =~# g:vimwiki_rxComment
+ if line =~# vimwiki#vars#get_syntaxlocal('rxComment')
let processed = 1
endif
endif
@@ -1380,24 +1380,24 @@ function! s:parse_line(line, state) " {{{
endfunction " }}}
function! s:use_custom_wiki2html() "{{{
- let custom_wiki2html = VimwikiGet('custom_wiki2html')
+ let custom_wiki2html = vimwiki#vars#get_wikilocal('custom_wiki2html')
return !empty(custom_wiki2html) && (s:file_exists(custom_wiki2html) || s:binary_exists(custom_wiki2html))
endfunction " }}}
function! vimwiki#html#CustomWiki2HTML(path, wikifile, force) "{{{
call vimwiki#path#mkdir(a:path)
- echomsg system(VimwikiGet('custom_wiki2html'). ' '.
+ echomsg system(vimwiki#vars#get_wikilocal('custom_wiki2html'). ' '.
\ a:force. ' '.
- \ VimwikiGet('syntax'). ' '.
- \ strpart(VimwikiGet('ext'), 1). ' '.
+ \ vimwiki#vars#get_wikilocal('syntax'). ' '.
+ \ strpart(vimwiki#vars#get_wikilocal('ext'), 1). ' '.
\ shellescape(a:path). ' '.
\ shellescape(a:wikifile). ' '.
\ shellescape(s:default_CSS_full_name(a:path)). ' '.
- \ (len(VimwikiGet('template_path')) > 1 ? shellescape(expand(VimwikiGet('template_path'))) : '-'). ' '.
- \ (len(VimwikiGet('template_default')) > 0 ? VimwikiGet('template_default') : '-'). ' '.
- \ (len(VimwikiGet('template_ext')) > 0 ? VimwikiGet('template_ext') : '-'). ' '.
- \ (len(VimwikiGet('subdir')) > 0 ? shellescape(s:root_path(VimwikiGet('subdir'))) : '-'). ' '.
- \ (len(VimwikiGet('custom_wiki2html_args')) > 0 ? VimwikiGet('custom_wiki2html_args') : '-'))
+ \ (len(vimwiki#vars#get_wikilocal('template_path')) > 1 ? shellescape(expand(vimwiki#vars#get_wikilocal('template_path'))) : '-'). ' '.
+ \ (len(vimwiki#vars#get_wikilocal('template_default')) > 0 ? vimwiki#vars#get_wikilocal('template_default') : '-'). ' '.
+ \ (len(vimwiki#vars#get_wikilocal('template_ext')) > 0 ? vimwiki#vars#get_wikilocal('template_ext') : '-'). ' '.
+ \ (len(vimwiki#vars#get_bufferlocal('subdir')) > 0 ? shellescape(s:root_path(vimwiki#vars#get_bufferlocal('subdir'))) : '-'). ' '.
+ \ (len(vimwiki#vars#get_global('custom_wiki2html_args')) > 0 ? vimwiki#vars#get_global('custom_wiki2html_args') : '-'))
endfunction " }}}
function! s:convert_file(path_html, wikifile) "{{{
@@ -1405,7 +1405,7 @@ function! s:convert_file(path_html, wikifile) "{{{
let wikifile = fnamemodify(a:wikifile, ":p")
- let path_html = expand(a:path_html).VimwikiGet('subdir')
+ let path_html = expand(a:path_html).vimwiki#vars#get_bufferlocal('subdir')
let htmlfile = fnamemodify(wikifile, ":t:r").'.html'
" the currently processed file name is needed when processing links
@@ -1450,8 +1450,8 @@ function! s:convert_file(path_html, wikifile) "{{{
" prepare constants for s:safe_html_line()
let s:lt_pattern = '<'
let s:gt_pattern = '>'
- if g:vimwiki_valid_html_tags != ''
- let tags = join(split(g:vimwiki_valid_html_tags, '\s*,\s*'), '\|')
+ if vimwiki#vars#get_global('valid_html_tags') != ''
+ let tags = join(split(vimwiki#vars#get_global('valid_html_tags'), '\s*,\s*'), '\|')
let s:lt_pattern = '\c<\%(/\?\%('.tags.'\)\%(\s\{-1}\S\{-}\)\{-}/\?>\)\@!'
let s:gt_pattern = '\c\%(\?\%('.tags.'\)\%(\s\{-1}\S\{-}\)\{-}/\?\)\@'
endif
@@ -1516,9 +1516,9 @@ function! s:convert_file(path_html, wikifile) "{{{
call map(html_lines, 'substitute(v:val, "%title%", "'. title .'", "g")')
call map(html_lines, 'substitute(v:val, "%date%", "'. date .'", "g")')
call map(html_lines, 'substitute(v:val, "%root_path%", "'.
- \ s:root_path(VimwikiGet('subdir')) .'", "g")')
+ \ s:root_path(vimwiki#vars#get_bufferlocal('subdir')) .'", "g")')
- let css_name = expand(VimwikiGet('css_name'))
+ let css_name = expand(vimwiki#vars#get_wikilocal('css_name'))
let css_name = substitute(css_name, '\', '/', 'g')
call map(html_lines, 'substitute(v:val, "%css%", "'. css_name .'", "g")')
@@ -1576,17 +1576,17 @@ function! vimwiki#html#WikiAll2HTML(path_html) "{{{
setlocal nomore
" temporarily adjust current_subdir global state variable
- let current_subdir = VimwikiGet('subdir')
- let current_invsubdir = VimwikiGet('invsubdir')
+ let current_subdir = vimwiki#vars#get_bufferlocal('subdir')
+ let current_invsubdir = vimwiki#vars#get_bufferlocal('invsubdir')
- let wikifiles = split(glob(VimwikiGet('path').'**/*'.VimwikiGet('ext')), '\n')
+ let wikifiles = split(glob(vimwiki#vars#get_wikilocal('path').'**/*'.vimwiki#vars#get_wikilocal('ext')), '\n')
for wikifile in wikifiles
let wikifile = fnamemodify(wikifile, ":p")
" temporarily adjust 'subdir' and 'invsubdir' state variables
- let subdir = vimwiki#base#subdir(VimwikiGet('path'), wikifile)
- call VimwikiSet('subdir', subdir)
- call VimwikiSet('invsubdir', vimwiki#base#invsubdir(subdir))
+ let subdir = vimwiki#base#subdir(vimwiki#vars#get_wikilocal('path'), wikifile)
+ call vimwiki#vars#set_bufferlocal('subdir', subdir)
+ call vimwiki#vars#set_bufferlocal('invsubdir', vimwiki#base#invsubdir(subdir))
if !s:is_html_uptodate(wikifile)
echomsg 'Vimwiki: Processing '.wikifile
@@ -1597,8 +1597,8 @@ function! vimwiki#html#WikiAll2HTML(path_html) "{{{
endif
endfor
" reset 'subdir' state variable
- call VimwikiSet('subdir', current_subdir)
- call VimwikiSet('invsubdir', current_invsubdir)
+ call vimwiki#vars#set_bufferlocal('subdir', current_subdir)
+ call vimwiki#vars#set_bufferlocal('invsubdir', current_invsubdir)
let created = s:create_default_CSS(path_html)
if created
@@ -1618,10 +1618,9 @@ function! s:binary_exists(fname) "{{{
return executable(expand(a:fname))
endfunction "}}}
-" uses VimwikiGet('path')
function! s:get_wikifile_url(wikifile) "{{{
- return VimwikiGet('path_html').
- \ vimwiki#base#subdir(VimwikiGet('path'), a:wikifile).
+ return vimwiki#vars#get_wikilocal('path_html') .
+ \ vimwiki#base#subdir(vimwiki#vars#get_wikilocal('path'), a:wikifile).
\ fnamemodify(a:wikifile, ":t:r").'.html'
endfunction "}}}
diff --git a/autoload/vimwiki/lst.vim b/autoload/vimwiki/lst.vim
index f73fad3..6671b0d 100644
--- a/autoload/vimwiki/lst.vim
+++ b/autoload/vimwiki/lst.vim
@@ -109,30 +109,31 @@ else
endif "}}}
function! vimwiki#lst#default_symbol() "{{{
- return g:vimwiki_list_markers[0]
+ return vimwiki#vars#get_syntaxlocal('list_markers')[0]
endfunction "}}}
function! vimwiki#lst#get_list_margin() "{{{
- if VimwikiGet('list_margin') < 0
+ let list_margin = vimwiki#vars#get_wikilocal('list_margin')
+ if list_margin < 0
return &sw
else
- return VimwikiGet('list_margin')
+ return list_margin
endif
endfunction "}}}
"Returns: the column where the text of a line starts (possible list item
"markers and checkboxes are skipped)
function! s:text_begin(lnum) "{{{
- return s:string_length(matchstr(getline(a:lnum), g:vimwiki_rxListItem))
+ return s:string_length(matchstr(getline(a:lnum), vimwiki#vars#get_syntaxlocal('rxListItem')))
endfunction "}}}
"Returns: 2 if there is a marker and text
" 1 for a marker and no text
" 0 for no marker at all (empty line or only text)
function! s:line_has_marker(lnum) "{{{
- if getline(a:lnum) =~# g:vimwiki_rxListItem.'\s*$'
+ if getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxListItem').'\s*$'
return 1
- elseif getline(a:lnum) =~# g:vimwiki_rxListItem.'\s*\S'
+ elseif getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxListItem').'\s*\S'
return 2
else
return 0
@@ -156,7 +157,7 @@ function! s:get_item(lnum) "{{{
return item
endif
- let matches = matchlist(getline(a:lnum), g:vimwiki_rxListItem)
+ let matches = matchlist(getline(a:lnum), vimwiki#vars#get_syntaxlocal('rxListItem'))
if matches == [] ||
\ (matches[1] == '' && matches[2] == '') ||
\ (matches[1] != '' && matches[2] != '')
@@ -187,10 +188,10 @@ function! s:get_level(lnum) "{{{
if getline(a:lnum) =~# '^\s*$'
return 0
endif
- if VimwikiGet('syntax') !=? 'media'
+ if !vimwiki#vars#get_syntaxlocal('recurring_bullets')
let level = indent(a:lnum)
else
- let level = s:string_length(matchstr(getline(a:lnum), s:rx_bullet_chars))-1
+ let level = s:string_length(matchstr(getline(a:lnum), vimwiki#vars#get_syntaxlocal(rx_bullet_chars)))-1
if level < 0
let level = (indent(a:lnum) == 0) ? 0 : 9999
endif
@@ -206,17 +207,19 @@ function! s:guess_kind_of_numbered_item(item) "{{{
let number_chars = a:item.mrkr[:-2]
let divisor = a:item.mrkr[-1:]
+ let number_kinds = vimwiki#vars#get_syntaxlocal('number_kinds')
+
if number_chars =~# '\d\+'
return '1'
endif
if number_chars =~# '\l\+'
- if number_chars !~# '^[ivxlcdm]\+' || index(s:number_kinds, 'i') == -1
+ if number_chars !~# '^[ivxlcdm]\+' || index(number_kinds, 'i') == -1
return 'a'
else
let item_above = s:get_prev_list_item(a:item, 0)
if item_above.type != 0
- if index(s:number_kinds, 'a') == -1 ||
+ if index(number_kinds, 'a') == -1 ||
\ (item_above.mrkr[-1:] !=# divisor && number_chars =~# 'i\+') ||
\ s:increment_i(item_above.mrkr[:-2]) ==# number_chars
return 'i'
@@ -224,7 +227,7 @@ function! s:guess_kind_of_numbered_item(item) "{{{
return 'a'
endif
else
- if number_chars =~# 'i\+' || index(s:number_kinds, 'a') == -1
+ if number_chars =~# 'i\+' || index(number_kinds, 'a') == -1
return 'i'
else
return 'a'
@@ -234,13 +237,13 @@ function! s:guess_kind_of_numbered_item(item) "{{{
endif
endif
if number_chars =~# '\u\+'
- if number_chars !~# '^[IVXLCDM]\+' || index(s:number_kinds, 'I') == -1
+ if number_chars !~# '^[IVXLCDM]\+' || index(number_kinds, 'I') == -1
return 'A'
else
let item_above = s:get_prev_list_item(a:item, 0)
if item_above.type != 0
- if index(s:number_kinds, 'A') == -1 ||
+ if index(number_kinds, 'A') == -1 ||
\ (item_above.mrkr[-1:] !=# divisor && number_chars =~# 'I\+') ||
\ s:increment_I(item_above.mrkr[:-2]) ==# number_chars
return 'I'
@@ -248,7 +251,7 @@ function! s:guess_kind_of_numbered_item(item) "{{{
return 'A'
endif
else
- if number_chars =~# 'I\+' || index(s:number_kinds, 'A') == -1
+ if number_chars =~# 'I\+' || index(number_kinds, 'A') == -1
return 'I'
else
return 'A'
@@ -263,8 +266,9 @@ function! s:regexp_of_marker(item) "{{{
if a:item.type == 1
return vimwiki#u#escape(a:item.mrkr)
elseif a:item.type == 2
+ let number_divisors = vimwiki#vars#get_syntaxlocal('number_divisors')
for ki in ['d', 'u', 'l']
- let match = matchstr(a:item.mrkr, '\'.ki.'\+['.s:number_divisors.']')
+ let match = matchstr(a:item.mrkr, '\'.ki.'\+['.number_divisors.']')
if match != ''
return '\'.ki.'\+'.vimwiki#u#escape(match[-1:])
endif
@@ -376,10 +380,10 @@ endfunction "}}}
"If there is no second argument, 0 is returned at a header, otherwise the
"header is skipped
function! s:get_next_line(lnum, ...) "{{{
- if getline(a:lnum) =~# g:vimwiki_rxPreStart
+ if getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxPreStart')
let cur_ln = a:lnum + 1
while cur_ln <= line('$') &&
- \ getline(cur_ln) !~# g:vimwiki_rxPreEnd
+ \ getline(cur_ln) !~# vimwiki#vars#get_syntaxlocal('rxPreEnd')
let cur_ln += 1
endwhile
let next_line = cur_ln
@@ -387,12 +391,12 @@ function! s:get_next_line(lnum, ...) "{{{
let next_line = nextnonblank(a:lnum+1)
endif
- if a:0 > 0 && getline(next_line) =~# g:vimwiki_rxHeader
+ if a:0 > 0 && getline(next_line) =~# vimwiki#vars#get_syntaxlocal('rxHeader')
let next_line = s:get_next_line(next_line, 1)
endif
if next_line < 0 || next_line > line('$') ||
- \ (getline(next_line) =~# g:vimwiki_rxHeader && a:0 == 0)
+ \ (getline(next_line) =~# vimwiki#vars#get_syntaxlocal('rxHeader') && a:0 == 0)
return 0
endif
@@ -404,10 +408,10 @@ endfunction "}}}
function! s:get_prev_line(lnum) "{{{
let prev_line = prevnonblank(a:lnum-1)
- if getline(prev_line) =~# g:vimwiki_rxPreEnd
+ if getline(prev_line) =~# vimwiki#vars#get_syntaxlocal('rxPreEnd')
let cur_ln = a:lnum - 1
while 1
- if cur_ln == 0 || getline(cur_ln) =~# g:vimwiki_rxPreStart
+ if cur_ln == 0 || getline(cur_ln) =~# vimwiki#vars#get_syntaxlocal('rxPreStart')
break
endif
let cur_ln -= 1
@@ -416,7 +420,7 @@ function! s:get_prev_line(lnum) "{{{
endif
if prev_line < 0 || prev_line > line('$') ||
- \ getline(prev_line) =~# g:vimwiki_rxHeader
+ \ getline(prev_line) =~# vimwiki#vars#get_syntaxlocal('rxHeader')
return 0
endif
@@ -693,11 +697,11 @@ function! s:get_rate(item) "{{{
return -1
endif
let state = a:item.cb
- if state == g:vimwiki_listsym_rejected
+ if state == vimwiki#vars#get_global('listsym_rejected')
return -1
endif
- let n=len(g:vimwiki_listsyms_list)
- return index(g:vimwiki_listsyms_list, state) * 100/(n-1)
+ let n = len(vimwiki#vars#get_syntaxlocal('listsyms_list'))
+ return index(vimwiki#vars#get_syntaxlocal('listsyms_list'), state) * 100/(n-1)
endfunction "}}}
"Set state of the list item to [ ] or [o] or whatever
@@ -732,17 +736,18 @@ endfunction "}}}
"Returns: the appropriate symbol for a given percent rate
function! s:rate_to_state(rate) "{{{
+ let listsyms_list = vimwiki#vars#get_syntaxlocal('listsyms_list')
let state = ''
- let n=len(g:vimwiki_listsyms_list)
+ let n = len(listsyms_list)
if a:rate == 100
- let state = g:vimwiki_listsyms_list[n-1]
+ let state = listsyms_list[n-1]
elseif a:rate == 0
- let state = g:vimwiki_listsyms_list[0]
+ let state = listsyms_list[0]
elseif a:rate == -1
- let state = g:vimwiki_listsym_rejected
+ let state = vimwiki#vars#get_global('listsym_rejected')
else
let index = float2nr(ceil(a:rate/100.0*(n-2)))
- let state = g:vimwiki_listsyms_list[index]
+ let state = listsyms_list[index]
endif
return state
endfunction "}}}
@@ -799,7 +804,7 @@ function! s:create_cb(item) "{{{
endif
let new_item = a:item
- let new_item.cb = g:vimwiki_listsyms_list[0]
+ let new_item.cb = vimwiki#vars#get_syntaxlocal('listsyms_list')[0]
call s:substitute_rx_in_line(new_item.lnum,
\ vimwiki#u#escape(new_item.mrkr) . '\zs\ze', ' [' . new_item.cb . ']')
@@ -893,7 +898,7 @@ function! vimwiki#lst#decrement_cb(from_line, to_line) "{{{
"if from_line has CB, decrement it and set all siblings to the same new state
let rate_first_line = s:get_rate(from_item)
- let n=len(g:vimwiki_listsyms_list)
+ let n = len(vimwiki#vars#get_syntaxlocal('listsyms_list'))
let new_rate = max([rate_first_line - 100/(n-1)-1, 0])
call s:change_cb(a:from_line, a:to_line, new_rate)
@@ -910,7 +915,36 @@ function! vimwiki#lst#increment_cb(from_line, to_line) "{{{
"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(g:vimwiki_listsyms_list)
+ 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 "}}}
+
+"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)
@@ -990,8 +1024,8 @@ endfunction "}}}
function! s:decrease_level(item) "{{{
let removed_indent = 0
- if VimwikiGet('syntax') ==? 'media' && a:item.type == 1 &&
- \ index(s:multiple_bullet_chars, s:first_char(a:item.mrkr)) > -1
+ if vimwiki#vars#get_syntaxlocal('recurring_bullets') && a:item.type == 1 &&
+ \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(a:item.mrkr)) > -1
if s:string_length(a:item.mrkr) >= 2
call s:substitute_string_in_line(a:item.lnum,
\ s:first_char(a:item.mrkr), '')
@@ -1012,8 +1046,8 @@ endfunction "}}}
function! s:increase_level(item) "{{{
let additional_indent = 0
- if VimwikiGet('syntax') ==? 'media' && a:item.type == 1 &&
- \ index(s:multiple_bullet_chars, s:first_char(a:item.mrkr)) > -1
+ if vimwiki#vars#get_syntaxlocal('recurring_bullets') && a:item.type == 1 &&
+ \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(a:item.mrkr)) > -1
call s:substitute_string_in_line(a:item.lnum, a:item.mrkr, a:item.mrkr .
\ s:first_char(a:item.mrkr))
let additional_indent = 1
@@ -1034,8 +1068,8 @@ endfunction "}}}
"a:indent_by can be negative
function! s:indent_line_by(lnum, indent_by) "{{{
let item = s:get_item(a:lnum)
- if VimwikiGet('syntax') ==? 'media' && item.type == 1 &&
- \ index(s:multiple_bullet_chars, s:first_char(item.mrkr)) > -1
+ if vimwiki#vars#get_syntaxlocal('recurring_bullets') && item.type == 1 &&
+ \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(item.mrkr)) > -1
if a:indent_by > 0
call s:substitute_string_in_line(a:lnum, item.mrkr,
\ item.mrkr . s:first_char(item.mrkr))
@@ -1149,38 +1183,40 @@ function! s:get_idx_list_markers(item) "{{{
else
let m = s:guess_kind_of_numbered_item(a:item) . a:item.mrkr[-1:]
endif
- return index(g:vimwiki_list_markers, m)
+ return index(vimwiki#vars#get_syntaxlocal('list_markers'), m)
endfunction "}}}
"changes the marker of the given item to the next in g:vimwiki_list_markers
function! s:get_next_mrkr(item) "{{{
+ let markers = vimwiki#vars#get_syntaxlocal('list_markers')
if a:item.type == 0
- let new_mrkr = g:vimwiki_list_markers[0]
+ let new_mrkr = markers[0]
else
let idx = s:get_idx_list_markers(a:item)
- let new_mrkr = g:vimwiki_list_markers[(idx+1) % len(g:vimwiki_list_markers)]
+ let new_mrkr = markers[(idx+1) % len(markers)]
endif
return new_mrkr
endfunction "}}}
"changes the marker of the given item to the previous in g:vimwiki_list_markers
function! s:get_prev_mrkr(item) "{{{
+ let markers = vimwiki#vars#get_syntaxlocal('list_markers')
if a:item.type == 0
- return g:vimwiki_list_markers[-1]
+ return markers[-1]
endif
let idx = s:get_idx_list_markers(a:item)
if idx == -1
- return g:vimwiki_list_markers[-1]
+ return markers[-1]
else
- return g:vimwiki_list_markers[(idx - 1 + len(g:vimwiki_list_markers)) %
- \ len(g:vimwiki_list_markers)]
+ return markers[(idx - 1 + len(markers)) %
+ \ len(markers)]
endif
endfunction "}}}
function! s:set_new_mrkr(item, new_mrkr) "{{{
if a:item.type == 0
call s:substitute_rx_in_line(a:item.lnum, '^\s*\zs\ze', a:new_mrkr.' ')
- if indent(a:item.lnum) == 0 && VimwikiGet('syntax') !=? 'media'
+ if indent(a:item.lnum) == 0 && !vimwiki#vars#get_syntaxlocal('recurring_bullets')
call s:set_indent(a:item.lnum, vimwiki#lst#get_list_margin())
endif
else
@@ -1202,7 +1238,7 @@ function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode) "{{{
endif
"handle markers like ***
- if index(s:multiple_bullet_chars, s:first_char(new_mrkr)) > -1
+ if index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(new_mrkr)) > -1
"use *** if the item above has *** too
let item_above = s:get_prev_list_item(cur_item, 1)
if item_above.type == 1 &&
@@ -1217,7 +1253,7 @@ function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode) "{{{
else
"if the old is ### and the new is * use ***
if cur_item.type == 1 &&
- \ index(s:multiple_bullet_chars,s:first_char(cur_item.mrkr))>-1
+ \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(cur_item.mrkr))>-1
let new_mrkr = repeat(new_mrkr, s:string_length(cur_item.mrkr))
else
"use *** if the parent item has **
@@ -1261,7 +1297,7 @@ endfunction "}}}
"sets kind of the item depending on neighbor items and the parent item
function! s:adjust_mrkr(item) "{{{
- if a:item.type == 0 || VimwikiGet('syntax') ==? 'media'
+ if a:item.type == 0 || vimwiki#vars#get_syntaxlocal('recurring_bullets')
return
endif
@@ -1273,7 +1309,7 @@ function! s:adjust_mrkr(item) "{{{
"if possible, set e.g. *** if parent has ** as marker
if neighbor_item.type == 0 && a:item.type == 1 &&
- \ index(s:multiple_bullet_chars, s:first_char(a:item.mrkr)) > -1
+ \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(a:item.mrkr)) > -1
let parent_item = s:get_parent(a:item)
if parent_item.type == 1 &&
\ s:first_char(parent_item.mrkr) ==# s:first_char(a:item.mrkr)
@@ -1291,7 +1327,7 @@ function! s:clone_marker_from_to(from, to) "{{{
if item_from.type == 0 | return | endif
let new_mrkr = item_from.mrkr . ' '
call s:substitute_rx_in_line(a:to, '^\s*', new_mrkr)
- let new_indent = ( VimwikiGet('syntax') !=? 'media' ? indent(a:from) : 0 )
+ let new_indent = ( vimwiki#vars#get_syntaxlocal('recurring_bullets') ? 0 : indent(a:from) )
call s:set_indent(a:to, new_indent)
if item_from.cb != ''
call s:create_cb(s:get_item(a:to))
@@ -1328,7 +1364,7 @@ function! s:create_marker(lnum) "{{{
call s:clone_marker_from_to(new_sibling.lnum, a:lnum)
else
let cur_item = s:get_item(a:lnum)
- call s:set_new_mrkr(cur_item, g:vimwiki_list_markers[0])
+ call s:set_new_mrkr(cur_item, vimwiki#vars#get_syntaxlocal('list_markers')[0])
call s:adjust_numbered_list(cur_item, 0, 0)
endif
endfunction "}}}
@@ -1528,53 +1564,6 @@ endfunction "}}}
"handle keys }}}
"misc stuff {{{
-function! vimwiki#lst#setup_marker_infos() "{{{
- let s:rx_bullet_chars = '['.join(keys(g:vimwiki_bullet_types), '').']\+'
-
- let s:multiple_bullet_chars = []
- for i in keys(g:vimwiki_bullet_types)
- if g:vimwiki_bullet_types[i] == 1
- call add(s:multiple_bullet_chars, i)
- endif
- endfor
-
- let s:number_kinds = []
- let s:number_divisors = ""
- for i in g:vimwiki_number_types
- call add(s:number_kinds, i[0])
- let s:number_divisors .= vimwiki#u#escape(i[1])
- endfor
-
- let s:char_to_rx = {'1': '\d\+', 'i': '[ivxlcdm]\+', 'I': '[IVXLCDM]\+',
- \ 'a': '\l\{1,2}', 'A': '\u\{1,2}'}
-
- "create regexp for bulleted list items
- let g:vimwiki_rxListBullet = join( map(keys(g:vimwiki_bullet_types),
- \'vimwiki#u#escape(v:val).repeat("\\+", g:vimwiki_bullet_types[v:val])'
- \ ) , '\|')
-
- "create regex for numbered list items
- if !empty(g:vimwiki_number_types)
- let g:vimwiki_rxListNumber = '\C\%('
- for type in g:vimwiki_number_types[:-2]
- let g:vimwiki_rxListNumber .= s:char_to_rx[type[0]] .
- \ vimwiki#u#escape(type[1]) . '\|'
- endfor
- let g:vimwiki_rxListNumber .= s:char_to_rx[g:vimwiki_number_types[-1][0]].
- \ vimwiki#u#escape(g:vimwiki_number_types[-1][1]) . '\)'
- else
- "regex that matches nothing
- let g:vimwiki_rxListNumber = '$^'
- endif
-
- "the user can set the listsyms as string, but vimwiki needs a list
- let g:vimwiki_listsyms_list = split(g:vimwiki_listsyms, '\zs')
-
- if match(g:vimwiki_listsyms, g:vimwiki_listsym_rejected) != -1
- echomsg "Warning: g:vimwiki_listsyms and g:vimwiki_listsym_rejected overlap"
- endif
-endfunction "}}}
-
function! vimwiki#lst#TO_list_item(inner, visual) "{{{
let lnum = prevnonblank('.')
let item = s:get_corresponding_item(lnum)
diff --git a/autoload/vimwiki/markdown_base.vim b/autoload/vimwiki/markdown_base.vim
index 41664e3..fa14b62 100644
--- a/autoload/vimwiki/markdown_base.vim
+++ b/autoload/vimwiki/markdown_base.vim
@@ -13,58 +13,36 @@ function! s:safesubstitute(text, search, replace, mode) "{{{
return substitute(a:text, a:search, escaped, a:mode)
endfunction " }}}
-" vimwiki#markdown_base#reset_mkd_refs
-function! vimwiki#markdown_base#reset_mkd_refs() "{{{
- call VimwikiClear('markdown_refs')
-endfunction "}}}
-
" vimwiki#markdown_base#scan_reflinks
function! vimwiki#markdown_base#scan_reflinks() " {{{
let mkd_refs = {}
" construct list of references using vimgrep
try
" Why noautocmd? Because https://github.com/vimwiki/vimwiki/issues/121
- noautocmd execute 'vimgrep #'.g:vimwiki_rxMkdRef.'#j %'
+ noautocmd execute 'vimgrep #'.vimwiki#vars#get_syntaxlocal('rxMkdRef').'#j %'
catch /^Vim\%((\a\+)\)\=:E480/ " No Match
"Ignore it, and move on to the next file
endtry
"
for d in getqflist()
let matchline = join(getline(d.lnum, min([d.lnum+1, line('$')])), ' ')
- let descr = matchstr(matchline, g:vimwiki_rxMkdRefMatchDescr)
- let url = matchstr(matchline, g:vimwiki_rxMkdRefMatchUrl)
+ let descr = matchstr(matchline, vimwiki#vars#get_syntaxlocal('rxMkdRefMatchDescr'))
+ let url = matchstr(matchline, vimwiki#vars#get_syntaxlocal('rxMkdRefMatchUrl'))
if descr != '' && url != ''
let mkd_refs[descr] = url
endif
endfor
- call VimwikiSet('markdown_refs', mkd_refs)
+ call vimwiki#vars#set_bufferlocal('markdown_refs', mkd_refs)
return mkd_refs
endfunction "}}}
-" vimwiki#markdown_base#get_reflinks
-function! vimwiki#markdown_base#get_reflinks() " {{{
- let done = 1
- try
- let mkd_refs = VimwikiGet('markdown_refs')
- catch
- " work-around hack
- let done = 0
- " ... the following command does not work inside catch block !?
- " > let mkd_refs = vimwiki#markdown_base#scan_reflinks()
- endtry
- if !done
- let mkd_refs = vimwiki#markdown_base#scan_reflinks()
- endif
- return mkd_refs
-endfunction "}}}
-
" vimwiki#markdown_base#open_reflink
" try markdown reference links
function! vimwiki#markdown_base#open_reflink(link) " {{{
" echom "vimwiki#markdown_base#open_reflink"
let link = a:link
- let mkd_refs = vimwiki#markdown_base#get_reflinks()
+ let mkd_refs = vimwiki#vars#get_bufferlocal('markdown_refs')
if has_key(mkd_refs, link)
let url = mkd_refs[link]
call vimwiki#base#system_open_link(url)
@@ -84,50 +62,50 @@ function! s:normalize_link_syntax_n() " {{{
let lnum = line('.')
" try WikiIncl
- let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWikiIncl)
+ let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWikiIncl'))
if !empty(lnk)
" NO-OP !!
return
endif
" try WikiLink0: replace with WikiLink1
- let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWikiLink0)
+ let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink0'))
if !empty(lnk)
let sub = vimwiki#base#normalize_link_helper(lnk,
- \ g:vimwiki_rxWikiLinkMatchUrl, g:vimwiki_rxWikiLinkMatchDescr,
- \ g:vimwiki_WikiLink1Template2)
- call vimwiki#base#replacestr_at_cursor(g:vimwiki_rxWikiLink0, sub)
+ \ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'), vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'),
+ \ vimwiki#vars#get_syntaxlocal('WikiLink1Template2'))
+ call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink0'), sub)
return
endif
" try WikiLink1: replace with WikiLink0
- let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWikiLink1)
+ let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink1'))
if !empty(lnk)
let sub = vimwiki#base#normalize_link_helper(lnk,
- \ g:vimwiki_rxWikiLinkMatchUrl, g:vimwiki_rxWikiLinkMatchDescr,
- \ g:vimwiki_WikiLinkTemplate2)
- call vimwiki#base#replacestr_at_cursor(g:vimwiki_rxWikiLink1, sub)
+ \ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'), vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'),
+ \ vimwiki#vars#get_global('WikiLinkTemplate2'))
+ call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink1'), sub)
return
endif
" try Weblink
- let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWeblink)
+ let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWeblink'))
if !empty(lnk)
let sub = vimwiki#base#normalize_link_helper(lnk,
- \ g:vimwiki_rxWeblinkMatchUrl, g:vimwiki_rxWeblinkMatchDescr,
- \ g:vimwiki_Weblink1Template)
- call vimwiki#base#replacestr_at_cursor(g:vimwiki_rxWeblink, sub)
+ \ vimwiki#vars#get_syntaxlocal('rxWeblinkMatchUrl'), vimwiki#vars#get_syntaxlocal('rxWeblinkMatchDescr'),
+ \ vimwiki#vars#get_syntaxlocal('Weblink1Template'))
+ call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWeblink'), sub)
return
endif
" try Word (any characters except separators)
" rxWord is less permissive than rxWikiLinkUrl which is used in
" normalize_link_syntax_v
- let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWord)
+ let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWord'))
if !empty(lnk)
let sub = vimwiki#base#normalize_link_helper(lnk,
- \ g:vimwiki_rxWord, '',
- \ g:vimwiki_Weblink1Template)
+ \ vimwiki#vars#get_global('rxWord'), '',
+ \ vimwiki#vars#get_syntaxlocal('Weblink1Template'))
call vimwiki#base#replacestr_at_cursor('\V'.lnk, sub)
return
endif
@@ -146,7 +124,8 @@ function! s:normalize_link_syntax_v() " {{{
try
norm! gvy
let visual_selection = @"
- let link = s:safesubstitute(g:vimwiki_Weblink1Template, '__LinkUrl__', visual_selection, '')
+ let link = s:safesubstitute(vimwiki#vars#get_syntaxlocal('Weblink1Template'),
+ \ '__LinkUrl__', visual_selection, '')
let link = s:safesubstitute(link, '__LinkDescription__', visual_selection, '')
call setreg('"', link, 'v')
diff --git a/autoload/vimwiki/path.vim b/autoload/vimwiki/path.vim
index 9790316..263466c 100644
--- a/autoload/vimwiki/path.vim
+++ b/autoload/vimwiki/path.vim
@@ -133,8 +133,8 @@ function! vimwiki#path#mkdir(path, ...) "{{{
endif
let path = vimwiki#path#chomp_slash(path)
- if vimwiki#u#is_windows() && !empty(g:vimwiki_w32_dir_enc)
- let path = iconv(path, &enc, g:vimwiki_w32_dir_enc)
+ if vimwiki#u#is_windows() && !empty(vimwiki#vars#get_global('w32_dir_enc'))
+ let path = iconv(path, &enc, vimwiki#vars#get_global('w32_dir_enc'))
endif
if a:0 && a:1 && input("Vimwiki: Make new directory: "
diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim
index 9585641..490b47d 100644
--- a/autoload/vimwiki/tags.vim
+++ b/autoload/vimwiki/tags.vim
@@ -28,7 +28,7 @@ function! vimwiki#tags#update_tags(full_rebuild, all_files) "{{{
let all_files = a:all_files != ''
if !a:full_rebuild
" Updating for one page (current)
- let page_name = VimwikiGet('subdir') . expand('%:t:r')
+ let page_name = vimwiki#vars#get_bufferlocal('subdir') . expand('%:t:r')
" Collect tags in current file
let tags = s:scan_tags(getline(1, '$'), page_name)
" Load metadata file
@@ -40,8 +40,8 @@ function! vimwiki#tags#update_tags(full_rebuild, all_files) "{{{
" Save
call s:write_tags_metadata(metadata)
else " full rebuild
- let files = vimwiki#base#find_files(g:vimwiki_current_idx, 0)
- let wiki_base_dir = VimwikiGet('path', g:vimwiki_current_idx)
+ let files = vimwiki#base#find_files(vimwiki#vars#get_bufferlocal('wiki_nr'), 0)
+ let wiki_base_dir = vimwiki#vars#get_wikilocal('path')
let tags_file_last_modification =
\ getftime(vimwiki#tags#metadata_file_path())
let metadata = s:load_tags_metadata()
@@ -68,8 +68,8 @@ function! s:scan_tags(lines, page_name) "{{{
" Code wireframe to scan for headers -- borrowed from
" vimwiki#base#get_anchors(), with minor modifications.
- let rxheader = g:vimwiki_{VimwikiGet('syntax')}_header_search
- let rxtag = g:vimwiki_{VimwikiGet('syntax')}_tag_search
+ let rxheader = vimwiki#vars#get_syntaxlocal('header_search')
+ let rxtag = vimwiki#vars#get_syntaxlocal('tag_search')
let anchor_level = ['', '', '', '', '', '', '']
let current_complete_anchor = ''
@@ -141,7 +141,7 @@ endfunction " }}}
" vimwiki#tags#metadata_file_path
" Returns tags metadata file path
function! vimwiki#tags#metadata_file_path() abort "{{{
- return fnamemodify(vimwiki#path#join_path(VimwikiGet('path'), s:TAGS_METADATA_FILE_NAME), ':p')
+ return fnamemodify(vimwiki#path#join_path(vimwiki#vars#get_wikilocal('path'), s:TAGS_METADATA_FILE_NAME), ':p')
endfunction " }}}
" s:load_tags_metadata
@@ -261,7 +261,7 @@ function! s:write_tags_metadata(metadata) "{{{
let entry_data = substitute(entry_data, "\n", '\\n', 'g')
call add(tags,
\ entry.tagname . "\t"
- \ . pagename . VimwikiGet('ext') . "\t"
+ \ . pagename . vimwiki#vars#get_wikilocal('ext') . "\t"
\ . entry.lineno
\ . ';"'
\ . "\t" . "vimwiki:" . entry_data
@@ -315,18 +315,18 @@ function! vimwiki#tags#generate_tags(...) abort "{{{
if need_all_tags || index(specific_tags, tagname) != -1
call extend(lines, [
\ '',
- \ substitute(g:vimwiki_rxH2_Template, '__Header__', tagname, ''),
+ \ substitute(vimwiki#vars#get_syntaxlocal('rxH2_Template'), '__Header__', tagname, ''),
\ '' ])
for taglink in sort(tags_entries[tagname])
call add(lines, bullet .
- \ substitute(g:vimwiki_WikiLinkTemplate1, '__LinkUrl__', taglink, ''))
+ \ substitute(vimwiki#vars#get_global('WikiLinkTemplate1'), '__LinkUrl__', taglink, ''))
endfor
endif
endfor
- let links_rx = '\m\%(^\s*$\)\|\%('.g:vimwiki_rxH2.'\)\|\%(^\s*'
+ let links_rx = '\m\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxH2').'\)\|\%(^\s*'
\ .vimwiki#u#escape(vimwiki#lst#default_symbol()).' '
- \ .g:vimwiki_rxWikiLink.'$\)'
+ \ .vimwiki#vars#get_syntaxlocal('rxWikiLink').'$\)'
call vimwiki#base#update_listing_in_buffer(lines, 'Generated Tags', links_rx,
\ line('$')+1, 1)
diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim
index b05d67c..d9c7134 100644
--- a/autoload/vimwiki/tbl.vim
+++ b/autoload/vimwiki/tbl.vim
@@ -19,7 +19,7 @@ let s:textwidth = &tw
" Misc functions {{{
function! s:rxSep() "{{{
- return g:vimwiki_rxTableSep
+ return vimwiki#vars#get_syntaxlocal('rxTableSep')
endfunction "}}}
function! s:wide_len(str) "{{{
@@ -29,7 +29,7 @@ function! s:wide_len(str) "{{{
endif
" get str display width in vim ver < 7.2
- if !g:vimwiki_CJK_length
+ if !vimwiki#vars#get_global('CJK_length')
let ret = strlen(substitute(a:str, '.', 'x', 'g'))
else
let savemodified = &modified
diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim
index 29f53e2..009bf9d 100644
--- a/autoload/vimwiki/u.vim
+++ b/autoload/vimwiki/u.vim
@@ -43,17 +43,12 @@ endfunction "}}}
" Load concrete Wiki syntax: sets regexes and templates for headers and links
function vimwiki#u#reload_regexes() "{{{
- execute 'runtime! syntax/vimwiki_'.VimwikiGet('syntax').'.vim'
-endfunction "}}}
-
-" Load omnipresent Wiki syntax
-function vimwiki#u#reload_omni_regexes() "{{{
- execute 'runtime! syntax/omnipresent_syntax.vim'
+ execute 'runtime! syntax/vimwiki_'.vimwiki#vars#get_wikilocal('syntax').'.vim'
endfunction "}}}
" Load syntax-specific functionality
function vimwiki#u#reload_regexes_custom() "{{{
- execute 'runtime! syntax/vimwiki_'.VimwikiGet('syntax').'_custom.vim'
+ execute 'runtime! syntax/vimwiki_'.vimwiki#vars#get_wikilocal('syntax').'_custom.vim'
endfunction "}}}
" Backward compatible version of the built-in function shiftwidth()
diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim
new file mode 100644
index 0000000..2e704a7
--- /dev/null
+++ b/autoload/vimwiki/vars.vim
@@ -0,0 +1,699 @@
+" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
+" Vimwiki autoload plugin file
+" Home: https://github.com/vimwiki/vimwiki/
+
+" ------------------------------------------------------------------------------------------------
+" This file provides functions to manage the various state variables which are needed during a
+" Vimwiki session.
+" They consist of:
+"
+" - global variables. These are stored in the dict g:vimwiki_global_vars. They consist mainly of
+" 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
+" dictionaries. One dict for every registered wiki. The last dictionary contains default values
+" (used for temporary wikis).
+"
+" - syntax variables. Stored in the dict g:vimwiki_syntax_variables which holds all the regexes and
+" other stuff which is needed for highlighting.
+"
+" - buffer-local variables. They are stored as buffer variables directly (b:foo)
+
+" As a developer, you should, if possible, only use the get_ and set_ functions for these types of
+" variables, not the underlying dicts!
+" ------------------------------------------------------------------------------------------------
+
+
+function! s:populate_global_variables()
+
+ 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': '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_