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