summaryrefslogtreecommitdiffstats
path: root/syntax/just.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/just.vim')
-rw-r--r--syntax/just.vim128
1 files changed, 128 insertions, 0 deletions
diff --git a/syntax/just.vim b/syntax/just.vim
new file mode 100644
index 00000000..4d6d538e
--- /dev/null
+++ b/syntax/just.vim
@@ -0,0 +1,128 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'just', 'syntax/just.vim')
+ finish
+endif
+
+" Vim syntax file
+" Language: Justfile
+" Maintainer: Noah Bogart <noah.bogart@hey.com>
+" URL: https://github.com/NoahTheDuke/vim-just.git
+" Last Change: 2021 May 19
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let b:current_syntax = 'just'
+syntax sync minlines=20 maxlines=200
+
+syntax match justNoise ","
+
+syntax match justComment "\v#.*$" contains=@Spell
+syntax match justName "[a-zA-Z_][a-zA-Z0-9_-]*" contained
+syntax match justFunction "[a-zA-Z_][a-zA-Z0-9_-]*" contained
+
+syntax region justBacktick start=/`/ skip=/\./ end=/`/ contains=justInterpolation
+syntax region justRawString start=/'/ skip=/\./ end=/'/ contains=justInterpolation
+syntax region justString start=/"/ skip=/\./ end=/"/ contains=justInterpolation
+syntax cluster justAllStrings contains=justBacktick,justRawString,justString
+
+syntax match justAssignmentOperator ":=" contained
+
+syntax match justParameterOperator "=" contained
+syntax match justVariadicOperator "*\|+\|\$" contained
+syntax match justParameter "\v\s\zs%(\*|\+|\$)?[a-zA-Z_][a-zA-Z0-9_-]*\ze\=?" contained contains=justVariadicOperator,justParameterOperator
+
+syntax match justNextLine "\\\n\s*"
+syntax match justRecipeAt "^@" contained
+syntax match justRecipeColon "\v:" contained
+
+syntax region justRecipe
+ \ matchgroup=justRecipeBody start="\v^\@?[a-zA-Z_]((:\=)@!.)*\ze:%(\s|\n)"
+ \ matchgroup=justRecipeDeps end="\v:\zs.*\n"
+ \ contains=justFunction,justRecipeColon
+
+syntax match justRecipeBody "\v^\@?[a-zA-Z_]((:\=)@!.)*\ze:%(\s|\n)"
+ \ contains=justRecipeAt,justRecipeColon,justParameter,justParameterOperator,justVariadicOperator,@justAllStrings,justComment
+
+syntax match justRecipeDeps "\v:[^\=]?.*\n"
+ \ contains=justComment,justFunction,justRecipeColon
+
+syntax match justBoolean "\v(true|false)" contained
+syntax match justKeywords "\v%(export|set)" contained
+
+syntax match justAssignment "\v^[a-zA-Z_][a-zA-Z0-9_-]*\s+:\=" transparent contains=justAssignmentOperator
+
+syntax match justSetKeywords "\v%(dotenv-load|export|positional-arguments|shell)" contained
+syntax match justSetDefinition "\v^set\s+%(dotenv-load|export|positional-arguments)%(\s+:\=\s+%(true|false))?$"
+ \ contains=justSetKeywords,justKeywords,justAssignmentOperator,justBoolean
+ \ transparent
+
+syntax match justSetBraces "\v[\[\]]" contained
+syntax region justSetDefinition
+ \ start="\v^set\s+shell\s+:\=\s+\["
+ \ end="]"
+ \ contains=justSetKeywords,justKeywords,justAssignmentOperator,@justAllStrings,justNoise,justSetBraces
+ \ transparent skipwhite oneline
+
+syntax region justAlias
+ \ matchgroup=justAlias start="\v^alias\ze\s+[a-zA-Z_][a-zA-Z0-9_-]*\s+:\="
+ \ end="$"
+ \ contains=justKeywords,justFunction,justAssignmentOperator
+ \ oneline skipwhite
+
+syntax region justExport
+ \ matchgroup=justExport start="\v^export\ze\s+[a-zA-Z_][a-zA-Z0-9_-]*%(\s+:\=)?"
+ \ end="$"
+ \ contains=justKeywords,justAssignmentOperator
+ \ transparent oneline skipwhite
+
+syntax keyword justConditional if else
+syntax region justConditionalBraces start="\v[^{]\{[^{]" end="}" contained oneline contains=ALLBUT,justConditionalBraces,justBodyText
+
+syntax match justBodyText "[^[:space:]#]\+" contained
+syntax match justLineLeadingSymbol "\v^\s+\zs%(\@|-)" contained
+syntax match justLineContinuation "\\$" contained
+
+syntax region justBody transparent matchgroup=justLineLeadingSymbol start="\v^\s+\zs[@-]"hs=e-1 matchgroup=justBodyText start="\v^\s+\zs[^[:space:]@#-]"hs=e-1 end="\n" skipwhite oneline contains=justInterpolation,justBodyText,justLineLeadingSymbol,justLineContinuation,justComment
+
+syntax region justInterpolation start="{{" end="}}" contained contains=ALLBUT,justInterpolation,justFunction,justBodyText
+
+syntax match justBuiltInFunctionParens "[()]" contained
+syntax match justBuiltInFunctions "\v%(arch|os|os_family|invocation_directory|justfile|justfile_directory|just_executable)\ze\(\)" contains=justBuiltInFunctions
+syntax region justBuiltInFunctions transparent matchgroup=justBuiltInFunctions start="\v%(env_var_or_default|env_var)\ze\(" end=")" oneline contains=@justAllStrings,justBuiltInFunctionParens,justNoise
+
+syntax match justBuiltInFunctionsError "\v%(arch|os|os_family|invocation_directory|justfile|justfile_directory|just_executable)\(.+\)"
+
+syntax match justOperator "\v%(\=\=|!\=|\+)"
+
+highlight default link justAlias Keyword
+highlight default link justAssignmentOperator Operator
+highlight default link justBacktick String
+highlight default link justBodyText Constant
+highlight default link justBoolean Boolean
+highlight default link justBuiltInFunctions Function
+highlight default link justBuiltInFunctionsError Error
+highlight default link justBuiltInFunctionParens Delimiter
+highlight default link justComment Comment
+highlight default link justConditional Conditional
+highlight default link justConditionalBraces Delimiter
+highlight default link justExport Keyword
+highlight default link justFunction Function
+highlight default link justInterpolation Delimiter
+highlight default link justKeywords Keyword
+highlight default link justLineContinuation Special
+highlight default link justLineLeadingSymbol Special
+highlight default link justName Identifier
+highlight default link justNextLine Special
+highlight default link justOperator Operator
+highlight default link justParameter Identifier
+highlight default link justParameterOperator Operator
+highlight default link justRawString String
+highlight default link justRecipe Function
+highlight default link justRecipeAt Special
+highlight default link justRecipeBody Function
+highlight default link justRecipeColon Operator
+highlight default link justSetDefinition Keyword
+highlight default link justSetKeywords Keyword
+highlight default link justString String
+highlight default link justVariadicOperator Operator