runtime(vim): cannot jump to :colorscheme files
Problem: cannot jump to :colorscheme files Solution: Let runtime/autoload/vim.vim handle :colorscheme lines closes: #17971 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
397b9da29d
commit
487dd1716a
@ -1,5 +1,16 @@
|
||||
vim9script
|
||||
|
||||
# Language: Vim9 script
|
||||
# Contributers: @lacygoill
|
||||
# Shane-XB-Qian
|
||||
# Last Change: 2025 Aug 12
|
||||
#
|
||||
# Vim Script to handle
|
||||
# :import, :packadd and :colorscheme
|
||||
# lines and allows to easily jump to it using gf
|
||||
#
|
||||
# see runtime/ftplugin/vim.vim
|
||||
|
||||
# Interface {{{1
|
||||
export def Find(editcmd: string) #{{{2
|
||||
var curline: string = getline('.')
|
||||
@ -9,6 +20,11 @@ export def Find(editcmd: string) #{{{2
|
||||
return
|
||||
endif
|
||||
|
||||
if curline =~ '^\s*\%(:\s*\)\=colo\%[rscheme]\s'
|
||||
HandleColoLine(editcmd, curline)
|
||||
return
|
||||
endif
|
||||
|
||||
if curline =~ '^\s*\%(:\s*\)\=import\s'
|
||||
HandleImportLine(editcmd, curline)
|
||||
return
|
||||
@ -51,6 +67,30 @@ def HandlePackaddLine(editcmd: string, curline: string) #{{{2
|
||||
endif
|
||||
enddef
|
||||
|
||||
def HandleColoLine(editcmd: string, curline: string) #{{{2
|
||||
var pat: string = '^\s*colo\%[rscheme]\s\+\zs\S\+$'
|
||||
var colo: string = curline->matchstr(pat)
|
||||
|
||||
if colo == ''
|
||||
try
|
||||
execute 'normal! ' .. editcmd .. 'zv'
|
||||
catch
|
||||
Error(v:exception)
|
||||
return
|
||||
endtry
|
||||
else
|
||||
var split: string = editcmd[0] == 'g' ? 'edit' : editcmd[1] == 'g' ? 'tabedit' : 'split'
|
||||
var files: list<string> = getcompletion($'colors/{colo}', 'runtime')
|
||||
->map((_, fname: string) => fname->findfile(&rtp)->fnamemodify(':p'))
|
||||
->filter((_, path: string): bool => filereadable(path))
|
||||
if empty(files)
|
||||
echo 'Could not find any colorscheme file for ' .. string(colo)
|
||||
return
|
||||
endif
|
||||
files->Open(split)
|
||||
endif
|
||||
enddef
|
||||
|
||||
def HandleImportLine(editcmd: string, curline: string) #{{{2
|
||||
var fname: string
|
||||
var import_cmd: string = '^\s*import\s\+\%(autoload\s\+\)\='
|
||||
@ -132,3 +172,5 @@ def Error(msg: string) #{{{2
|
||||
echomsg msg
|
||||
echohl NONE
|
||||
enddef
|
||||
|
||||
# vim: sw=4 et
|
||||
|
Reference in New Issue
Block a user