Fix: Vars.vim error in parsing: key not present (Issue #980)

This commit is contained in:
Tinmarino
2020-08-12 10:35:40 -04:00
parent 11337f5b34
commit 4431caf7ff
7 changed files with 117 additions and 16 deletions

View File

@@ -343,8 +343,8 @@ endfunction
" Populate local variable <- user & default
" Called: s:vimwiki#vars#init
function! s:populate_wikilocal_options() abort
" Dev: if type is dict,
" -- the default dict gets extended and not replaced: keys are not deleted
" TODO mutualise the g:vimwiki loop and the wiki_list
" -- after tests on specific cases (format_tag and list_margin)
" Init local variable container
let g:vimwiki_wikilocal_vars = []
@@ -415,8 +415,12 @@ function! s:populate_wikilocal_options() abort
if exists('g:vimwiki_'.key)
" Check type
call s:check_users_value(key, g:vimwiki_{key}, default_values[key], 1)
" Update if dict
if default_values[key]['type'] == type({})
" List margin
if key ==# 'list_margin'
let s:margin_set_by_user = 1
endif
" Extend Tag format
if key ==# 'tag_format'
let default_wiki_settings[key] = default_values[key].default
call extend(default_wiki_settings[key], g:vimwiki_{key})
" Set if other var
@@ -433,16 +437,17 @@ function! s:populate_wikilocal_options() abort
for users_wiki_settings in g:vimwiki_list
let new_wiki_settings = {}
for key in keys(default_values)
" Key present
if has_key(users_wiki_settings, key)
call s:check_users_value(key, users_wiki_settings[key], default_values[key], 0)
" Set list margin
if key ==# 'list_margin'
let s:margin_set_by_user = 1
endif
" Update if dict
if default_values[key]['type'] == type({})
" Extend Tag format
if key ==# 'tag_format'
let new_wiki_settings[key] = extend({}, default_values[key].default)
let new_wiki_settings[key] = extend(new_wiki_settings.key, users_wiki_settings[key])
" Set if other var
let new_wiki_settings[key] = extend(new_wiki_settings[key], users_wiki_settings[key])
else
let new_wiki_settings[key] = users_wiki_settings[key]
endif