This commit is contained in:
Resolver Developers 2011-10-05 14:32:22 +01:00
commit 19ea6a93f3
85 changed files with 1971 additions and 1016 deletions

View file

@ -303,7 +303,7 @@ canon.addCommand({
canon.addCommand({
name: "del",
bindKey: bindKey("Delete", "Delete|Ctrl-D"),
exec: function(env, args, request) { env.editor.removeRight(); }
exec: function(env, args, request) { env.editor.remove("right"); }
});
canon.addCommand({
name: "backspace",
@ -311,16 +311,16 @@ canon.addCommand({
"Ctrl-Backspace|Command-Backspace|Option-Backspace|Shift-Backspace|Backspace",
"Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H"
),
exec: function(env, args, request) { env.editor.removeLeft(); }
exec: function(env, args, request) { env.editor.remove("left"); }
});
canon.addCommand({
name: "removetolinestart",
bindKey: bindKey(null, "Option-Backspace"),
bindKey: bindKey("Alt-Backspace", "Option-Backspace"),
exec: function(env, args, request) { env.editor.removeToLineStart(); }
});
canon.addCommand({
name: "removetolineend",
bindKey: bindKey(null, "Ctrl-K"),
bindKey: bindKey("Alt-Delete", "Ctrl-K"),
exec: function(env, args, request) { env.editor.removeToLineEnd(); }
});
canon.addCommand({
@ -330,7 +330,7 @@ canon.addCommand({
});
canon.addCommand({
name: "removewordright",
bindKey: bindKey(null, "Alt-Delete"),
bindKey: bindKey("Ctrl-Delete", "Alt-Delete"),
exec: function(env, args, request) { env.editor.removeWordRight(); }
});
canon.addCommand({

View file

@ -19,6 +19,13 @@
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
cursor: text;
}
/* setting pointer-events: auto; on node under the mouse, which changes during scroll,
will break mouse wheel scrolling in Safari */
.ace_content * {
pointer-events: none;
}
.ace_composition {
@ -110,8 +117,6 @@
.ace_cursor-layer {
z-index: 4;
cursor: text;
/* setting pointer-events: none; here will break mouse wheel scrolling in Safari */
}
.ace_cursor {
@ -127,11 +132,6 @@
white-space: nowrap;
}
.ace_marker-layer {
cursor: text;
pointer-events: none;
}
.ace_marker-layer .ace_step {
position: absolute;
z-index: 3;
@ -162,8 +162,14 @@
.ace_line .ace_fold {
cursor: pointer;
pointer-events: auto;
color: darkred;
}
.ace_dragging .ace_marker-layer, .ace_dragging .ace_text-layer {
.ace_fold:hover{
background: gold!important;
}
.ace_dragging .ace_content {
cursor: move;
}

View file

@ -230,7 +230,7 @@ var Editor =function(renderer, session) {
this.unsetStyle = function(style) {
this.renderer.unsetStyle(style);
};
this.setFontSize = function(size) {
this.container.style.fontSize = size;
};
@ -269,7 +269,7 @@ var Editor =function(renderer, session) {
});
this.textInput.focus();
};
this.isFocused = function() {
return this.textInput.isFocused();
};
@ -407,7 +407,7 @@ var Editor =function(renderer, session) {
var text = "";
if (!this.selection.isEmpty())
text = this.session.getTextRange(this.getSelectionRange());
this._emit("copy", text);
return text;
};
@ -523,7 +523,7 @@ var Editor =function(renderer, session) {
this.onTextInput = function(text, notPasted) {
if (!notPasted)
this._emit("paste", text);
// In case the text was not pasted and we got only one character, then
// handel it as a command key stroke.
if (notPasted && text.length == 1) {
@ -656,32 +656,24 @@ var Editor =function(renderer, session) {
return this.$modeBehaviours;
};
this.removeRight = function() {
this.remove = function(dir) {
if (this.$readOnly)
return;
if (this.selection.isEmpty()) {
this.selection.selectRight();
if (this.selection.isEmpty()){
if(dir == "left")
this.selection.selectLeft();
else
this.selection.selectRight();
}
this.session.remove(this.getSelectionRange());
this.clearSelection();
};
this.removeLeft = function() {
if (this.$readOnly)
return;
if (this.selection.isEmpty())
this.selection.selectLeft();
var range = this.getSelectionRange();
if (this.getBehavioursEnabled()) {
var session = this.session;
var state = session.getState(range.start.row);
var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);
if (new_range !== false) {
if (new_range)
range = new_range;
}
}
this.session.remove(range);

View file

@ -78,7 +78,7 @@ var CstyleBehaviour = function () {
if (rightChar == '}') {
var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
if (!openBracePos)
return false;
return null;
var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
@ -89,7 +89,6 @@ var CstyleBehaviour = function () {
}
}
}
return false;
});
this.add("braces", "deletion", function (state, action, editor, session, range) {
@ -102,7 +101,6 @@ var CstyleBehaviour = function () {
return range;
}
}
return false;
});
this.add("parens", "insertion", function (state, action, editor, session, text) {
@ -134,7 +132,6 @@ var CstyleBehaviour = function () {
}
}
}
return false;
});
this.add("parens", "deletion", function (state, action, editor, session, range) {
@ -147,7 +144,6 @@ var CstyleBehaviour = function () {
return range;
}
}
return false;
});
this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
@ -166,7 +162,7 @@ var CstyleBehaviour = function () {
// We're escaped.
if (leftChar == '\\') {
return false;
return null;
}
// Find what token we're inside.
@ -205,7 +201,6 @@ var CstyleBehaviour = function () {
}
}
}
return false;
});
this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
@ -218,7 +213,6 @@ var CstyleBehaviour = function () {
return range;
}
}
return false;
});
}

View file

@ -82,7 +82,6 @@ var XmlBehaviour = function () {
}
}
}
return false;
});
}

View file

@ -121,10 +121,13 @@ var c_cppHighlightRules = function() {
token : "keyword.operator",
regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"
}, {
token : "lparen",
token : "punctuation.operator",
regex : "\\?|\\:|\\,|\\;|\\."
}, {
token : "paren.lparen",
regex : "[[({]"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\])}]"
}, {
token : "text",

View file

@ -97,17 +97,8 @@ oop.inherits(Mode, TextMode);
};
this.createWorker = function(session) {
var doc = session.getDocument();
var worker = new WorkerClient(["ace", "pilot"], "worker-coffee.js", "ace/mode/coffee_worker", "Worker");
worker.call("setValue", [doc.getValue()]);
doc.on("change", function(e) {
e.range = {
start: e.data.range.start,
end: e.data.range.end
};
worker.emit("change", e);
});
worker.attachToDocument(session.getDocument());
worker.on("error", function(e) {
session.setAnnotations([e.data]);

View file

@ -148,10 +148,13 @@ define(function(require, exports, module) {
token : "comment",
regex : "#.*"
}, {
token : "lparen",
token : "punctuation.operator",
regex : "\\?|\\:|\\,|\\."
}, {
token : "paren.lparen",
regex : "[({[]"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\]})]"
}, {
token : "keyword.operator",

View file

@ -67,10 +67,13 @@ var CSharpHighlightRules = function() {
token : "keyword.operator",
regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
}, {
token : "lparen",
token : "punctuation.operator",
regex : "\\?|\\:|\\,|\\;|\\."
}, {
token : "paren.lparen",
regex : "[[({]"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\])}]"
}, {
token : "text",

View file

@ -78,17 +78,8 @@ oop.inherits(Mode, TextMode);
};
this.createWorker = function(session) {
var doc = session.getDocument();
var worker = new WorkerClient(["ace", "pilot"], "worker-css.js", "ace/mode/css_worker", "Worker");
worker.call("setValue", [doc.getValue()]);
doc.on("change", function(e) {
e.range = {
start: e.data.range.start,
end: e.data.range.end
};
worker.emit("change", e);
});
worker.attachToDocument(session.getDocument());
worker.on("csslint", function(e) {
var errors = [];

View file

@ -215,14 +215,14 @@ var CssHighlightRules = function() {
var ruleset = lang.copyArray(base_ruleset);
ruleset.unshift({
token : "rparen",
token : "paren.rparen",
regex : "\\}",
next: "start"
});
var media_ruleset = lang.copyArray( base_ruleset );
media_ruleset.unshift({
token : "rparen",
token : "paren.rparen",
regex : "\\}",
next: "media"
});
@ -261,7 +261,7 @@ var CssHighlightRules = function() {
regex : "\\/\\*",
next : "comment"
}, {
token: "lparen",
token: "paren.lparen",
regex: "\\{",
next: "ruleset"
}, {
@ -288,7 +288,7 @@ var CssHighlightRules = function() {
regex : "\\/\\*",
next : "media_comment"
}, {
token: "lparen",
token: "paren.lparen",
regex: "\\{",
next: "media_ruleset"
},{

View file

@ -86,17 +86,17 @@ var HtmlHighlightRules = function() {
}, {
token : "meta.tag",
regex : "[-_a-zA-Z0-9:]+",
next : name + "-attribute-list"
next : name + "embed-attribute-list"
}, {
token: "empty",
regex: "",
next : name + "-attribute-list"
next : name + "embed-attribute-list"
}];
states[name + "-qstring"] = multiLineString("'", name);
states[name + "-qqstring"] = multiLineString("\"", name);
states[name + "-attribute-list"] = [{
states[name + "embed-attribute-list"] = [{
token : "text",
regex : ">",
next : nextState

View file

@ -125,17 +125,8 @@ oop.inherits(Mode, TextMode);
};
this.createWorker = function(session) {
var doc = session.getDocument();
var worker = new WorkerClient(["ace", "pilot"], "worker-javascript.js", "ace/mode/javascript_worker", "JavaScriptWorker");
worker.call("setValue", [doc.getValue()]);
doc.on("change", function(e) {
e.range = {
start: e.data.range.start,
end: e.data.range.end
};
worker.emit("change", e);
});
worker.attachToDocument(session.getDocument());
worker.on("jslint", function(results) {
var errors = [];

View file

@ -46,15 +46,42 @@ var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightR
var JavaScriptHighlightRules = function() {
// see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
var globals = lang.arrayToMap(
// Constructors
("Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" +
// E4X
"Namespace|QName|XML|XMLList|" +
"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
// Errors
"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" +
"SyntaxError|TypeError|URIError|" +
// Non-constructor functions
"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" +
"isNaN|parseFloat|parseInt|" +
// Other
"JSON|Math|" +
// Pseudo
"this|arguments|prototype|window|document"
).split("|")
);
var keywords = lang.arrayToMap(
("break|case|catch|continue|default|delete|do|else|finally|for|function|" +
"if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|" +
"const|yield|import|get|set").split("|")
);
// keywords which can be followed by regular expressions
var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
var deprecated = lang.arrayToMap(
("__parent__|__count__|escape|unescape|with|__proto__").split("|")
);
var definitions = lang.arrayToMap(("const|let|var|function").split("|"));
var buildinConstants = lang.arrayToMap(
("null|Infinity|NaN|undefined").split("|")
);
@ -109,7 +136,7 @@ var JavaScriptHighlightRules = function() {
token : "constant.numeric", // float
regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
}, {
token : ["keyword", "text", "entity.name.function"],
token : ["keyword.definition", "text", "entity.name.function"],
regex : "(function)(\\s+)(" + identifierRe + ")"
}, {
token : "constant.language.boolean",
@ -120,8 +147,12 @@ var JavaScriptHighlightRules = function() {
next : "regex_allowed"
}, {
token : function(value) {
if (value == "this")
if (globals.hasOwnProperty(value))
return "variable.language";
else if (deprecated.hasOwnProperty(value))
return "invalid.deprecated";
else if (definitions.hasOwnProperty(value))
return "keyword.definition";
else if (keywords.hasOwnProperty(value))
return "keyword";
else if (buildinConstants.hasOwnProperty(value))
@ -139,11 +170,15 @@ var JavaScriptHighlightRules = function() {
regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)",
next : "regex_allowed"
}, {
token : "lparen",
token : "punctuation.operator",
regex : "\\?|\\:|\\,|\\;|\\.",
next : "regex_allowed"
}, {
token : "paren.lparen",
regex : "[[({]",
next : "regex_allowed"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\])}]"
}, {
token : "keyword.operator",

View file

@ -67,10 +67,10 @@ var JsonHighlightRules = function() {
token : "invalid.illegal", // comments are not allowed
regex : "\\/\\/.*$"
}, {
token : "lparen",
token : "paren.lparen",
regex : "[[({]"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\])}]"
}, {
token : "text",
@ -84,4 +84,4 @@ var JsonHighlightRules = function() {
oop.inherits(JsonHighlightRules, TextHighlightRules);
exports.JsonHighlightRules = JsonHighlightRules;
});
});

View file

@ -279,10 +279,10 @@ var LuaHighlightRules = function() {
token : "keyword.operator",
regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."
}, {
token : "lparen",
token : "paren.lparen",
regex : "[\\[\\(\\{]"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\]\\)\\}]"
}, {
token : "text",

View file

@ -309,11 +309,11 @@ var OcamlHighlightRules = function() {
regex : "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|="
},
{
token : "lparen",
token : "paren.lparen",
regex : "[[({]"
},
{
token : "rparen",
token : "paren.rparen",
regex : "[\\])}]"
},
{

View file

@ -1004,10 +1004,10 @@ var PhpHighlightRules = function() {
token : "keyword.operator",
regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
}, {
token : "lparen",
token : "paren.lparen",
regex : "[[({]"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\])}]"
}, {
token : "text",

View file

@ -0,0 +1,56 @@
define(function(require, exports, module) {
var oop = require("pilot/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var PowershellHighlightRules = require("ace/mode/powershell_highlight_rules").PowershellHighlightRules;
var MatchingBraceOutdent = require("ace/mode/matching_brace_outdent").MatchingBraceOutdent;
var CstyleBehaviour = require("ace/mode/behaviour/cstyle").CstyleBehaviour;
var Mode = function() {
this.$tokenizer = new Tokenizer(new PowershellHighlightRules().getRules());
this.$outdent = new MatchingBraceOutdent();
this.$behaviour = new CstyleBehaviour();
};
oop.inherits(Mode, TextMode);
(function() {
this.getNextLineIndent = function(state, line, tab) {
var indent = this.$getIndent(line);
var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
var tokens = tokenizedLine.tokens;
var endState = tokenizedLine.state;
if (tokens.length && tokens[tokens.length-1].type == "comment") {
return indent;
}
if (state == "start") {
var match = line.match(/^.*[\{\(\[]\s*$/);
if (match) {
indent += tab;
}
}
return indent;
};
this.checkOutdent = function(state, line, input) {
return this.$outdent.checkOutdent(line, input);
};
this.autoOutdent = function(state, doc, row) {
this.$outdent.autoOutdent(doc, row);
};
this.createWorker = function(session) {
return null;
};
}).call(Mode.prototype);
exports.Mode = Mode;
});

View file

@ -0,0 +1,138 @@
define(function(require, exports, module) {
var oop = require("pilot/oop");
var lang = require("pilot/lang");
var DocCommentHighlightRules = require("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules;
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var PowershellHighlightRules = function() {
var keywords = lang.arrayToMap(
("function|if|else|elseif|switch|while|default|for|do|until|break|continue|" +
"foreach|return|filter|in|trap|throw|param|begin|process|end").split("|")
);
var builtinFunctions = lang.arrayToMap(
("Get-Alias|Import-Alias|New-Alias|Set-Alias|Get-AuthenticodeSignature|Set-AuthenticodeSignature|" +
"Set-Location|Get-ChildItem|Clear-Item|Get-Command|Measure-Command|Trace-Command|" +
"Add-Computer|Checkpoint-Computer|Remove-Computer|Restart-Computer|Restore-Computer|Stop-Computer|" +
"Reset-ComputerMachinePassword|Test-ComputerSecureChannel|Add-Content|Get-Content|Set-Content|Clear-Content|" +
"Get-Command|Invoke-Command|Enable-ComputerRestore|Disable-ComputerRestore|Get-ComputerRestorePoint|Test-Connection|" +
"ConvertFrom-CSV|ConvertTo-CSV|ConvertTo-Html|ConvertTo-Xml|ConvertFrom-SecureString|ConvertTo-SecureString|" +
"Copy-Item|Export-Counter|Get-Counter|Import-Counter|Get-Credential|Get-Culture|" +
"Get-ChildItem|Get-Date|Set-Date|Remove-Item|Compare-Object|Get-Event|" +
"Get-WinEvent|New-Event|Remove-Event|Unregister-Event|Wait-Event|Clear-EventLog|" +
"Get-Eventlog|Limit-EventLog|New-Eventlog|Remove-EventLog|Show-EventLog|Write-EventLog|" +
"Get-EventSubscriber|Register-EngineEvent|Register-ObjectEvent|Register-WmiEvent|Get-ExecutionPolicy|Set-ExecutionPolicy|" +
"Export-Alias|Export-Clixml|Export-Console|Export-Csv|ForEach-Object|Format-Custom|" +
"Format-List|Format-Table|Format-Wide|Export-FormatData|Get-FormatData|Get-Item|" +
"Get-ChildItem|Get-Help|Add-History|Clear-History|Get-History|Invoke-History|" +
"Get-Host|Read-Host|Write-Host|Get-HotFix|Import-Clixml|Import-Csv|" +
"Invoke-Command|Invoke-Expression|Get-Item|Invoke-Item|New-Item|Remove-Item|" +
"Set-Item|Clear-ItemProperty|Copy-ItemProperty|Get-ItemProperty|Move-ItemProperty|New-ItemProperty|" +
"Remove-ItemProperty|Rename-ItemProperty|Set-ItemProperty|Get-Job|Receive-Job|Remove-Job|" +
"Start-Job|Stop-Job|Wait-Job|Stop-Process|Update-List|Get-Location|" +
"Pop-Location|Push-Location|Set-Location|Send-MailMessage|Add-Member|Get-Member|" +
"Move-Item|Compare-Object|Group-Object|Measure-Object|New-Object|Select-Object|" +
"Sort-Object|Where-Object|Out-Default|Out-File|Out-GridView|Out-Host|" +
"Out-Null|Out-Printer|Out-String|Convert-Path|Join-Path|Resolve-Path|" +
"Split-Path|Test-Path|Get-Pfxcertificate|Pop-Location|Push-Location|Get-Process|" +
"Start-Process|Stop-Process|Wait-Process|Enable-PSBreakpoint|Disable-PSBreakpoint|Get-PSBreakpoint|" +
"Set-PSBreakpoint|Remove-PSBreakpoint|Get-PSDrive|New-PSDrive|Remove-PSDrive|Get-PSProvider|" +
"Set-PSdebug|Enter-PSSession|Exit-PSSession|Export-PSSession|Get-PSSession|Import-PSSession|" +
"New-PSSession|Remove-PSSession|Disable-PSSessionConfiguration|Enable-PSSessionConfiguration|Get-PSSessionConfiguration|Register-PSSessionConfiguration|" +
"Set-PSSessionConfiguration|Unregister-PSSessionConfiguration|New-PSSessionOption|Add-PsSnapIn|Get-PsSnapin|Remove-PSSnapin|" +
"Get-Random|Read-Host|Remove-Item|Rename-Item|Rename-ItemProperty|Select-Object|" +
"Select-XML|Send-MailMessage|Get-Service|New-Service|Restart-Service|Resume-Service|" +
"Set-Service|Start-Service|Stop-Service|Suspend-Service|Sort-Object|Start-Sleep|" +
"ConvertFrom-StringData|Select-String|Tee-Object|New-Timespan|Trace-Command|Get-Tracesource|" +
"Set-Tracesource|Start-Transaction|Complete-Transaction|Get-Transaction|Use-Transaction|Undo-Transaction|" +
"Start-Transcript|Stop-Transcript|Add-Type|Update-TypeData|Get-Uiculture|Get-Unique|" +
"Update-Formatdata|Update-Typedata|Clear-Variable|Get-Variable|New-Variable|Remove-Variable|" +
"Set-Variable|New-WebServiceProxy|Where-Object|Write-Debug|Write-Error|Write-Host|" +
"Write-Output|Write-Progress|Write-Verbose|Write-Warning|Set-WmiInstance|Invoke-WmiMethod|" +
"Get-WmiObject|Remove-WmiObject|Connect-WSMan|Disconnect-WSMan|Test-WSMan|Invoke-WSManAction|" +
"Disable-WSManCredSSP|Enable-WSManCredSSP|Get-WSManCredSSP|New-WSManInstance|Get-WSManInstance|Set-WSManInstance|" +
"Remove-WSManInstance|Set-WSManQuickConfig|New-WSManSessionOption").split("|"));
var binaryOperatorsRe = "eq|ne|ge|gt|lt|le|like|notlike|match|notmatch|replace|contains|notcontains|" +
"ieq|ine|ige|igt|ile|ilt|ilike|inotlike|imatch|inotmatch|ireplace|icontains|inotcontains|" +
"is|isnot|as|" +
"and|or|band|bor|not";
// regexp must not have capturing parentheses. Use (?:) instead.
// regexps are ordered -> the first match is used
this.$rules = {
"start" : [
{
token : "comment",
regex : "#.*$"
}, {
token : "string", // single line
regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
}, {
token : "string", // single line
regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
}, {
token : "constant.numeric", // hex
regex : "0[xX][0-9a-fA-F]+\\b"
}, {
token : "constant.numeric", // float
regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
}, {
token : "constant.language.boolean",
regex : "[$](?:[Tt]rue|[Ff]alse)\\b"
}, {
token : "constant.language",
regex : "[$][Nn]ull\\b"
}, {
token : "variable.instance",
regex : "[$][a-zA-Z][a-zA-Z0-9_]*\\b"
}, {
token : function(value) {
if (keywords.hasOwnProperty(value))
return "keyword";
else if (builtinFunctions.hasOwnProperty(value))
return "support.function";
else
return "identifier";
},
// TODO: Unicode escape sequences
// TODO: Unicode identifiers
regex : "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b"
}, {
token : "keyword.operator",
regex : "\\-(?:" + binaryOperatorsRe + ")"
}, {
token : "keyword.operator",
regex : "&|\\*|\\+|\\-|\\=|\\+=|\\-="
}, {
token : "lparen",
regex : "[[({]"
}, {
token : "rparen",
regex : "[\\])}]"
}, {
token : "text",
regex : "\\s+"
}
],
"comment" : [
{
token : "comment", // closing comment
regex : ".*?\\*\\/",
next : "start"
}, {
token : "comment", // comment spanning whole line
merge : true,
regex : ".+"
}
]
};
};
oop.inherits(PowershellHighlightRules, TextHighlightRules);
exports.PowershellHighlightRules = PowershellHighlightRules;
});

View file

@ -145,10 +145,10 @@ var PythonHighlightRules = function() {
token : "keyword.operator",
regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
}, {
token : "lparen",
token : "lparen.paren",
regex : "[\\[\\(\\{]"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\]\\)\\}]"
}, {
token : "text",
@ -178,4 +178,4 @@ var PythonHighlightRules = function() {
oop.inherits(PythonHighlightRules, TextHighlightRules);
exports.PythonHighlightRules = PythonHighlightRules;
});
});

View file

@ -163,10 +163,10 @@ var RubyHighlightRules = function() {
token : "keyword.operator",
regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
}, {
token : "lparen",
token : "paren.lparen",
regex : "[[({]"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\])}]"
}, {
token : "text",

View file

@ -112,10 +112,10 @@ var scadHighlightRules = function() {
token : "keyword.operator",
regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"
}, {
token : "lparen",
token : "paren.lparen",
regex : "[[({]"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\])}]"
}, {
token : "text",

View file

@ -110,10 +110,10 @@ var ScalaHighlightRules = function() {
token : "keyword.operator",
regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
}, {
token : "lparen",
token : "paren.lparen",
regex : "[[({]"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\])}]"
}, {
token : "text",

View file

@ -310,10 +310,10 @@ var ScssHighlightRules = function() {
token : "keyword.operator",
regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
}, {
token : "lparen",
token : "paren.lparen",
regex : "[[({]"
}, {
token : "rparen",
token : "paren.rparen",
regex : "[\\])}]"
}, {
token : "text",

View file

@ -116,7 +116,7 @@ function DefaultHandlers(editor) {
onStartSelect(pos);
}
var mousePageX, mousePageY;
var mousePageX = pageX, mousePageY = pageY;
var overwrite = editor.getOverwrite();
var mousedownTime = (new Date()).getTime();
var dragCursor, dragRange;
@ -167,9 +167,6 @@ function DefaultHandlers(editor) {
};
var onSelectionInterval = function() {
if (mousePageX === undefined || mousePageY === undefined)
return;
if (state == STATE_UNKNOWN) {
var distance = calcDistance(pageX, pageY, mousePageX, mousePageY);
var time = (new Date()).getTime();

View file

@ -42,7 +42,7 @@ var EventEmitter = require("pilot/event_emitter").EventEmitter;
var WorkerClient = function(topLevelNamespaces, packagedJs, module, classname) {
this.callbacks = [];
this.changeListener = this.changeListener.bind(this);
if (require.packaged) {
var base = this.$guessBasePath();
@ -104,9 +104,9 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, module, classname) {
this.$normalizePath = function(path) {
if (!path.match(/^\w+:/)) {
path = location.protocol + "//" + location.host
path = location.protocol + "//" + location.host
// paths starting with a slash are relative to the root (host)
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
+ "/" + path.replace(/^[\/]+/, "");
}
return path;
@ -115,7 +115,7 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, module, classname) {
this.$guessBasePath = function() {
if (require.aceBaseUrl)
return require.aceBaseUrl;
var scripts = document.getElementsByTagName("script");
for (var i=0; i<scripts.length; i++) {
var script = scripts[i];
@ -123,7 +123,7 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, module, classname) {
var base = script.getAttribute("data-ace-base");
if (base)
return base.replace(/\/*$/, "/");
var src = script.src || script.getAttribute("src");
if (!src) {
continue;
@ -138,6 +138,9 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, module, classname) {
this.terminate = function() {
this._dispatchEvent("terminate", {});
this.$worker.terminate();
this.$worker = null;
this.$doc.removeEventListener("change", this.changeListener);
this.$doc = null;
};
this.send = function(cmd, args) {
@ -155,11 +158,30 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, module, classname) {
this.emit = function(event, data) {
try {
this.$worker.postMessage({event: event, data: data});
// firefox refuses to clone objects which have function properties
// TODO: cleanup event
this.$worker.postMessage({event: event, data: {data: data.data}});
}
catch(ex) {}
};
this.attachToDocument = function(doc) {
if(this.$doc)
this.terminate();
this.$doc = doc;
this.call("setValue", [doc.getValue()]);
doc.on("change", this.changeListener);
};
this.changeListener = function(e) {
e.range = {
start: e.data.range.start,
end: e.data.range.end
};
this.emit("change", e);
};
}).call(WorkerClient.prototype);
exports.WorkerClient = WorkerClient;