# PowerShell syntax highlighting for Joe's Own Editor # Oskar Liljeblad , 2014-02-11 # # PowerShell is the poor man's[1] replacement for a real shell such as Bash. # [1] Someone who has to use Windows for whatever reason. # # Reference: http://www.microsoft.com/en-us/download/details.aspx?id=36389 # Status: # 1 100% # 2.1 100% # 2.2.1 100% except signature support # 2.2.2 100% # 2.2.3 100% except requires support # 2.2.4 100% # 2.3.1 100% # 2.3.2 100% except automatic variables # 2.3.3 100% no coloring # 2.3.4 100% no coloring # 2.3.5 100% no coloring # 2.3.6 100% =Idle =Ident =Comment =Constant =Number +Constant =Boolean +Constant =String +Constant =StringEscape +Escape =StringVariable +StringEscape =Keyword =Type =Operator +Keyword =Statement +Keyword =Structure +Statement =Conditional +Statement =Loop +Statement =Variable +DefinedIdent =VariableEscape +Escape =ParamKey +Attr +Operator :idle Idle * idle "#" comment recolor=-1 "$" var recolor=-1 mark "@" var_array recolor=-1 "<" idle1 "[" typespec "\"" string_dq recolor=-1 "'" string_sq recolor=-1 "@" idle2 "a-zA-Z_" ident buffer "-" param recolor=-1 :idle1 Idle * idle noeat "#" delim_comment recolor=-2 :idle2 Idle * idle noeat "\"" herestr_dq recolor=-2 "'" herestr_sq recolor=-2 :comment Comment comment * comment "BFHNTX" comment noeat call=comment_todo.comment_todo() "\r\n" idle :var_array Variable * idle noeat "$?^" idle mark "a-zA-Z_" var_name :var Variable * idle noeat "{" var_brack "$?^" idle "a-zA-Z_" var_name buffer :var_name Variable * idle noeat recolor=-1 istrings "true" bool recolormark markend "false" bool recolormark markend "null" kw recolormark markend done "a-zA-Z0-9_:?" var_name :bool Boolean * idle :var_brack Variable * var_brack "`" var_escape recolor=-1 "}" idle :var_escape VariableEscape * var_brack :delim_comment Comment comment * delim_comment "BFHNTX" delim_comment noeat call=comment_todo.comment_todo() "#" delim_comment1 :delim_comment1 Comment comment * delim_comment noeat ">" idle :string_dq String string * string_dq "\"\n" idle "$" string_dq_subst recolor=-1 "`" string_dq_esc recolor=-1 :string_dq_subst StringVariable string * string_dq noeat recolor=-2 "a-zA-Z_" string_dq_subst_name "{" string_dq_subst_brack "(" string_dq_subst_parens "`" string_dq_subst_escape recolor=-1 :string_dq_subst_name StringVariable string * string_dq recolor=-1 noeat "a-zA-Z0-9_:" string_dq_subst_name "`" string_dq_subst_escape recolor=-1 :string_dq_subst_escape VariableEscape string * string_dq_subst_name :string_dq_subst_brack Variable string * string_dq_subst_brack "}" string_dq :string_dq_subst_parens Variable string * string_dq_sustr_parens ")" string_dq :string_sq String string * string_sq "\'\n" idle :string_dq_esc StringEscape string * string_dq :string_sq_esc StringEscape string * string_sq :herestr_dq String string * herestr_dq "\"" herestr_dq1 "$" herestr_dq_subst recolor=-1 :herestr_dq1 String string * herestr_dq noeat "@" idle :herestr_dq_subst Variable string * herestr_dq noeat recolor=-2 "a-zA-Z_" herestr_dq_subst_name "(" herestr_dq_subst_parens "`" herestr_dq_subst_escape recolor=-1 :herestr_dq_subst_name Variable string * herestr_dq recolor=-1 noeat "a-zA-Z0-9_:" herestr_dq_subst_name "`" herestr_dq_subst_escape recolor=-1 :herestr_dq_subst_escape VariableEscape string * herestr_dq_subst_name :herestr_dq_subst_parens Variable string * herestr_dq_subst_parens ")" herestr_dq :herestr_sq String string * herestr_sq "\'" herestr_sq1 :herestr_sq1 String string * herestr_sq noeat "@" idle :typespec_start Idle * idle noeat "\s" typespec_start "\i.:" typespec noeat :typespec Type * idle noeat "\i.:\s" typespec "[" typespec_brack :typespec_brack Type * typespec noeat "\s" typespec_brack "]" typespec :param ParamKey * after_param noeat istrings "-and" oper "-band" oper "-bnot" oper "-bor" oper "-bxor" oper "-not" oper "-or" oper "-xor" oper "-f" oper "-as" oper "-ccontains" oper "-ceq" oper "-cge" oper "-cgt" oper "-cle" oper "-clike" oper "-clt" oper "-cmatch" oper "-cne" oper "-cnotcontains" oper "-cnotlike" oper "-cnotmatch" oper "-contains" oper "-creplace" oper "-csplit" oper "-eq" oper "-ge" oper "-gt" oper "-icontains" oper "-ieq" oper "-ige" oper "-igt" oper "-ile" oper "-ilike" oper "-ilt" oper "-imatch" oper "-in" oper "-ine" oper "-inotcontains" oper "-inotlike" oper "-inotmatch" oper "-ireplace" oper "-is" oper "-isnot" oper "-isplit" oper "-join" oper "-le" oper "-like" oper "-lt" oper "-match" oper "-ne" oper "-notcontains" oper "-notin" oper "-notlike" oper "-notmatch" oper "-replace" oper "-shl" oper "-shr" oper "-split" oper done "a-zA-Z_" param :after_param Ident * herestr_noq noeat " \t" after_param # Unquoted strings (after -parameter key) :herestr_noq String string * idle noeat " \t\r\n" idle recolor=-1 "\i" herestr_noq # After an operator, we do not assume what follows is an unquoted string. :oper Operator * idle noeat :ident Ident * idle noeat istrings "begin" kw "break" loop "catch" kw "class" struct "continue" loop "data" kw "define" kw "do" loop "dynamicparam" struct "else" cond "elseif" cond "end" kw "exit" stmt "filter" kw "finally" kw "for" loop "foreach" loop "from" kw "function" struct "if" cond "in" kw "inlinescript" kw "parallel" kw "param" struct "process" kw "return" stmt "switch" cond "throw" kw "trap" kw "try" kw "until" loop "using" kw "var" kw "while" loop "workflow" kw done "a-zA-Z_\-" ident :kw Keyword * idle noeat :loop Loop * idle noeat :cond Conditional * idle noeat :stmt Statement * idle noeat :struct Structure * idle noeat