From 75b494845198159ec5c530150dd861ae23d5157e Mon Sep 17 00:00:00 2001 From: richo Date: Wed, 28 Mar 2012 23:16:34 +1100 Subject: [PATCH 1/4] Add support for file descriptors --- lib/ace/mode/sh_highlight_rules.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/ace/mode/sh_highlight_rules.js b/lib/ace/mode/sh_highlight_rules.js index 14632c44..5551e766 100644 --- a/lib/ace/mode/sh_highlight_rules.js +++ b/lib/ace/mode/sh_highlight_rules.js @@ -71,6 +71,7 @@ var ShHighlightRules = function() { var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var fileDescriptor = "(?:&" + intPart + ")"; this.$rules = { "start" : [ { @@ -79,6 +80,9 @@ var ShHighlightRules = function() { }, { token : "string", // " string regex : '"(?:[^\\\\]|\\\\.)*?"' + }, { + token : "support.function", + regex : fileDescriptor }, { token : "string", // ' string regex : "'(?:[^\\\\]|\\\\.)*?'" From d1303f41dabef5f504dbf98a98cb0937c99d6ae9 Mon Sep 17 00:00:00 2001 From: richo Date: Wed, 28 Mar 2012 23:43:26 +1100 Subject: [PATCH 2/4] Correctly hilight variables --- lib/ace/mode/sh_highlight_rules.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/ace/mode/sh_highlight_rules.js b/lib/ace/mode/sh_highlight_rules.js index 5551e766..2cf14fbb 100644 --- a/lib/ace/mode/sh_highlight_rules.js +++ b/lib/ace/mode/sh_highlight_rules.js @@ -73,6 +73,10 @@ var ShHighlightRules = function() { var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; var fileDescriptor = "(?:&" + intPart + ")"; + var variableName = "[a-zA-Z][a-zA-Z0-9_]*"; + + var variable = "(?:(?:\\$" + variableName + ")|(?:" + variableName + "=))"; + this.$rules = { "start" : [ { token : "comment", @@ -80,6 +84,9 @@ var ShHighlightRules = function() { }, { token : "string", // " string regex : '"(?:[^\\\\]|\\\\.)*?"' + }, { + token : "variable", + regex : variable }, { token : "support.function", regex : fileDescriptor From 99702e750572664efc0d8807d47fcb77158024a5 Mon Sep 17 00:00:00 2001 From: richo Date: Wed, 28 Mar 2012 23:52:43 +1100 Subject: [PATCH 3/4] Amend language variable support --- lib/ace/mode/sh_highlight_rules.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/ace/mode/sh_highlight_rules.js b/lib/ace/mode/sh_highlight_rules.js index 2cf14fbb..ec82c74f 100644 --- a/lib/ace/mode/sh_highlight_rules.js +++ b/lib/ace/mode/sh_highlight_rules.js @@ -58,11 +58,6 @@ var ShHighlightRules = function() { ).split('|') ); - var builtinVariables = lang.arrayToMap( - // TODO - ('$?|$$|$!|$SHLVL').split('|') - ); - var integer = "(?:(?:[1-9]\\d*)|(?:0))"; // var integer = "(?:" + decimalInteger + ")"; @@ -74,9 +69,10 @@ var ShHighlightRules = function() { var fileDescriptor = "(?:&" + intPart + ")"; var variableName = "[a-zA-Z][a-zA-Z0-9_]*"; - var variable = "(?:(?:\\$" + variableName + ")|(?:" + variableName + "=))"; + var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; + this.$rules = { "start" : [ { token : "comment", @@ -84,6 +80,9 @@ var ShHighlightRules = function() { }, { token : "string", // " string regex : '"(?:[^\\\\]|\\\\.)*?"' + }, { + token : "variable.language", + regex : builtinVariable }, { token : "variable", regex : variable @@ -105,8 +104,6 @@ var ShHighlightRules = function() { return "keyword"; else if (languageConstructs.hasOwnProperty(value)) return "constant.language"; - else if (builtinVariables.hasOwnProperty(value)) - return "support.function"; else if (value == "debugger") return "invalid.deprecated"; else From 66287085fd7da434b2e4a07adbe6d8364fe70f51 Mon Sep 17 00:00:00 2001 From: richo Date: Thu, 29 Mar 2012 09:50:18 +1100 Subject: [PATCH 4/4] Hilight function definitions --- lib/ace/mode/sh_highlight_rules.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/ace/mode/sh_highlight_rules.js b/lib/ace/mode/sh_highlight_rules.js index ec82c74f..bd0b4681 100644 --- a/lib/ace/mode/sh_highlight_rules.js +++ b/lib/ace/mode/sh_highlight_rules.js @@ -73,6 +73,8 @@ var ShHighlightRules = function() { var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; + var func = "(?:" + variableName + "\\s*\\(\\))"; + this.$rules = { "start" : [ { token : "comment", @@ -86,6 +88,9 @@ var ShHighlightRules = function() { }, { token : "variable", regex : variable + }, { + token : "support.function", + regex : func, }, { token : "support.function", regex : fileDescriptor