Skip to content

Commit e94cb3c

Browse files
committed
package 17.01.16
1 parent 3fb55e8 commit e94cb3c

File tree

334 files changed

+19657
-5062
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

334 files changed

+19657
-5062
lines changed

ChangeLog.txt

+11
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
2016.01.17 Version 1.2.3
2+
3+
* Bugfixes
4+
- fix memory leak in setSession (Tyler Stalder)
5+
- double click not working on linux/mac
6+
7+
* new language modes
8+
- reStructuredText (Robin Jarry)
9+
- NSIS (Jan T. Sott)
10+
11+
112
2015.10.28 Version 1.2.1
213

314
* new language modes

demo/kitchen-sink/demo.js

+81-55
Original file line numberDiff line numberDiff line change
@@ -1249,12 +1249,13 @@ var Mode = function(name, caption, extensions) {
12491249
this.caption = caption;
12501250
this.mode = "ace/mode/" + name;
12511251
this.extensions = extensions;
1252+
var re;
12521253
if (/\^/.test(extensions)) {
1253-
var re = extensions.replace(/\|(\^)?/g, function(a, b){
1254+
re = extensions.replace(/\|(\^)?/g, function(a, b){
12541255
return "$|" + (b ? "^" : "^.*\\.");
12551256
}) + "$";
12561257
} else {
1257-
var re = "^.*\\.(" + extensions + ")$";
1258+
re = "^.*\\.(" + extensions + ")$";
12581259
}
12591260

12601261
this.extRe = new RegExp(re, "gi");
@@ -1301,15 +1302,16 @@ var supportedModes = {
13011302
Gherkin: ["feature"],
13021303
Gitignore: ["^.gitignore"],
13031304
Glsl: ["glsl|frag|vert"],
1305+
Gobstones: ["gbs"],
13041306
golang: ["go"],
13051307
Groovy: ["groovy"],
13061308
HAML: ["haml"],
13071309
Handlebars: ["hbs|handlebars|tpl|mustache"],
13081310
Haskell: ["hs"],
13091311
haXe: ["hx"],
13101312
HTML: ["html|htm|xhtml"],
1311-
HTML_Ruby: ["erb|rhtml|html.erb"],
13121313
HTML_Elixir: ["eex|html.eex"],
1314+
HTML_Ruby: ["erb|rhtml|html.erb"],
13131315
INI: ["ini|conf|cfg|prefs"],
13141316
Io: ["io"],
13151317
Jack: ["jack"],
@@ -1341,21 +1343,24 @@ var supportedModes = {
13411343
MUSHCode: ["mc|mush"],
13421344
MySQL: ["mysql"],
13431345
Nix: ["nix"],
1346+
NSIS: ["nsi|nsh"],
13441347
ObjectiveC: ["m|mm"],
13451348
OCaml: ["ml|mli"],
13461349
Pascal: ["pas|p"],
13471350
Perl: ["pl|pm"],
13481351
pgSQL: ["pgsql"],
1349-
PHP: ["php|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp"],
1352+
PHP: ["php|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"],
13501353
Powershell: ["ps1"],
13511354
Praat: ["praat|praatscript|psc|proc"],
13521355
Prolog: ["plg|prolog"],
13531356
Properties: ["properties"],
13541357
Protobuf: ["proto"],
13551358
Python: ["py"],
13561359
R: ["r"],
1360+
Razor: ["cshtml"],
13571361
RDoc: ["Rd"],
13581362
RHTML: ["Rhtml"],
1363+
RST: ["rst"],
13591364
Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"],
13601365
Rust: ["rs"],
13611366
SASS: ["sass"],
@@ -1386,6 +1391,7 @@ var supportedModes = {
13861391
Velocity: ["vm"],
13871392
Verilog: ["v|vh|sv|svh"],
13881393
VHDL: ["vhd|vhdl"],
1394+
Wollok: ["wlk|wpgm|wtest"],
13891395
XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"],
13901396
XQuery: ["xq"],
13911397
YAML: ["yaml|yml"],
@@ -1950,7 +1956,7 @@ module.exports = {
19501956
hugeDocs: prepareDocList(hugeDocs),
19511957
initDoc: initDoc,
19521958
loadDoc: loadDoc,
1953-
saveDoc: saveDoc,
1959+
saveDoc: saveDoc
19541960
};
19551961
module.exports.all = {
19561962
"Mode Examples": module.exports.docs,
@@ -2283,6 +2289,15 @@ var Renderer = require("ace/virtual_renderer").VirtualRenderer;
22832289
var Editor = require("ace/editor").Editor;
22842290
var MultiSelect = require("ace/multi_select").MultiSelect;
22852291

2292+
var urlOptions = {}
2293+
try {
2294+
window.location.search.slice(1).split(/[&]/).forEach(function(e) {
2295+
var parts = e.split("=");
2296+
urlOptions[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
2297+
});
2298+
} catch(e) {
2299+
console.error(e);
2300+
}
22862301
exports.createEditor = function(el) {
22872302
return new Editor(new Renderer(el));
22882303
};
@@ -2398,7 +2413,10 @@ exports.bindCheckbox = function(id, callback, noInit) {
23982413
id = el.id;
23992414
}
24002415
var el = document.getElementById(id);
2401-
if (localStorage && localStorage.getItem(id))
2416+
2417+
if (urlOptions[id])
2418+
el.checked = urlOptions[id] == "1";
2419+
else if (localStorage && localStorage.getItem(id))
24022420
el.checked = localStorage.getItem(id) == "1";
24032421

24042422
var onCheck = function() {
@@ -2417,7 +2435,10 @@ exports.bindDropdown = function(id, callback, noInit) {
24172435
var el = id;
24182436
id = el.id;
24192437
}
2420-
if (localStorage && localStorage.getItem(id))
2438+
2439+
if (urlOptions[id])
2440+
el.value = urlOptions[id];
2441+
else if (localStorage && localStorage.getItem(id))
24212442
el.value = localStorage.getItem(id);
24222443

24232444
var onChange = function() {
@@ -2897,7 +2918,7 @@ function OccurKeyboardHandler() {}
28972918

28982919
oop.inherits(OccurKeyboardHandler, HashHandler);
28992920

2900-
;(function() {
2921+
(function() {
29012922

29022923
this.isOccurHandler = true;
29032924

@@ -3152,7 +3173,7 @@ function objectToRegExp(obj) {
31523173
return stringToRegExp(obj.expression, obj.flags);
31533174
}
31543175

3155-
;(function() {
3176+
(function() {
31563177

31573178
this.activate = function(ed, backwards) {
31583179
this.$editor = ed;
@@ -3647,7 +3668,7 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
36473668
CodeMirror.commands = {
36483669
redo: function(cm) { cm.ace.redo(); },
36493670
undo: function(cm) { cm.ace.undo(); },
3650-
newlineAndIndent: function(cm) { cm.ace.insert("\n"); },
3671+
newlineAndIndent: function(cm) { cm.ace.insert("\n"); }
36513672
};
36523673
CodeMirror.keyMap = {};
36533674
CodeMirror.addClass = CodeMirror.rmClass =
@@ -4626,10 +4647,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
46264647
if (key.charAt(0) == '\'') {
46274648
return key.charAt(1);
46284649
}
4629-
var pieces = key.split('-');
4630-
if (/-$/.test(key)) {
4631-
pieces.splice(-2, 2, '-');
4632-
}
4650+
var pieces = key.split(/-(?!$)/);
46334651
var lastPiece = pieces[pieces.length - 1];
46344652
if (pieces.length == 1 && pieces[0].length == 1) {
46354653
return false;
@@ -5053,7 +5071,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
50535071
}
50545072

50555073
function handleKeyNonInsertMode() {
5056-
if (handleMacroRecording() || handleEsc()) { return true; };
5074+
if (handleMacroRecording() || handleEsc()) { return true; }
50575075

50585076
var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key;
50595077
if (/^[1-9]\d*$/.test(keys)) { return true; }
@@ -5613,7 +5631,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
56135631
return;
56145632
}
56155633
if (motionArgs.toJumplist) {
5616-
if (!operator)
5634+
if (!operator && cm.ace.curOp != null)
56175635
cm.ace.curOp.command.scrollIntoView = "center-animate"; // ace_patch
56185636
var jumpList = vimGlobalState.jumpList;
56195637
var cachedCursor = jumpList.cachedCursor;
@@ -6104,11 +6122,19 @@ dom.importCssString(".normal-mode .ace_cursor{\
61046122
text = text.slice(0, - match[0].length);
61056123
}
61066124
}
6107-
var wasLastLine = head.line - 1 == cm.lastLine();
6108-
cm.replaceRange('', anchor, head);
6109-
if (args.linewise && !wasLastLine) {
6110-
CodeMirror.commands.newlineAndIndent(cm);
6111-
anchor.ch = null;
6125+
var prevLineEnd = new Pos(anchor.line - 1, Number.MAX_VALUE);
6126+
var wasLastLine = cm.firstLine() == cm.lastLine();
6127+
if (head.line > cm.lastLine() && args.linewise && !wasLastLine) {
6128+
cm.replaceRange('', prevLineEnd, head);
6129+
} else {
6130+
cm.replaceRange('', anchor, head);
6131+
}
6132+
if (args.linewise) {
6133+
if (!wasLastLine) {
6134+
cm.setCursor(prevLineEnd);
6135+
CodeMirror.commands.newlineAndIndent(cm);
6136+
}
6137+
anchor.ch = Number.MAX_VALUE;
61126138
}
61136139
finalHead = anchor;
61146140
} else {
@@ -8204,7 +8230,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
82048230
if (decimal + hex + octal > 1) { return 'Invalid arguments'; }
82058231
number = decimal && 'decimal' || hex && 'hex' || octal && 'octal';
82068232
}
8207-
if (args.eatSpace() && args.match(/\/.*\//)) { 'patterns not supported'; }
8233+
if (args.match(/\/.*\//)) { return 'patterns not supported'; }
82088234
}
82098235
}
82108236
var err = parseArgs();
@@ -8520,7 +8546,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
85208546
}
85218547
if (!confirm) {
85228548
replaceAll();
8523-
if (callback) { callback(); };
8549+
if (callback) { callback(); }
85248550
return;
85258551
}
85268552
showPrompt(cm, {
@@ -8642,7 +8668,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
86428668
exitInsertMode(cm);
86438669
}
86448670
}
8645-
};
8671+
}
86468672
macroModeState.isPlaying = false;
86478673
}
86488674

@@ -8791,7 +8817,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
87918817
exitInsertMode(cm);
87928818
}
87938819
macroModeState.isPlaying = false;
8794-
};
8820+
}
87958821

87968822
function repeatInsertModeChanges(cm, changes, repeat) {
87978823
function keyHandler(binding) {
@@ -9120,7 +9146,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
91209146
defaultKeymap.push(
91219147
{ keys: 'zc', type: 'action', action: 'fold', actionArgs: { open: false } },
91229148
{ keys: 'zC', type: 'action', action: 'fold', actionArgs: { open: false, all: true } },
9123-
{ keys: 'zo', type: 'action', action: 'fold', actionArgs: { open: true, } },
9149+
{ keys: 'zo', type: 'action', action: 'fold', actionArgs: { open: true } },
91249150
{ keys: 'zO', type: 'action', action: 'fold', actionArgs: { open: true, all: true } },
91259151
{ keys: 'za', type: 'action', action: 'fold', actionArgs: { toggle: true } },
91269152
{ keys: 'zA', type: 'action', action: 'fold', actionArgs: { toggle: true, all: true } },
@@ -9154,7 +9180,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
91549180
actions.fold = function(cm, actionArgs, vim) {
91559181
cm.ace.execCommand(['toggleFoldWidget', 'toggleFoldWidget', 'foldOther', 'unfoldall'
91569182
][(actionArgs.all ? 2 : 0) + (actionArgs.open ? 1 : 0)]);
9157-
},
9183+
};
91589184

91599185
exports.handler.defaultKeymap = defaultKeymap;
91609186
exports.handler.actions = actions;
@@ -10323,6 +10349,10 @@ exports.runEmmetCommand = function runEmmetCommand(editor) {
1032310349
if (this.action == "expand_abbreviation_with_tab") {
1032410350
if (!editor.selection.isEmpty())
1032510351
return false;
10352+
var pos = editor.selection.lead;
10353+
var token = editor.session.getTokenAt(pos.row, pos.column);
10354+
if (token && /\btag\b/.test(token.type))
10355+
return false;
1032610356
}
1032710357

1032810358
if (this.action == "wrap_with_abbreviation") {
@@ -10331,11 +10361,6 @@ exports.runEmmetCommand = function runEmmetCommand(editor) {
1033110361
}, 0);
1033210362
}
1033310363

10334-
var pos = editor.selection.lead;
10335-
var token = editor.session.getTokenAt(pos.row, pos.column);
10336-
if (token && /\btag\b/.test(token.type))
10337-
return false;
10338-
1033910364
var result = actions.run(this.action, editorProxy);
1034010365
} catch(e) {
1034110366
if (!emmet) {
@@ -10629,7 +10654,7 @@ var AcePopup = function(parentNode) {
1062910654
return selectionMarker.start.row;
1063010655
};
1063110656
popup.setRow = function(line) {
10632-
line = Math.max(-1, Math.min(this.data.length, line));
10657+
line = Math.max(0, Math.min(this.data.length, line));
1063310658
if (selectionMarker.start.row != line) {
1063410659
popup.selection.clearSelection();
1063510660
selectionMarker.start.row = selectionMarker.end.row = line || 0;
@@ -10782,6 +10807,21 @@ exports.retrieveFollowingIdentifier = function(text, pos, regex) {
1078210807
return buf;
1078310808
};
1078410809

10810+
exports.getCompletionPrefix = function (editor) {
10811+
var pos = editor.getCursorPosition();
10812+
var line = editor.session.getLine(pos.row);
10813+
var prefix;
10814+
editor.completers.forEach(function(completer) {
10815+
if (completer.identifierRegexps) {
10816+
completer.identifierRegexps.forEach(function(identifierRegex) {
10817+
if (!prefix && identifierRegex)
10818+
prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex);
10819+
}.bind(this));
10820+
}
10821+
}.bind(this));
10822+
return prefix || this.retrievePrecedingIdentifier(line, pos.column);
10823+
};
10824+
1078510825
});
1078610826

1078710827
define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/snippets"], function(require, exports, module) {
@@ -10979,7 +11019,7 @@ var Autocomplete = function() {
1097911019
var pos = editor.getCursorPosition();
1098011020

1098111021
var line = session.getLine(pos.row);
10982-
var prefix = util.retrievePrecedingIdentifier(line, pos.column);
11022+
var prefix = util.getCompletionPrefix(editor);
1098311023

1098411024
this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length);
1098511025
this.base.$insertRight = true;
@@ -10988,12 +11028,12 @@ var Autocomplete = function() {
1098811028
var total = editor.completers.length;
1098911029
editor.completers.forEach(function(completer, i) {
1099011030
completer.getCompletions(editor, session, pos, prefix, function(err, results) {
10991-
if (!err)
11031+
if (!err && results)
1099211032
matches = matches.concat(results);
1099311033
var pos = editor.getCursorPosition();
1099411034
var line = session.getLine(pos.row);
1099511035
callback(null, {
10996-
prefix: util.retrievePrecedingIdentifier(line, pos.column, results[0] && results[0].identifierRegex),
11036+
prefix: prefix,
1099711037
matches: matches,
1099811038
finished: (--total === 0)
1099911039
});
@@ -11330,7 +11370,8 @@ var snippetCompleter = {
1133011370

1133111371
var completers = [snippetCompleter, textCompleter, keyWordCompleter];
1133211372
exports.setCompleters = function(val) {
11333-
completers = val || [];
11373+
completers.length = 0;
11374+
if (val) completers.push.apply(completers, val);
1133411375
};
1133511376
exports.addCompleter = function(completer) {
1133611377
completers.push(completer);
@@ -11381,30 +11422,15 @@ var loadSnippetFile = function(id) {
1138111422
});
1138211423
};
1138311424

11384-
function getCompletionPrefix(editor) {
11385-
var pos = editor.getCursorPosition();
11386-
var line = editor.session.getLine(pos.row);
11387-
var prefix;
11388-
editor.completers.forEach(function(completer) {
11389-
if (completer.identifierRegexps) {
11390-
completer.identifierRegexps.forEach(function(identifierRegex) {
11391-
if (!prefix && identifierRegex)
11392-
prefix = util.retrievePrecedingIdentifier(line, pos.column, identifierRegex);
11393-
});
11394-
}
11395-
});
11396-
return prefix || util.retrievePrecedingIdentifier(line, pos.column);
11397-
}
11398-
1139911425
var doLiveAutocomplete = function(e) {
1140011426
var editor = e.editor;
1140111427
var hasCompleter = editor.completer && editor.completer.activated;
1140211428
if (e.command.name === "backspace") {
11403-
if (hasCompleter && !getCompletionPrefix(editor))
11429+
if (hasCompleter && !util.getCompletionPrefix(editor))
1140411430
editor.completer.detach();
1140511431
}
1140611432
else if (e.command.name === "insertstring") {
11407-
var prefix = getCompletionPrefix(editor);
11433+
var prefix = util.getCompletionPrefix(editor);
1140811434
if (prefix && !hasCompleter) {
1140911435
if (!editor.completer) {
1141011436
editor.completer = new Autocomplete();
@@ -12118,7 +12144,7 @@ function updateUIEditorOptions() {
1211812144
themelist.themes.forEach(function(x){ x.value = x.theme });
1211912145
fillDropdown(themeEl, {
1212012146
Bright: themelist.themes.filter(function(x){return !x.isDark}),
12121-
Dark: themelist.themes.filter(function(x){return x.isDark}),
12147+
Dark: themelist.themes.filter(function(x){return x.isDark})
1212212148
});
1212312149

1212412150
event.addListener(themeEl, "mouseover", function(e){

0 commit comments

Comments
 (0)