mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" Vim syntax file
 | 
						|
" Language:    HCL
 | 
						|
" Maintainer:  Gregory Anders
 | 
						|
" Upstream:    https://github.com/hashivim/vim-terraform
 | 
						|
" Last Change: 2024-09-03
 | 
						|
 | 
						|
if exists('b:current_syntax')
 | 
						|
  finish
 | 
						|
endif
 | 
						|
 | 
						|
syn iskeyword a-z,A-Z,48-57,_,-
 | 
						|
 | 
						|
syn case match
 | 
						|
 | 
						|
" A block is introduced by a type, some number of labels - which are either
 | 
						|
" strings or identifiers - and an opening curly brace.  Match the type.
 | 
						|
syn match hclBlockType /^\s*\zs\K\k*\ze\s\+\(\("\K\k*"\|\K\k*\)\s\+\)*{/
 | 
						|
 | 
						|
" An attribute name is an identifier followed by an equals sign.
 | 
						|
syn match hclAttributeAssignment /\(\K\k*\.\)*\K\k*\s\+=\s/ contains=hclAttributeName
 | 
						|
syn match hclAttributeName /\<\K\k*\>/ contained
 | 
						|
 | 
						|
syn keyword hclValueBool true false
 | 
						|
 | 
						|
syn keyword hclTodo         contained TODO FIXME XXX BUG
 | 
						|
syn region  hclComment      start="/\*" end="\*/" contains=hclTodo,@Spell
 | 
						|
syn region  hclComment      start="#" end="$" contains=hclTodo,@Spell
 | 
						|
syn region  hclComment      start="//" end="$" contains=hclTodo,@Spell
 | 
						|
 | 
						|
""" misc.
 | 
						|
syn match hclValueDec      "\<[0-9]\+\([kKmMgG]b\?\)\?\>"
 | 
						|
syn match hclValueHexaDec  "\<0x[0-9a-f]\+\([kKmMgG]b\?\)\?\>"
 | 
						|
syn match hclBraces        "[\[\]]"
 | 
						|
 | 
						|
""" skip \" and \\ in strings.
 | 
						|
syn region hclValueString   start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=hclStringInterp
 | 
						|
syn region hclStringInterp  matchgroup=hclBraces start=/\(^\|[^$]\)\$\zs{/ end=/}/ contained contains=ALLBUT,hclAttributeName
 | 
						|
syn region hclHereDocText   start=/<<-\?\z([a-z0-9A-Z]\+\)/ end=/^\s*\z1/ contains=hclStringInterp
 | 
						|
 | 
						|
"" Functions.
 | 
						|
syn match hclFunction "[a-z0-9]\+(\@="
 | 
						|
 | 
						|
""" HCL2
 | 
						|
syn keyword hclRepeat         for in
 | 
						|
syn keyword hclConditional    if
 | 
						|
syn keyword hclValueNull      null
 | 
						|
 | 
						|
" enable block folding
 | 
						|
syn region hclBlockBody matchgroup=hclBraces start="{" end="}" fold transparent
 | 
						|
 | 
						|
hi def link hclComment           Comment
 | 
						|
hi def link hclTodo              Todo
 | 
						|
hi def link hclBraces            Delimiter
 | 
						|
hi def link hclAttributeName     Identifier
 | 
						|
hi def link hclBlockType         Type
 | 
						|
hi def link hclValueBool         Boolean
 | 
						|
hi def link hclValueDec          Number
 | 
						|
hi def link hclValueHexaDec      Number
 | 
						|
hi def link hclValueString       String
 | 
						|
hi def link hclHereDocText       String
 | 
						|
hi def link hclFunction          Function
 | 
						|
hi def link hclRepeat            Repeat
 | 
						|
hi def link hclConditional       Conditional
 | 
						|
hi def link hclValueNull         Constant
 | 
						|
 | 
						|
let b:current_syntax = 'hcl'
 |