Avoid empty string keys to prevent Vim 7 error

Closes https://github.com/tpope/vim-fugitive/issues/1113
This commit is contained in:
Tim Pope
2020-09-24 03:30:53 -04:00
parent 511d3035d4
commit 4824b5b3fe

View File

@@ -551,9 +551,9 @@ function! fugitive#Config(...) abort
let dir = a:1 let dir = a:1
endif endif
let name = substitute(name, '^[^.]\+\|[^.]\+$', '\L&', 'g') let name = substitute(name, '^[^.]\+\|[^.]\+$', '\L&', 'g')
let key = len(dir) ? dir : '_' let dir_key = len(dir) ? dir : '_'
if has_key(s:config, key) && s:config[key][0] ==# s:ConfigTimestamps(dir, s:config[key][1]) if has_key(s:config, dir_key) && s:config[dir_key][0] ==# s:ConfigTimestamps(dir, s:config[dir_key][1])
let dict = s:config[key][1] let dict = s:config[dir_key][1]
else else
let dict = {} let dict = {}
let [lines, message, exec_error] = s:NullError([dir, 'config', '--list', '-z']) let [lines, message, exec_error] = s:NullError([dir, 'config', '--list', '-z'])
@@ -571,7 +571,7 @@ function! fugitive#Config(...) abort
call add(dict[key], strpart(line, len(key) + 1)) call add(dict[key], strpart(line, len(key) + 1))
endif endif
endfor endfor
let s:config[dir] = [s:ConfigTimestamps(dir, dict), dict] let s:config[dir_key] = [s:ConfigTimestamps(dir, dict), dict]
lockvar! dict lockvar! dict
endif endif
return len(name) ? get(get(dict, name, []), 0, '') : dict return len(name) ? get(get(dict, name, []), 0, '') : dict
@@ -2639,14 +2639,15 @@ endfunction
let s:aliases = {} let s:aliases = {}
function! s:Aliases(dir) abort function! s:Aliases(dir) abort
if !has_key(s:aliases, a:dir) let dir_key = len(a:dir) ? a:dir : '_'
let s:aliases[a:dir] = {} if !has_key(s:aliases, dir_key)
let s:aliases[dir_key] = {}
let lines = s:NullError([a:dir, 'config', '-z', '--get-regexp', '^alias[.]'])[0] let lines = s:NullError([a:dir, 'config', '-z', '--get-regexp', '^alias[.]'])[0]
for line in lines for line in lines
let s:aliases[a:dir][matchstr(line, '\.\zs.\{-}\ze\n')] = matchstr(line, '\n\zs.*') let s:aliases[dir_key][matchstr(line, '\.\zs.\{-}\ze\n')] = matchstr(line, '\n\zs.*')
endfor endfor
endif endif
return s:aliases[a:dir] return s:aliases[dir_key]
endfunction endfunction
function! fugitive#Complete(lead, ...) abort function! fugitive#Complete(lead, ...) abort