summaryrefslogtreecommitdiffstats
path: root/syntax/gomod.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/gomod.vim')
-rw-r--r--syntax/gomod.vim50
1 files changed, 50 insertions, 0 deletions
diff --git a/syntax/gomod.vim b/syntax/gomod.vim
new file mode 100644
index 00000000..51cdfb76
--- /dev/null
+++ b/syntax/gomod.vim
@@ -0,0 +1,50 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1
+
+" gomod.vim: Vim syntax file for go.mod file
+"
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case match
+
+" match keywords
+syntax keyword gomodModule module
+syntax keyword gomodRequire require
+syntax keyword gomodExclude exclude
+syntax keyword gomodReplace replace
+
+" require, exclude and replace can be also grouped into block
+syntax region gomodRequire start='require (' end=')' transparent contains=gomodRequire,gomodVersion
+syntax region gomodExclude start='exclude (' end=')' transparent contains=gomodExclude,gomodVersion
+syntax region gomodReplace start='replace (' end=')' transparent contains=gomodReplace,gomodVersion
+
+" set highlights
+highlight default link gomodModule Keyword
+highlight default link gomodRequire Keyword
+highlight default link gomodExclude Keyword
+highlight default link gomodReplace Keyword
+
+" comments are always in form of // ...
+syntax region gomodComment start="//" end="$" contains=@Spell
+highlight default link gomodComment Comment
+
+" make sure quoted import paths are higlighted
+syntax region gomodString start=+"+ skip=+\\\\\|\\"+ end=+"+
+highlight default link gomodString String
+
+" replace operator is in the form of '=>'
+syntax match gomodReplaceOperator "\v\=\>"
+highlight default link gomodReplaceOperator Operator
+
+
+" highlight semver, note that this is very simple. But it works for now
+syntax match gomodVersion "v\d\+\.\d\+\.\d\+"
+syntax match gomodVersion "v\d\+\.\d\+\.\d\+-\S*"
+syntax match gomodVersion "v\d\+\.\d\+\.\d\++incompatible"
+highlight default link gomodVersion Identifier
+
+let b:current_syntax = "gomod"
+
+endif