runtime(sgf): Include sgf syntax script
Commit:
https://github.com/vim/vim/commit/bcb8dacb6d945e5bd9b1ad42cc79c02fdea317ff
Author: Borys Lykah <
lyk...@fastmail.com>
Date: Mon Jun 1 20:36:45 2026 +0000
runtime(sgf): Include sgf syntax script
closes:
https://github.com/vim/vim/issues/20380
Signed-off-by: Borys Lykah <
lyk...@fastmail.com>
Signed-off-by: Doug Kearns <
dougk...@gmail.com>
Signed-off-by: Christian Brabandt <
c...@256bit.org>
diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS
index 58a8f9456..fb7ebddf0 100644
--- a/.github/MAINTAINERS
+++ b/.github/MAINTAINERS
@@ -678,6 +678,7 @@ runtime/syntax/scala.vim @derekwyatt
runtime/syntax/scheme.vim @evhan
runtime/syntax/scss.vim @tpope
runtime/syntax/sed.vim @dkearns
+runtime/syntax/sgf.vim @lykahb
runtime/syntax/shaderslang.vim @mTvare6
runtime/syntax/shared/debversions.vim @jamessan
runtime/syntax/shared/hgcommitDiff.vim @vegerot
diff --git a/runtime/syntax/sgf.vim b/runtime/syntax/sgf.vim
new file mode 100644
index 000000000..48ee1ba89
--- /dev/null
+++ b/runtime/syntax/sgf.vim
@@ -0,0 +1,41 @@
+" Vim syntax file
+" Language: Smart Game Format
+" Maintainer: Borys Lykah
+" Last Change: 2026 May 30
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match sgfDelimiter "[();]"
+
+syn keyword sgfMoveProp B W nextgroup=sgfValue skipwhite
+syn keyword sgfSetupProp AB AE AW PL nextgroup=sgfValue skipwhite
+syn keyword sgfMarkupProp AR CR DD DM FG GB GW HO LB LN MA SL SQ TR UC VW nextgroup=sgfValue skipwhite
+syn keyword sgfRootProp AP CA FF GM ST SZ nextgroup=sgfValue skipwhite
+syn keyword sgfGameInfoProp AN BR BT CP DT EV GC GN HA KM ON OT PB PC PW RE RO RU SO TM US WR WT nextgroup=sgfValue skipwhite
+syn keyword sgfCommentProp C nextgroup=sgfCommentValue skipwhite
+
+syn match sgfProperty "\<[A-Za-z]\+\ze\s*\[" nextgroup=sgfValue skipwhite
+
+syn match sgfEscape "\." contained
+syn region sgfValue contained matchgroup=sgfBracket start="\[" end="\]" skip="\\\|\\]" contains=sgfEscape keepend nextgroup=sgfValue skipwhite
+syn region sgfCommentValue contained matchgroup=sgfBracket start="\[" end="\]" skip="\\\|\\]" contains=sgfEscape,@Spell keepend nextgroup=sgfCommentValue skipwhite
+
+hi def link sgfDelimiter Delimiter
+hi def link sgfMoveProp Statement
+hi def link sgfSetupProp Type
+hi def link sgfMarkupProp Identifier
+hi def link sgfRootProp PreProc
+hi def link sgfGameInfoProp Label
+hi def link sgfCommentProp Comment
+hi def link sgfProperty Identifier
+hi def link sgfBracket Delimiter
+hi def link sgfEscape SpecialChar
+hi def link sgfValue String
+hi def link sgfCommentValue Comment
+
+let b:current_syntax = "sgf"
+
+" vim: ts=8