Simplify getting and setting buffer variables

This also avoids the getbufvar(bufnr, '') pattern which is subject to a
Vim bug in certain versions.

Closes #691.
This commit is contained in:
Andy Stewart
2020-04-03 14:50:15 +01:00
parent 9cdb90b1e1
commit b7db78b258

View File

@@ -9,25 +9,18 @@ endfunction
function! gitgutter#utility#setbufvar(buffer, varname, val) function! gitgutter#utility#setbufvar(buffer, varname, val)
let buffer = +a:buffer let buffer = +a:buffer
" Default value for getbufvar() was introduced in Vim 7.3.831. " Default value for getbufvar() was introduced in Vim 7.3.831.
let bvars = getbufvar(buffer, '') let ggvars = getbufvar(buffer, 'gitgutter')
if empty(bvars) if type(ggvars) == type('')
let bvars = {} let ggvars = {}
endif call setbufvar(buffer, 'gitgutter', ggvars)
let dict = get(bvars, 'gitgutter', {})
let needs_setting = empty(dict)
let dict[a:varname] = a:val
if needs_setting
call setbufvar(buffer, 'gitgutter', dict)
endif endif
let ggvars[a:varname] = a:val
endfunction endfunction
function! gitgutter#utility#getbufvar(buffer, varname, ...) function! gitgutter#utility#getbufvar(buffer, varname, ...)
let bvars = getbufvar(a:buffer, '') let ggvars = getbufvar(a:buffer, 'gitgutter')
if !empty(bvars) if type(ggvars) == type({}) && has_key(ggvars, a:varname)
let dict = get(bvars, 'gitgutter', {}) return ggvars[a:varname]
if has_key(dict, a:varname)
return dict[a:varname]
endif
endif endif
if a:0 if a:0
return a:1 return a:1