Commit: runtime(vim): cannot jump to :colorscheme files

5 views
Skip to first unread message

Christian Brabandt

unread,
Aug 12, 2025, 3:30:14 PMAug 12
to vim...@googlegroups.com
runtime(vim): cannot jump to :colorscheme files

Commit: https://github.com/vim/vim/commit/487dd1716a028efd0cc1bc1b4bfdc53b82688641
Author: Shane-XB-Qian <shane...@foxmail.com>
Date: Tue Aug 12 21:14:58 2025 +0200

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...@foxmail.com>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/autoload/vim.vim b/runtime/autoload/vim.vim
index 8dc14c476..c517b756f 100644
--- a/runtime/autoload/vim.vim
+++ b/runtime/autoload/vim.vim
@@ -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
Reply all
Reply to author
Forward
0 new messages