vimwiki

Personal wiki for vim
git clone https://github.com/vimwiki/vimwiki.git
Log | Files | Refs | README | LICENSE

commit 250fd3c47b0682b97ae4f0d943857f7d9c8310b9
parent 2329d602a761c99cfc768ffcdde6c898d21ede03
Author: EinfachToll <istjanichtzufassen@googlemail.com>
Date:   Fri, 23 Dec 2016 20:05:53 +0100

Use new access functions for wiki-local variables -- part 5

Ref #256

Diffstat:
Mautoload/vimwiki/base.vim | 32+++++++++++++++++---------------
Mautoload/vimwiki/html.vim | 4++--
Mautoload/vimwiki/lst.vim | 14+++++++-------
Mautoload/vimwiki/tags.vim | 5+++--
Mautoload/vimwiki/u.vim | 4++--
Mautoload/vimwiki/vars.vim | 5+++++
Mftplugin/vimwiki.vim | 4++--
Mplugin/vimwiki.vim | 5++---
8 files changed, 40 insertions(+), 33 deletions(-)

diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim @@ -13,10 +13,9 @@ 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 " also consider the syntaxes from g:vimwiki_ext2syntax for syn in values(vimwiki#vars#get_global('ext2syntax')) @@ -490,7 +489,7 @@ function! vimwiki#base#backlinks() "{{{ let current_filename = expand("%:p") let locations = [] for idx in range(len(g:vimwiki_list)) - let syntax = VimwikiGet('syntax', idx) + 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) @@ -675,14 +674,17 @@ function! s:jump_to_anchor(anchor) "{{{ let anchor = vimwiki#u#escape(a:anchor) let segments = split(anchor, '#', 0) + + let current_syntax = vimwiki#vars#get_wikilocal('syntax') + for segment in segments let anchor_header = substitute( - \ g:vimwiki_{VimwikiGet('syntax')}_header_match, + \ g:vimwiki_{current_syntax}_header_match, \ '__Header__', "\\='".segment."'", '') - let anchor_bold = substitute(g:vimwiki_{VimwikiGet('syntax')}_bold_match, + let anchor_bold = substitute(g:vimwiki_{current_syntax}_bold_match, \ '__Text__', "\\='".segment."'", '') - let anchor_tag = substitute(g:vimwiki_{VimwikiGet('syntax')}_tag_match, + let anchor_tag = substitute(g:vimwiki_{current_syntax}_tag_match, \ '__Tag__', "\\='".segment."'", '') if !search(anchor_tag, 'Wc') @@ -704,7 +706,7 @@ function! s:get_links(wikifile, idx) "{{{ return [] endif - let syntax = VimwikiGet('syntax', a:idx) + let syntax = vimwiki#vars#get_wikilocal('syntax', a:idx) let rx_link = g:vimwiki_{syntax}_wikilink let links = [] let lnum = 0 @@ -736,7 +738,7 @@ function! vimwiki#base#check_links() "{{{ let links_of_files = {} let errors = [] for idx in range(len(g:vimwiki_list)) - let syntax = VimwikiGet('syntax', idx) + 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) @@ -1222,15 +1224,15 @@ endfunction " }}} " vimwiki#base#follow_link function! vimwiki#base#follow_link(split, ...) "{{{ Parse link at cursor and pass " to VimwikiLinkHandler, or failing that, the default open_link handler - if exists('*vimwiki#'.VimwikiGet('syntax').'_base#follow_link') + if exists('*vimwiki#'.vimwiki#vars#get_wikilocal('syntax').'_base#follow_link') " Syntax-specific links " XXX: @Stuart: do we still need it? " XXX: @Maxim: most likely! I am still working on a seemless way to " integrate regexp's without complicating syntax/vimwiki.vim if a:0 - call vimwiki#{VimwikiGet('syntax')}_base#follow_link(a:split, a:1) + call vimwiki#{vimwiki#vars#get_wikilocal('syntax')}_base#follow_link(a:split, a:1) else - call vimwiki#{VimwikiGet('syntax')}_base#follow_link(a:split) + call vimwiki#{vimwiki#vars#get_wikilocal('syntax')}_base#follow_link(a:split) endif else if a:split ==# "split" @@ -1987,9 +1989,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/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) " {{{ @@ -1356,7 +1356,7 @@ function! vimwiki#html#CustomWiki2HTML(path, wikifile, force) "{{{ call vimwiki#path#mkdir(a:path) echomsg system(vimwiki#vars#get_wikilocal('custom_wiki2html'). ' '. \ a:force. ' '. - \ VimwikiGet('syntax'). ' '. + \ vimwiki#vars#get_wikilocal('syntax'). ' '. \ strpart(vimwiki#vars#get_wikilocal('ext'), 1). ' '. \ shellescape(a:path). ' '. \ shellescape(a:wikifile). ' '. diff --git a/autoload/vimwiki/lst.vim b/autoload/vimwiki/lst.vim @@ -188,7 +188,7 @@ function! s:get_level(lnum) "{{{ if getline(a:lnum) =~# '^\s*$' return 0 endif - if VimwikiGet('syntax') !=? 'media' + if vimwiki#vars#get_wikilocal('syntax') !=? 'media' let level = indent(a:lnum) else let level = s:string_length(matchstr(getline(a:lnum), s:rx_bullet_chars))-1 @@ -922,7 +922,7 @@ endfunction "}}} function! s:decrease_level(item) "{{{ let removed_indent = 0 - if VimwikiGet('syntax') ==? 'media' && a:item.type == 1 && + if vimwiki#vars#get_wikilocal('syntax') ==? 'media' && a:item.type == 1 && \ index(s: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, @@ -944,7 +944,7 @@ endfunction "}}} function! s:increase_level(item) "{{{ let additional_indent = 0 - if VimwikiGet('syntax') ==? 'media' && a:item.type == 1 && + if vimwiki#vars#get_wikilocal('syntax') ==? 'media' && a:item.type == 1 && \ index(s: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)) @@ -966,7 +966,7 @@ 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 && + if vimwiki#vars#get_wikilocal('syntax') ==? 'media' && item.type == 1 && \ index(s:multiple_bullet_chars, s:first_char(item.mrkr)) > -1 if a:indent_by > 0 call s:substitute_string_in_line(a:lnum, item.mrkr, @@ -1112,7 +1112,7 @@ 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_wikilocal('syntax') !=? 'media' call s:set_indent(a:item.lnum, vimwiki#lst#get_list_margin()) endif else @@ -1193,7 +1193,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_wikilocal('syntax') ==? 'media' return endif @@ -1223,7 +1223,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_wikilocal('syntax') !=? 'media' ? indent(a:from) : 0 ) call s:set_indent(a:to, new_indent) if item_from.cb != '' call s:create_cb(s:get_item(a:to)) diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim @@ -68,8 +68,9 @@ 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 syntax = vimwiki#vars#get_wikilocal('syntax') + let rxheader = g:vimwiki_{syntax}_header_search + let rxtag = g:vimwiki_{syntax}_tag_search let anchor_level = ['', '', '', '', '', '', ''] let current_complete_anchor = '' diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim @@ -43,7 +43,7 @@ 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' + execute 'runtime! syntax/vimwiki_'.vimwiki#vars#get_wikilocal('syntax').'.vim' endfunction "}}} " Load omnipresent Wiki syntax @@ -53,7 +53,7 @@ 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 @@ -228,6 +228,11 @@ function! vimwiki#vars#get_wikilocal(key, ...) endfunction +function! vimwiki#vars#get_wikilocal_default(key) + return g:vimwiki_wikilocal_vars[-1][a:key] +endfunction + + function! vimwiki#vars#set_wikilocal(key, value, wiki_nr) if a:wiki_nr == len(g:vimwiki_wikilocal_vars) - 1 call insert(g:vimwiki_wikilocal_vars, {}, -1) diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim @@ -45,7 +45,7 @@ function! Complete_wikifiles(findstart, base) let s:line_context = '[' return startoflink endif - if VimwikiGet('syntax') ==? 'markdown' + if vimwiki#vars#get_wikilocal('syntax') ==? 'markdown' let startofinlinelink = match(line, '\[.*\](\zs[^)]*$') if startofinlinelink != -1 let s:line_context = '[' @@ -109,7 +109,7 @@ function! Complete_wikifiles(findstart, base) let given_wikifile = segments[0] == '' ? expand('%:t:r') : segments[0] let link_infos = vimwiki#base#resolve_link(given_wikifile.'#') let wikifile = link_infos.filename - let syntax = VimwikiGet('syntax', link_infos.index) + let syntax = vimwiki#vars#get_wikilocal('syntax', link_infos.index) let anchors = vimwiki#base#get_anchors(wikifile, syntax) let filtered_anchors = [] diff --git a/plugin/vimwiki.vim b/plugin/vimwiki.vim @@ -86,7 +86,7 @@ function! s:setup_filetype() "{{{ if idx == -1 let ext = '.'.expand('%:e') " lookup syntax using g:vimwiki_ext2syntax - let syn = get(vimwiki#vars#get_global('ext2syntax'), ext, s:vimwiki_defaults.syntax) + let syn = get(vimwiki#vars#get_global('ext2syntax'), ext, vimwiki#vars#get_wikilocal_default('syntax')) call add(g:vimwiki_list, {'path': path, 'ext': ext, 'syntax': syn, 'temp': 1}) let idx = len(g:vimwiki_list) - 1 call Validate_wiki_options(idx) @@ -119,7 +119,7 @@ function! s:setup_buffer_enter() "{{{ if idx == -1 let ext = '.'.expand('%:e') " lookup syntax using g:vimwiki_ext2syntax - let syn = get(vimwiki#vars#get_global('ext2syntax'), ext, s:vimwiki_defaults.syntax) + let syn = get(vimwiki#vars#get_global('ext2syntax'), ext, vimwiki#vars#get_wikilocal_default('syntax')) call add(g:vimwiki_list, {'path': path, 'ext': ext, 'syntax': syn, 'temp': 1}) let idx = len(g:vimwiki_list) - 1 call Validate_wiki_options(idx) @@ -317,7 +317,6 @@ endif "}}} " DEFAULT wiki {{{ let s:vimwiki_defaults = {} -let s:vimwiki_defaults.syntax = 'default' " is wiki temporary -- was added to g:vimwiki_list by opening arbitrary wiki " file.