New highligher for Terraform

- primitives like bool, number and string
- basic interpolation syntax support
- some keywords
This commit is contained in:
cn 2017-04-10 12:53:50 +02:00
parent a3c24a4c8c
commit 4a2f8009f2
2 changed files with 135 additions and 0 deletions

View File

@ -1037,3 +1037,9 @@
Docker
*Dockerfile
-syntax dockerfile
Terraform
*.tf
-autoindent
-syntax terraform
-c_comment

129
terraform.jsf Normal file
View File

@ -0,0 +1,129 @@
# JOE syntax highlight file for Terraform (or "HashiCorp configuration language")
=Idle
=Comment green
=CommentLabel bold green
=Constant cyan
=Escape bold cyan
=Bad bold red
=Keyword fg_310 # brown
=Interpolate magenta
=InterpolateVar bold magenta
:idle Idle
* idle
"#" line_comment recolor=-1
"/" maybe_comment
"0-9" number recolor=-1
"\"" string recolor=-1
"a-zA-Z_" ident buffer
:line_comment Comment
* line_comment
"\n" idle
:maybe_comment Idle
* idle noeat
"*" comment recolor=-2
:comment Comment
* comment
# might be TODO label
"BFHNTX" comment noeat call=.comment_todo()
"*" maybe_end_comment
:maybe_end_comment Comment
* comment noeat
"/" idle
"*" maybe_end_comment
:number Constant
* idle noeat
"0-9" number
:string Constant
* string
"$" maybe_interpolate
"\"" idle
:maybe_interpolate Constant
* idle noeat
"{" interpolate recolor=-2
:interpolate Interpolate
* interpolate
"\"" interpolate_string recolor=-1
"0-9" interpolate_number recolor=-1
"*" interpolate_star recolor=-1
"a-zA-Z" interpolate_ident buffer
"}" string
:interpolate_string Constant
* interpolate_string
"\"" interpolate
:interpolate_number Constant
* interpolate noeat
"0-9" interpolate_number
:interpolate_star Constant
* interpolate noeat
:interpolate_ident Interpolate
* interpolate noeat strings
"count" var
"data" var
"element" func
"module" var
"path" var
"self" var
# "terraform" var
"var" var
done
"a-zA-Z" interpolate_ident
:var InterpolateVar
* interpolate noeat
:func InterpolateVar
* interpolate noeat
:ident Idle
* idle noeat strings
"false" bool
"module" kw
"resource" kw
"true" bool
done
"a-zA-Z_" ident
:kw Keyword
* idle noeat
:bool Constant
* idle noeat
.subr comment_todo
# initial state
:comment_todo_init Comment
* comment_todo_guess buffer
# highlight common TODO labels
:comment_todo_guess Comment
* comment_todo_unknown noeat strings
"BUG" comment_todo
"FIXME" comment_todo
"HACK" comment_todo
"NOTE" comment_todo
"TODO" comment_todo
"XXX" comment_todo
done
"A-Z" comment_todo_guess
:comment_todo_unknown Comment
* NULL noeat return
:comment_todo CommentLabel
* NULL noeat return
.end