]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(sgf): Include sgf syntax script
authorBorys Lykah <lykahb@fastmail.com>
Mon, 1 Jun 2026 20:36:45 +0000 (20:36 +0000)
committerChristian Brabandt <cb@256bit.org>
Mon, 1 Jun 2026 20:36:45 +0000 (20:36 +0000)
closes: #20380

Signed-off-by: Borys Lykah <lykahb@fastmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
.github/MAINTAINERS
runtime/syntax/sgf.vim [new file with mode: 0644]

index 58a8f945626e1ff914b2eb1d19911b0cc1090507..fb7ebddf0c12e7c32907f868c507b236378dab44 100644 (file)
@@ -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 (file)
index 0000000..48ee1ba
--- /dev/null
@@ -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