add heredoc support for sh mode
This commit is contained in:
parent
3b85ddfa05
commit
a52b30317b
1 changed files with 56 additions and 0 deletions
|
|
@ -99,6 +99,62 @@ var ShHighlightRules = function() {
|
||||||
}, {
|
}, {
|
||||||
defaultToken: "string"
|
defaultToken: "string"
|
||||||
}]
|
}]
|
||||||
|
}, {
|
||||||
|
stateName: "heredoc",
|
||||||
|
onMatch : function(value, currentState, stack) {
|
||||||
|
var next = value[2] == '-' ? "indentedHeredoc" : "heredoc";
|
||||||
|
var tokens = value.split(this.splitRegex);
|
||||||
|
stack.push(next, tokens[4]);
|
||||||
|
return [
|
||||||
|
{type:"constant", value: tokens[1]},
|
||||||
|
{type:"text", value: tokens[2]},
|
||||||
|
{type:"string", value: tokens[3]},
|
||||||
|
{type:"support.class", value: tokens[4]},
|
||||||
|
{type:"string", value: tokens[5]}
|
||||||
|
];
|
||||||
|
},
|
||||||
|
regex : "(<<-?)(\\s*)(['\"`]?)([\\w\-]+)(['\"`]?)",
|
||||||
|
rules: {
|
||||||
|
heredoc: [{
|
||||||
|
onMatch: function(value, currentState, stack) {
|
||||||
|
if (value === stack[1]) {
|
||||||
|
stack.shift();
|
||||||
|
stack.shift();
|
||||||
|
this.next = stack[0] || "start";
|
||||||
|
return "support.class";
|
||||||
|
}
|
||||||
|
this.next = "";
|
||||||
|
return "string";
|
||||||
|
},
|
||||||
|
regex: ".*$",
|
||||||
|
next: "start"
|
||||||
|
}],
|
||||||
|
indentedHeredoc: [{
|
||||||
|
token: "string",
|
||||||
|
regex: "^ +"
|
||||||
|
}, {
|
||||||
|
onMatch: function(value, currentState, stack) {
|
||||||
|
if (value === stack[1]) {
|
||||||
|
stack.shift();
|
||||||
|
stack.shift();
|
||||||
|
this.next = stack[0] || "start";
|
||||||
|
return "support.class";
|
||||||
|
}
|
||||||
|
this.next = "";
|
||||||
|
return "string";
|
||||||
|
},
|
||||||
|
regex: ".*$",
|
||||||
|
next: "start"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
regex : "$",
|
||||||
|
token : "empty",
|
||||||
|
next : function(currentState, stack) {
|
||||||
|
if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc")
|
||||||
|
return stack[0];
|
||||||
|
return currentState;
|
||||||
|
}
|
||||||
}, {
|
}, {
|
||||||
token : "variable.language",
|
token : "variable.language",
|
||||||
regex : builtinVariable
|
regex : builtinVariable
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue