runetime(vim): gf maybe hang and fail
* searching'**' maybe terrible slow * searching '**/plugin/' maybe fail * the pattern for the :packadd/:import/:colorscheme did not consistently check for a colon, so always use '\%(:\s*\)\=' before the actual ex command While at it rename the generic name vim.vim to vimgoto.vim as this more clearly states what this script is for. Signed-off-by: Shane-XB-Qian <shane.qian@foxmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
487dd1716a
commit
639d93fc0e
@ -39,7 +39,7 @@ enddef
|
||||
#}}}1
|
||||
# Core {{{1
|
||||
def HandlePackaddLine(editcmd: string, curline: string) #{{{2
|
||||
var pat: string = '^\s*packadd!\=\s\+\zs\S\+$'
|
||||
var pat: string = '^\s*\%(:\s*\)\=packadd!\=\s\+\zs\S\+$'
|
||||
var plugin: string = curline
|
||||
->matchstr(pat)
|
||||
->substitute('^vim-\|\.vim$', '', 'g')
|
||||
@ -53,12 +53,9 @@ def HandlePackaddLine(editcmd: string, curline: string) #{{{2
|
||||
endtry
|
||||
else
|
||||
var split: string = editcmd[0] == 'g' ? 'edit' : editcmd[1] == 'g' ? 'tabedit' : 'split'
|
||||
# In the past, we passed `runtime` to `getcompletion()`, instead of
|
||||
# `cmdline`. But the output was tricky to use, because it contained
|
||||
# paths relative to inconsistent root directories.
|
||||
var files: list<string> = getcompletion($'edit **/plugin/{plugin}.vim', 'cmdline')
|
||||
var files: list<string> = getcompletion($'plugin/{plugin}', 'runtime')
|
||||
->map((_, fname: string) => fname->findfile(&rtp)->fnamemodify(':p'))
|
||||
->filter((_, path: string): bool => filereadable(path))
|
||||
->map((_, fname: string) => fname->fnamemodify(':p'))
|
||||
if empty(files)
|
||||
echo 'Could not find any plugin file for ' .. string(plugin)
|
||||
return
|
||||
@ -68,7 +65,7 @@ def HandlePackaddLine(editcmd: string, curline: string) #{{{2
|
||||
enddef
|
||||
|
||||
def HandleColoLine(editcmd: string, curline: string) #{{{2
|
||||
var pat: string = '^\s*colo\%[rscheme]\s\+\zs\S\+$'
|
||||
var pat: string = '^\s*\%(:\s*\)\=colo\%[rscheme]\s\+\zs\S\+$'
|
||||
var colo: string = curline->matchstr(pat)
|
||||
|
||||
if colo == ''
|
||||
@ -93,7 +90,7 @@ enddef
|
||||
|
||||
def HandleImportLine(editcmd: string, curline: string) #{{{2
|
||||
var fname: string
|
||||
var import_cmd: string = '^\s*import\s\+\%(autoload\s\+\)\='
|
||||
var import_cmd: string = '^\s*\%(:\s*\)\=import\s\+\%(autoload\s\+\)\='
|
||||
var import_alias: string = '\%(\s\+as\s\+\w\+\)\=$'
|
||||
var import_string: string = import_cmd .. '\([''"]\)\zs.*\ze\1' .. import_alias
|
||||
var import_expr: string = import_cmd .. '\zs.*\ze' .. import_alias
|
||||
Reference in New Issue
Block a user