]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/xmode/modes/shellscript.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / shellscript.xml
index 5d265b750db874494b3f08957d38e82f50128bb3..c3f38b5bf5d93f55dda74bfee6f1b8ba609e53d4 100644 (file)
-<?xml version="1.0"?>\r
-\r
-<!DOCTYPE MODE SYSTEM "xmode.dtd">\r
-\r
-<MODE>\r
-       <PROPS>\r
-               <PROPERTY NAME="lineComment" VALUE="#" />\r
-               <PROPERTY NAME="indentOpenBrackets" VALUE="{" />\r
-               <PROPERTY NAME="indentCloseBrackets" VALUE="}" />\r
-       </PROPS>\r
-       <RULES ESCAPE="\" IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE">\r
-               <!-- Comments -->\r
-               <EOL_SPAN TYPE="COMMENT2">#!</EOL_SPAN>\r
-               <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>\r
-\r
-               <!-- Variables -->\r
-               <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">\r
-                       <BEGIN>${</BEGIN>\r
-                       <END>}</END>\r
-               </SPAN>\r
-\r
-               <MARK_FOLLOWING TYPE="KEYWORD2">$#</MARK_FOLLOWING>\r
-               <MARK_FOLLOWING TYPE="KEYWORD2">$?</MARK_FOLLOWING>\r
-               <MARK_FOLLOWING TYPE="KEYWORD2">$*</MARK_FOLLOWING>\r
-               <MARK_FOLLOWING TYPE="KEYWORD2">$@</MARK_FOLLOWING>\r
-               <MARK_FOLLOWING TYPE="KEYWORD2">$$</MARK_FOLLOWING>\r
-               <MARK_FOLLOWING TYPE="KEYWORD2">$&lt;</MARK_FOLLOWING>\r
-               <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>\r
-               <MARK_PREVIOUS TYPE="KEYWORD2" MATCH_TYPE="OPERATOR">=</MARK_PREVIOUS>\r
-\r
-               <!-- weird stuff -->\r
-               <SPAN TYPE="KEYWORD3" DELEGATE="EXEC">\r
-                       <BEGIN>$((</BEGIN>\r
-                       <END>))</END>\r
-               </SPAN>\r
-               <SPAN TYPE="KEYWORD3" DELEGATE="EXEC">\r
-                       <BEGIN>$(</BEGIN>\r
-                       <END>)</END>\r
-               </SPAN>\r
-               <SPAN TYPE="KEYWORD3" DELEGATE="EXEC">\r
-                       <BEGIN>$[</BEGIN>\r
-                       <END>]</END>\r
-               </SPAN>\r
-               <SPAN TYPE="KEYWORD3" DELEGATE="EXEC">\r
-                       <BEGIN>`</BEGIN>\r
-                       <END>`</END>\r
-               </SPAN>\r
-\r
-               <!-- Literals -->\r
-               <SPAN TYPE="LITERAL1" DELEGATE="LITERAL">\r
-                       <BEGIN>"</BEGIN>\r
-                       <END>"</END>\r
-               </SPAN>\r
-               <SPAN TYPE="LITERAL1">\r
-                       <BEGIN>'</BEGIN>\r
-                       <END>'</END>\r
-               </SPAN>\r
-\r
-               <!-- Readins -->\r
-               <SPAN_REGEXP HASH_CHAR="&lt;&lt;" TYPE="LITERAL1" DELEGATE="LITERAL">\r
-                       <BEGIN><![CDATA[<<[\p{Space}'"]*([\p{Alnum}_]+)[\p{Space}'"]*]]></BEGIN>\r
-                       <END>$1</END>\r
-               </SPAN_REGEXP>\r
-\r
-               <!-- Operators -->\r
-               <SEQ TYPE="OPERATOR">|</SEQ>\r
-               <SEQ TYPE="OPERATOR">&amp;</SEQ>\r
-               <SEQ TYPE="OPERATOR">!</SEQ>\r
-               <SEQ TYPE="OPERATOR">&gt;</SEQ>\r
-               <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
-\r
-               <!-- %jobnumber -->\r
-               <MARK_FOLLOWING TYPE="KEYWORD2">%</MARK_FOLLOWING>\r
-\r
-               <!-- functions -->\r
-               <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>\r
-               <SEQ TYPE="OPERATOR">)</SEQ>\r
-\r
-               <KEYWORDS>\r
-                       <KEYWORD1>if</KEYWORD1>\r
-                       <KEYWORD1>then</KEYWORD1>\r
-                       <KEYWORD1>elif</KEYWORD1>\r
-                       <KEYWORD1>else</KEYWORD1>\r
-                       <KEYWORD1>fi</KEYWORD1>\r
-                       <KEYWORD1>case</KEYWORD1>\r
-                       <KEYWORD1>in</KEYWORD1>\r
-                       <OPERATOR>;;</OPERATOR>\r
-                       <KEYWORD1>esac</KEYWORD1>\r
-                       <KEYWORD1>while</KEYWORD1>\r
-                       <KEYWORD1>for</KEYWORD1>\r
-                       <KEYWORD1>do</KEYWORD1>\r
-                       <KEYWORD1>done</KEYWORD1>\r
-                       <KEYWORD1>continue</KEYWORD1>\r
-\r
-                       <KEYWORD1>local</KEYWORD1>\r
-                       <KEYWORD1>return</KEYWORD1>\r
-               </KEYWORDS>\r
-\r
-               <!-- some of these should be marked OPERATOR -->\r
-               <!-- <SEQ TYPE="NULL">)</SEQ>\r
-               <SEQ TYPE="NULL">(</SEQ>\r
-               <SEQ TYPE="NULL">=</SEQ>\r
-               <SEQ TYPE="NULL">!</SEQ>\r
-               <SEQ TYPE="NULL">&gt;=</SEQ>\r
-               <SEQ TYPE="NULL">&lt;=</SEQ>\r
-               <SEQ TYPE="NULL">+</SEQ>\r
-               <SEQ TYPE="NULL">-</SEQ>\r
-               <SEQ TYPE="NULL">/</SEQ>\r
-               <SEQ TYPE="NULL">*</SEQ>\r
-               <SEQ TYPE="NULL">^</SEQ>\r
-               <SEQ TYPE="NULL">~</SEQ>\r
-               <SEQ TYPE="NULL">}</SEQ>\r
-               <SEQ TYPE="NULL">{</SEQ>\r
-               SEQ TYPE="NULL">.</SEQ\r
-               <SEQ TYPE="NULL">,</SEQ>\r
-               <SEQ TYPE="NULL">;</SEQ>\r
-               <SEQ TYPE="NULL">]</SEQ>\r
-               <SEQ TYPE="NULL">[</SEQ>\r
-               <SEQ TYPE="NULL">?</SEQ>\r
-               <SEQ TYPE="NULL">:</SEQ> -->\r
-       </RULES>\r
-\r
-       <RULES SET="LITERAL" DEFAULT="LITERAL1" ESCAPE="\">\r
-               <!-- Variables -->\r
-               <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">\r
-                       <BEGIN>${</BEGIN>\r
-                       <END>}</END>\r
-               </SPAN>\r
-\r
-               <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>\r
-       </RULES>\r
-\r
-       <RULES SET="EXEC" DEFAULT="KEYWORD3" ESCAPE="\">\r
-               <!-- Variables -->\r
-               <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">\r
-                       <BEGIN>${</BEGIN>\r
-                       <END>}</END>\r
-               </SPAN>\r
-\r
-               <SPAN TYPE="KEYWORD3">\r
-                       <BEGIN>$((</BEGIN>\r
-                       <END>))</END>\r
-               </SPAN>\r
-\r
-               <SPAN TYPE="KEYWORD3">\r
-                       <BEGIN>$(</BEGIN>\r
-                       <END>)</END>\r
-               </SPAN>\r
-\r
-               <SPAN TYPE="KEYWORD3">\r
-                       <BEGIN>$[</BEGIN>\r
-                       <END>]</END>\r
-               </SPAN>\r
-\r
-               <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>\r
-\r
-               <SEQ TYPE="OPERATOR">|</SEQ>\r
-               <SEQ TYPE="OPERATOR">&amp;</SEQ>\r
-               <SEQ TYPE="OPERATOR">!</SEQ>\r
-               <SEQ TYPE="OPERATOR">&gt;</SEQ>\r
-               <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
-       </RULES>\r
-</MODE>\r
+<?xml version="1.0"?>
+
+<!DOCTYPE MODE SYSTEM "xmode.dtd">
+
+<MODE>
+       <PROPS>
+               <PROPERTY NAME="lineComment" VALUE="#" />
+               <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
+               <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
+               <PROPERTY NAME="indentNextLines"
+                       VALUE="^.*(then|do|else|case.*in)\s*(#.*)?$" />
+               <PROPERTY NAME="unindentThisLine"
+                       VALUE="^\s*(fi|else|done|esac|[^(]*\).*)\s*(#.*)?$" />
+               <PROPERTY NAME="unindentNextLines"
+                       VALUE="^\s*(fi|else|done|esac)\s*(#.*)?$" />
+               <!-- 3 possible values for electricKeys may be considered
+                 1. electric enter and the bracket: ")&#xA;"
+                 2. letters ending unindent rules ")iec"
+                 3. all letters ")abcdefghijklmnopqrstuvwxyz"
+                 details: http://jedit.9.n6.nabble.com/jEdit-devel-electric-keys-for-shell-mode-tp4998749.html
+               -->
+               <PROPERTY NAME="electricKeys" VALUE=")abcdefghijklmnopqrstuvwxyz" />
+       </PROPS>
+       <RULES IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE">
+               <!-- Comments -->
+               <EOL_SPAN TYPE="COMMENT2">#!</EOL_SPAN>
+               <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
+
+               <!-- BUG #3594428 (Bash Syntax Highlighting) -->
+               <SPAN TYPE="KEYWORD2" DELEGATE="LITERAL" NO_LINE_BREAK="TRUE">
+                       <BEGIN>${</BEGIN>
+                       <END>}</END>
+               </SPAN>
+
+               <MARK_FOLLOWING TYPE="KEYWORD2">$#</MARK_FOLLOWING>
+               <MARK_FOLLOWING TYPE="KEYWORD2">$?</MARK_FOLLOWING>
+               <MARK_FOLLOWING TYPE="KEYWORD2">$*</MARK_FOLLOWING>
+               <MARK_FOLLOWING TYPE="KEYWORD2">$@</MARK_FOLLOWING>
+               <MARK_FOLLOWING TYPE="KEYWORD2">$$</MARK_FOLLOWING>
+               <MARK_FOLLOWING TYPE="KEYWORD2">$&lt;</MARK_FOLLOWING>
+               <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>
+               <MARK_PREVIOUS TYPE="KEYWORD2" MATCH_TYPE="OPERATOR">=</MARK_PREVIOUS>
+
+               <!-- weird stuff -->
+               <SPAN TYPE="KEYWORD3" DELEGATE="EXEC" ESCAPE="\">
+                       <BEGIN>$((</BEGIN>
+                       <END>))</END>
+               </SPAN>
+               <SPAN TYPE="KEYWORD3" DELEGATE="EXEC" ESCAPE="\">
+                       <BEGIN>$(</BEGIN>
+                       <END>)</END>
+               </SPAN>
+               <SPAN TYPE="KEYWORD3" DELEGATE="EXEC" ESCAPE="\">
+                       <BEGIN>$[</BEGIN>
+                       <END>]</END>
+               </SPAN>
+               <SPAN TYPE="KEYWORD3" DELEGATE="EXEC" ESCAPE="\">
+                       <BEGIN>`</BEGIN>
+                       <END>`</END>
+               </SPAN>
+
+               <!-- Literals -->
+               <SPAN TYPE="LITERAL1" DELEGATE="LITERAL" ESCAPE="\">
+                       <BEGIN>"</BEGIN>
+                       <END>"</END>
+               </SPAN>
+               <SPAN TYPE="LITERAL1">
+                       <BEGIN>'</BEGIN>
+                       <END>'</END>
+               </SPAN>
+
+               <!-- Readins -->
+               <SPAN_REGEXP HASH_CHAR="&lt;&lt;" TYPE="LITERAL1" DELEGATE="LITERAL" ESCAPE="\">
+                       <BEGIN><![CDATA[<<[\p{Space}'"]*([\p{Alnum}_]+)[\p{Space}'"]*]]></BEGIN>
+                       <END AT_LINE_START="TRUE">$1</END>
+               </SPAN_REGEXP>
+
+               <!-- Operators -->
+               <SEQ TYPE="OPERATOR">|</SEQ>
+               <SEQ TYPE="OPERATOR">&amp;</SEQ>
+               <SEQ TYPE="OPERATOR">!</SEQ>
+               <SEQ TYPE="OPERATOR">&gt;</SEQ>
+               <SEQ TYPE="OPERATOR">&lt;</SEQ>
+
+               <!-- %jobnumber -->
+               <MARK_FOLLOWING TYPE="KEYWORD2">%</MARK_FOLLOWING>
+
+               <!-- functions -->
+               <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
+               <SEQ TYPE="OPERATOR">)</SEQ>
+
+               <KEYWORDS>
+                       <KEYWORD1>if</KEYWORD1>
+                       <KEYWORD1>then</KEYWORD1>
+                       <KEYWORD1>elif</KEYWORD1>
+                       <KEYWORD1>else</KEYWORD1>
+                       <KEYWORD1>fi</KEYWORD1>
+                       <KEYWORD1>case</KEYWORD1>
+                       <KEYWORD1>in</KEYWORD1>
+                       <OPERATOR>;;</OPERATOR>
+                       <KEYWORD1>esac</KEYWORD1>
+                       <KEYWORD1>while</KEYWORD1>
+                       <KEYWORD1>for</KEYWORD1>
+                       <KEYWORD1>do</KEYWORD1>
+                       <KEYWORD1>done</KEYWORD1>
+                       <KEYWORD1>continue</KEYWORD1>
+
+                       <KEYWORD1>local</KEYWORD1>
+                       <KEYWORD1>return</KEYWORD1>
+               </KEYWORDS>
+
+               <!-- some of these should be marked OPERATOR -->
+               <!-- <SEQ TYPE="NULL">)</SEQ>
+               <SEQ TYPE="NULL">(</SEQ>
+               <SEQ TYPE="NULL">=</SEQ>
+               <SEQ TYPE="NULL">!</SEQ>
+               <SEQ TYPE="NULL">&gt;=</SEQ>
+               <SEQ TYPE="NULL">&lt;=</SEQ>
+               <SEQ TYPE="NULL">+</SEQ>
+               <SEQ TYPE="NULL">-</SEQ>
+               <SEQ TYPE="NULL">/</SEQ>
+               <SEQ TYPE="NULL">*</SEQ>
+               <SEQ TYPE="NULL">^</SEQ>
+               <SEQ TYPE="NULL">~</SEQ>
+               <SEQ TYPE="NULL">}</SEQ>
+               <SEQ TYPE="NULL">{</SEQ>
+               SEQ TYPE="NULL">.</SEQ
+               <SEQ TYPE="NULL">,</SEQ>
+               <SEQ TYPE="NULL">;</SEQ>
+               <SEQ TYPE="NULL">]</SEQ>
+               <SEQ TYPE="NULL">[</SEQ>
+               <SEQ TYPE="NULL">?</SEQ>
+               <SEQ TYPE="NULL">:</SEQ> -->
+       </RULES>
+
+       <RULES SET="LITERAL" DEFAULT="LITERAL1" ESCAPE="\">
+               <!-- Variables -->
+               <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
+                       <BEGIN>${</BEGIN>
+                       <END>}</END>
+               </SPAN>
+
+               <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>
+       </RULES>
+
+       <RULES SET="EXEC" DEFAULT="KEYWORD3" ESCAPE="\">
+               <!-- Variables -->
+               <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
+                       <BEGIN>${</BEGIN>
+                       <END>}</END>
+               </SPAN>
+
+               <SPAN TYPE="KEYWORD3">
+                       <BEGIN>$((</BEGIN>
+                       <END>))</END>
+               </SPAN>
+
+               <SPAN TYPE="KEYWORD3">
+                       <BEGIN>$(</BEGIN>
+                       <END>)</END>
+               </SPAN>
+
+               <SPAN TYPE="KEYWORD3">
+                       <BEGIN>$[</BEGIN>
+                       <END>]</END>
+               </SPAN>
+
+               <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>
+
+               <SEQ TYPE="OPERATOR">|</SEQ>
+               <SEQ TYPE="OPERATOR">&amp;</SEQ>
+               <SEQ TYPE="OPERATOR">!</SEQ>
+               <SEQ TYPE="OPERATOR">&gt;</SEQ>
+               <SEQ TYPE="OPERATOR">&lt;</SEQ>
+       </RULES>
+</MODE>