From 4a2f8009f2ce9b2f47b9a439024d3c463cf36b74 Mon Sep 17 00:00:00 2001 From: cn Date: Mon, 10 Apr 2017 12:53:50 +0200 Subject: [PATCH] New highligher for Terraform - primitives like bool, number and string - basic interpolation syntax support - some keywords --- ftyperc | 6 +++ terraform.jsf | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 terraform.jsf diff --git a/ftyperc b/ftyperc index 777ed1d..4a7f284 100644 --- a/ftyperc +++ b/ftyperc @@ -1037,3 +1037,9 @@ Docker *Dockerfile -syntax dockerfile + + Terraform +*.tf +-autoindent +-syntax terraform +-c_comment diff --git a/terraform.jsf b/terraform.jsf new file mode 100644 index 0000000..02ff43f --- /dev/null +++ b/terraform.jsf @@ -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