Env: prefer shortest variable name
If several environment variables point to the same directory, prefer the one with the shortest name. References #197.
This commit is contained in:
parent
c621e375a1
commit
de965726eb
|
@ -486,7 +486,7 @@ function! s:filter_oldfiles(path_prefix, path_format) abort
|
||||||
if get(g:, 'startify_use_env')
|
if get(g:, 'startify_use_env')
|
||||||
call s:init_env()
|
call s:init_env()
|
||||||
for i in range(len(oldfiles))
|
for i in range(len(oldfiles))
|
||||||
for [k,v] in s:env_by_len
|
for [k,v] in s:env
|
||||||
let p = oldfiles[i][1]
|
let p = oldfiles[i][1]
|
||||||
if !stridx(tolower(p), tolower(v))
|
if !stridx(tolower(p), tolower(v))
|
||||||
let oldfiles[i][1] = printf('$%s%s', k, p[len(v):])
|
let oldfiles[i][1] = printf('$%s%s', k, p[len(v):])
|
||||||
|
@ -795,14 +795,17 @@ endfunction
|
||||||
|
|
||||||
" Function: s:init_env {{{1
|
" Function: s:init_env {{{1
|
||||||
function! s:init_env()
|
function! s:init_env()
|
||||||
let env = []
|
let s:env = []
|
||||||
let ignore = { 'PWD': 1, 'OLDPWD': 1 }
|
let ignore = { 'PWD': 1, 'OLDPWD': 1 }
|
||||||
|
|
||||||
function! s:get_env()
|
function! s:get_env()
|
||||||
silent execute "normal! :return $\<c-a>')\<c-b>\<c-right>\<right>\<del>split('\<cr>"
|
silent execute "normal! :return $\<c-a>')\<c-b>\<c-right>\<right>\<del>split('\<cr>"
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:compare(foo, bar)
|
function! s:compare_by_key_len(foo, bar)
|
||||||
|
return len(a:foo[0]) - len(a:bar[0])
|
||||||
|
endfunction
|
||||||
|
function! s:compare_by_val_len(foo, bar)
|
||||||
return len(a:bar[1]) - len(a:foo[1])
|
return len(a:bar[1]) - len(a:foo[1])
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
@ -813,8 +816,9 @@ function! s:init_env()
|
||||||
\ || len(k) > len(v)
|
\ || len(k) > len(v)
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
call insert(env, [k,v], 0)
|
call insert(s:env, [k,v], 0)
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
let s:env_by_len = sort(env, 's:compare')
|
let s:env = sort(s:env, 's:compare_by_key_len')
|
||||||
|
let s:env = sort(s:env, 's:compare_by_val_len')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
Loading…
Reference in a new issue