diff --git a/lib/ace/commands/default_commands.js b/lib/ace/commands/default_commands.js
index 909aa843..e115673b 100644
--- a/lib/ace/commands/default_commands.js
+++ b/lib/ace/commands/default_commands.js
@@ -44,9 +44,10 @@ function bindKey(win, mac) {
exports.commands = [{
name: "showSettingsMenu",
bindKey: bindKey("Ctrl-,", "Command-,"),
- exec: function (editor) {
- config.loadModule("ace/ext/show_keyboard_shortcuts", function (e) {
- e(editor);
+ exec: function(editor) {
+ config.loadModule("ace/ext/settings_menu", function(module) {
+ module.init(editor);
+ editor.showSettingsMenu();
});
},
readOnly: true
diff --git a/lib/ace/ext/elastic_tabstops_lite.js b/lib/ace/ext/elastic_tabstops_lite.js
index b9e9891f..9901c5df 100644
--- a/lib/ace/ext/elastic_tabstops_lite.js
+++ b/lib/ace/ext/elastic_tabstops_lite.js
@@ -117,7 +117,7 @@ var ElasticTabstopsLite = function(editor) {
// todo: support multicursor
var tabs = [-1].concat(this.$tabsForRow(row));
- var widths = tabs.map(function (el) { return 0; } ).slice(1);
+ var widths = tabs.map(function(el) { return 0; } ).slice(1);
var line = this.$editor.session.getLine(row);
for (var i = 0, len = tabs.length - 1; i < len; i++) {
@@ -128,7 +128,7 @@ var ElasticTabstopsLite = function(editor) {
var cell = line.substring(leftEdge, rightEdge);
widths[i] = Math.max(cell.replace(/\s+$/g,'').length, rightmostSelection - leftEdge);
}
-
+
return widths;
};
@@ -137,7 +137,7 @@ var ElasticTabstopsLite = function(editor) {
if (this.$editor.session.getSelection().isEmpty()) {
// todo: support multicursor
if (row == cursor.row)
- selections.push(cursor.column);
+ selections.push(cursor.column);
}
return selections;
@@ -189,7 +189,7 @@ var ElasticTabstopsLite = function(editor) {
for (var s = 0, length = selectionColumns.length; s < length; s++) {
if (selectionColumns[s] <= cellRightEdge)
lengths.push(s);
- else
+ else
lengths.push(0);
}
rightmost = Math.max.apply(Math, lengths);
@@ -214,9 +214,9 @@ var ElasticTabstopsLite = function(editor) {
if (rowTabs.length == 0)
return;
-
+
var bias = 0, location = -1;
-
+
// this always only contains two elements, so we're safe in the loop below
var expandedSet = this.$izip(widths, rowTabs);
@@ -261,7 +261,7 @@ var ElasticTabstopsLite = function(editor) {
if (iLength > longest)
longest = iLength;
}
-
+
var expandedSet = [];
for (var l = 0; l < longest; l++) {
@@ -275,7 +275,7 @@ var ElasticTabstopsLite = function(editor) {
expandedSet.push(set);
}
-
+
return expandedSet;
};
@@ -284,7 +284,7 @@ var ElasticTabstopsLite = function(editor) {
this.$izip = function(widths, tabs) {
// grab the shorter size
var size = widths.length >= tabs.length ? tabs.length : widths.length;
-
+
var expandedSet = [];
for (var i = 0; i < size; i++) {
var set = [ widths[i], tabs[i] ];
diff --git a/lib/ace/ext/show_keyboard_shortcuts.js b/lib/ace/ext/keybinding_menu.js
similarity index 89%
rename from lib/ace/ext/show_keyboard_shortcuts.js
rename to lib/ace/ext/keybinding_menu.js
index d7405aa7..84a0c044 100644
--- a/lib/ace/ext/show_keyboard_shortcuts.js
+++ b/lib/ace/ext/keybinding_menu.js
@@ -1,95 +1,86 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
- * All rights reserved.
- *
- * Contributed to Ajax.org under the BSD license.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*jslint
- indent: 4,
- maxerr: 50,
- white: true,
- browser: true,
- vars: true
-*/
-/*global
- define,
- require
-*/
-
-/**
- * Show Keyboard Shortcuts
- * @fileOverview Show Keyboard Shortcuts
- * Generates a menu which displays the keyboard shortcuts.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
-
-define(function(require, exports, module) {
- "use strict";
- var Editor = require("ace/editor").Editor;
- /**
- * Generates a menu which displays the keyboard shortcuts.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {ace.Editor} editor An instance of the ace editor.
- */
- function showKeyboardShortcuts (editor) {
- // make sure the menu isn't open already.
- if(!document.getElementById('kbshortcutmenu')) {
- var overlayPage = require('./menu_tools/overlay_page').overlayPage;
- var getEditorKeybordShortcuts = require('./menu_tools/get_editor_keyboard_shortcuts').getEditorKeybordShortcuts;
- var kb = getEditorKeybordShortcuts(editor);
- var el = document.createElement('div');
- var commands = kb.reduce(function (previous, current) {
- return previous + '
' + current.command + ' : ' +
- current.key + '
';
- }, '');
-
- el.id = 'kbshortcutmenu';
- el.innerHTML = 'Keyboard Shortcuts
' + commands + '';
- el.style.cssText = 'margin:0; padding:0;';
- overlayPage(editor, el, '0', '0', '0', null);
- }
- };
- module.exports.init = function (editor) {
- Editor.prototype.showKeyboardShortcuts = function () {
- showKeyboardShortcuts(this);
- };
- editor.commands.addCommands([{
- name: "showKeyboardShortcuts",
- bindKey: {win: "Ctrl-Alt-h", mac: "Command-Alt-h"},
- exec: function(editor, line) {
- editor.showKeyboardShortcuts();
- }
- }]);
- };
-
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
+ * All rights reserved.
+ *
+ * Contributed to Ajax.org under the BSD license.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/
+/*global define, require */
+
+/**
+ * Show Keyboard Shortcuts
+ * @fileOverview Show Keyboard Shortcuts
+ * Generates a menu which displays the keyboard shortcuts.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+
+define(function(require, exports, module) {
+ "use strict";
+ var Editor = require("ace/editor").Editor;
+ /**
+ * Generates a menu which displays the keyboard shortcuts.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {ace.Editor} editor An instance of the ace editor.
+ */
+ function showKeyboardShortcuts (editor) {
+ // make sure the menu isn't open already.
+ if(!document.getElementById('kbshortcutmenu')) {
+ var overlayPage = require('./menu_tools/overlay_page').overlayPage;
+ var getEditorKeybordShortcuts = require('./menu_tools/get_editor_keyboard_shortcuts').getEditorKeybordShortcuts;
+ var kb = getEditorKeybordShortcuts(editor);
+ var el = document.createElement('div');
+ var commands = kb.reduce(function(previous, current) {
+ return previous + '' + current.command + ' : ' +
+ current.key + '
';
+ }, '');
+
+ el.id = 'kbshortcutmenu';
+ el.innerHTML = 'Keyboard Shortcuts
' + commands + '';
+ el.style.cssText = 'margin:0; padding:0;';
+ overlayPage(editor, el, '0', '0', '0', null);
+ }
+ };
+ module.exports.init = function(editor) {
+ Editor.prototype.showKeyboardShortcuts = function() {
+ showKeyboardShortcuts(this);
+ };
+ editor.commands.addCommands([{
+ name: "showKeyboardShortcuts",
+ bindKey: {win: "Ctrl-Alt-h", mac: "Command-Alt-h"},
+ exec: function(editor, line) {
+ editor.showKeyboardShortcuts();
+ }
+ }]);
+ };
+
});
\ No newline at end of file
diff --git a/lib/ace/ext/menu_tools/add_editor_menu_options.js b/lib/ace/ext/menu_tools/add_editor_menu_options.js
index 9e000685..64aa58db 100644
--- a/lib/ace/ext/menu_tools/add_editor_menu_options.js
+++ b/lib/ace/ext/menu_tools/add_editor_menu_options.js
@@ -1,103 +1,94 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
- * All rights reserved.
- *
- * Contributed to Ajax.org under the BSD license.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*jslint
- indent: 4,
- maxerr: 50,
- white: true,
- browser: true,
- vars: true
-*/
-/*global
- define,
- require
-*/
-
-/**
- * Add Editor Menu Options
- * @fileOverview Add Editor Menu Options
- * The menu options property needs to be added to the editor
- * so that the settings menu can know about options for
- * selection elements and track which option is selected.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
-
-define(function(require, exports, module) {
-'use strict';
-
-/**
- * The menu options property needs to be added to the editor
- * so that the settings menu can know about options for
- * selection elements and track which option is selected.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {ace.Editor} editor An instance of the ace editor.
- */
-module.exports.addEditorMenuOptions = function addEditorMenuOptions (editor) {
- var modelist = require('../modelist');
- var themelist = require('../themelist');
- editor.menuOptions = {
- "setNewLineMode" : [{
- "textContent" : "unix",
- "value" : "unix"
- }, {
- "textContent" : "windows",
- "value" : "windows"
- }, {
- "textContent" : "auto",
- "value" : "auto"
- }
- ],
- "setTheme" : [],
- "setMode" : []
- };
-
- editor.menuOptions.setTheme = themelist.themes.map(function (theme) {
- return {
- 'textContent' : theme.desc,
- 'value' : theme.theme
- };
- });
-
- editor.menuOptions.setMode = modelist.modes.map(function (mode) {
- return {
- 'textContent' : mode.name,
- 'value' : mode.mode
- };
- });
-};
-
-
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
+ * All rights reserved.
+ *
+ * Contributed to Ajax.org under the BSD license.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/
+/*global define, require */
+
+/**
+ * Add Editor Menu Options
+ * @fileOverview Add Editor Menu Options
+ * The menu options property needs to be added to the editor
+ * so that the settings menu can know about options for
+ * selection elements and track which option is selected.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+
+define(function(require, exports, module) {
+'use strict';
+
+/**
+ * The menu options property needs to be added to the editor
+ * so that the settings menu can know about options for
+ * selection elements and track which option is selected.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {ace.Editor} editor An instance of the ace editor.
+ */
+module.exports.addEditorMenuOptions = function addEditorMenuOptions (editor) {
+ var modelist = require('../modelist');
+ var themelist = require('../themelist');
+ editor.menuOptions = {
+ "setNewLineMode" : [{
+ "textContent" : "unix",
+ "value" : "unix"
+ }, {
+ "textContent" : "windows",
+ "value" : "windows"
+ }, {
+ "textContent" : "auto",
+ "value" : "auto"
+ }
+ ],
+ "setTheme" : [],
+ "setMode" : []
+ };
+
+ editor.menuOptions.setTheme = themelist.themes.map(function(theme) {
+ return {
+ 'textContent' : theme.desc,
+ 'value' : theme.theme
+ };
+ });
+
+ editor.menuOptions.setMode = modelist.modes.map(function(mode) {
+ return {
+ 'textContent' : mode.name,
+ 'value' : mode.mode
+ };
+ });
+};
+
+
});
\ No newline at end of file
diff --git a/lib/ace/ext/menu_tools/element_generator.js b/lib/ace/ext/menu_tools/element_generator.js
index e1cf405d..ec6ba93b 100644
--- a/lib/ace/ext/menu_tools/element_generator.js
+++ b/lib/ace/ext/menu_tools/element_generator.js
@@ -1,157 +1,148 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
- * All rights reserved.
- *
- * Contributed to Ajax.org under the BSD license.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*jslint
- indent: 4,
- maxerr: 50,
- white: true,
- browser: true,
- vars: true
-*/
-/*global
- define,
- require
-*/
-
-/**
- * Element Generator
- * @fileOverview Element Generator
- * Contains methods for generating elements.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
-
-define(function(require, exports, module) {
-'use strict';
-/**
- * Creates a DOM option element
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {object} obj An object containing properties to add to the dom
- * element. If one of those properties is named `selected` then it will be
- * added as an attribute on the element instead.
- */
-module.exports.createOption = function createOption (obj) {
- var attribute;
- var el = document.createElement('option');
- for(attribute in obj) {
- if(obj.hasOwnProperty(attribute)) {
- if(attribute === 'selected') {
- el.setAttribute(attribute, obj[attribute]);
- } else {
- el[attribute] = obj[attribute];
- }
- }
- }
- return el;
-};
-/**
- * Creates a DOM checkbox element.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {string} id The id of the element.
- * @param {boolean} checked Whether or not the element is checked.
- * @param {string} clss The class of the element.
- * @returns {DOMElement} Returns a checkbox element reference.
- */
-module.exports.createCheckbox = function createCheckbox (id, checked, clss) {
- var el = document.createElement('input');
- el.setAttribute('type', 'checkbox');
- el.setAttribute('id', id);
- el.setAttribute('name', id);
- el.setAttribute('value', checked);
- el.setAttribute('class', clss);
- if(checked) {
- el.setAttribute('checked', 'checked');
- }
- return el;
-};
-/**
- * Creates a DOM text input element.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {string} id The id of the element.
- * @param {string} value The default value of the input element.
- * @param {string} clss The class of the element.
- * @returns {DOMElement} Returns an input element reference.
- */
-module.exports.createInput = function createInput (id, value, clss) {
- var el = document.createElement('input');
- el.setAttribute('type', 'text');
- el.setAttribute('id', id);
- el.setAttribute('name', id);
- el.setAttribute('value', value);
- el.setAttribute('class', clss);
- return el;
-};
-/**
- * Creates a DOM label element.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {string} text The label text.
- * @param {string} labelFor The id of the element being labeled.
- * @returns {DOMElement} Returns a label element reference.
- */
-module.exports.createLabel = function createLabel (text, labelFor) {
- var el = document.createElement('label');
- el.setAttribute('for', labelFor);
- el.textContent = text;
- return el;
-};
-/**
- * Creates a DOM selection element.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {string} id The id of the element.
- * @param {string} values An array of objects suitable for `createOption`
- * @param {string} clss The class of the element.
- * @returns {DOMElement} Returns a selection element reference.
- * @see ace/ext/element_generator.createOption
- */
-module.exports.createSelection = function createSelection (id, values, clss) {
- var el = document.createElement('select');
- el.setAttribute('id', id);
- el.setAttribute('name', id);
- el.setAttribute('class', clss);
- values.forEach(function (item) {
- el.appendChild(module.exports.createOption(item));
- });
- return el;
-};
-
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
+ * All rights reserved.
+ *
+ * Contributed to Ajax.org under the BSD license.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/
+/*global define, require */
+
+/**
+ * Element Generator
+ * @fileOverview Element Generator
+ * Contains methods for generating elements.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+
+define(function(require, exports, module) {
+'use strict';
+/**
+ * Creates a DOM option element
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {object} obj An object containing properties to add to the dom
+ * element. If one of those properties is named `selected` then it will be
+ * added as an attribute on the element instead.
+ */
+module.exports.createOption = function createOption (obj) {
+ var attribute;
+ var el = document.createElement('option');
+ for(attribute in obj) {
+ if(obj.hasOwnProperty(attribute)) {
+ if(attribute === 'selected') {
+ el.setAttribute(attribute, obj[attribute]);
+ } else {
+ el[attribute] = obj[attribute];
+ }
+ }
+ }
+ return el;
+};
+/**
+ * Creates a DOM checkbox element.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {string} id The id of the element.
+ * @param {boolean} checked Whether or not the element is checked.
+ * @param {string} clss The class of the element.
+ * @returns {DOMElement} Returns a checkbox element reference.
+ */
+module.exports.createCheckbox = function createCheckbox (id, checked, clss) {
+ var el = document.createElement('input');
+ el.setAttribute('type', 'checkbox');
+ el.setAttribute('id', id);
+ el.setAttribute('name', id);
+ el.setAttribute('value', checked);
+ el.setAttribute('class', clss);
+ if(checked) {
+ el.setAttribute('checked', 'checked');
+ }
+ return el;
+};
+/**
+ * Creates a DOM text input element.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {string} id The id of the element.
+ * @param {string} value The default value of the input element.
+ * @param {string} clss The class of the element.
+ * @returns {DOMElement} Returns an input element reference.
+ */
+module.exports.createInput = function createInput (id, value, clss) {
+ var el = document.createElement('input');
+ el.setAttribute('type', 'text');
+ el.setAttribute('id', id);
+ el.setAttribute('name', id);
+ el.setAttribute('value', value);
+ el.setAttribute('class', clss);
+ return el;
+};
+/**
+ * Creates a DOM label element.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {string} text The label text.
+ * @param {string} labelFor The id of the element being labeled.
+ * @returns {DOMElement} Returns a label element reference.
+ */
+module.exports.createLabel = function createLabel (text, labelFor) {
+ var el = document.createElement('label');
+ el.setAttribute('for', labelFor);
+ el.textContent = text;
+ return el;
+};
+/**
+ * Creates a DOM selection element.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {string} id The id of the element.
+ * @param {string} values An array of objects suitable for `createOption`
+ * @param {string} clss The class of the element.
+ * @returns {DOMElement} Returns a selection element reference.
+ * @see ace/ext/element_generator.createOption
+ */
+module.exports.createSelection = function createSelection (id, values, clss) {
+ var el = document.createElement('select');
+ el.setAttribute('id', id);
+ el.setAttribute('name', id);
+ el.setAttribute('class', clss);
+ values.forEach(function(item) {
+ el.appendChild(module.exports.createOption(item));
+ });
+ return el;
+};
+
});
\ No newline at end of file
diff --git a/lib/ace/ext/menu_tools/generate_settings_menu.js b/lib/ace/ext/menu_tools/generate_settings_menu.js
index cc81fa44..69b21d97 100644
--- a/lib/ace/ext/menu_tools/generate_settings_menu.js
+++ b/lib/ace/ext/menu_tools/generate_settings_menu.js
@@ -1,272 +1,272 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
- * All rights reserved.
- *
- * Contributed to Ajax.org under the BSD license.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*jslint
- indent: 4,
- maxerr: 50,
- white: true,
- browser: true,
- vars: true
-*/
-/*global
- define
-*/
-
-/**
- * Generates the settings menu
- * @fileOverview Generates the settings menu.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
-
-define(function(require, exports, module) {
-'use strict';
-/**
- * Generates an interactive menu with settings useful to end users.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {ace.Editor} editor An instance of the ace editor.
- */
-module.exports.generateSettingsMenu = function generateSettingsMenu (editor) {
- var addEditorMenuOptions = require('./add_editor_menu_options').addEditorMenuOptions;
- var getSetFunctions = require('./get_set_functions').getSetFunctions;
- /**
- * container for dom elements that will go in the menu.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
- var elements = [];
- /**
- * Sorts the menu entries (elements var) so they'll appear in alphabetical order
- * the sort is performed based on the value of the contains property
- * of each element. Since this is an `array.sort` the array is sorted
- * in place.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
- function cleanupElementsList() {
- elements.sort(function (a, b) {
- var x = a.getAttribute('contains');
- var y = b.getAttribute('contains');
- return x.localeCompare(y);
- });
- }
- /**
- * Wraps all dom elements contained in the elements var with a single
- * div.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
- function wrapElements() {
- var topmenu = document.createElement('div');
- topmenu.setAttribute('id', 'settingsmenu');
- elements.forEach(function (element) {
- topmenu.appendChild(element);
- });
- return topmenu;
- }
- /**
- * Creates a new menu entry.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {object} obj This is a reference to the object containing the
- * set function. It is used to set up event listeners for when the
- * menu options change.
- * @param {string} clss Maps to the class of the dom element. This is
- * the name of the object containing the set function e.g. `editor`,
- * `session`, `renderer`.
- * @param {string} item This is the set function name. It maps to the
- * id of the dom element (check, select, input) and to the "contains"
- * attribute of the div holding both the element and its label.
- * @param {mixed} val This is the value of the setting. It is mapped to
- * the dom element's value, checked, or selected option accordingly.
- */
- function createNewEntry(obj, clss, item, val) {
- var egen = require('./element_generator');
- var el;
- var div = document.createElement('div');
- div.setAttribute('contains', item);
- div.setAttribute('class', 'menuEntry');
- div.setAttribute('style', 'clear: both;');
-
- div.appendChild(egen.createLabel(
- item.replace(
- /^set/, ''
- ).replace(
- /([A-Z])/g, ' $1'
- ).trim(),
- item
- ));
-
- if(Array.isArray(val)) {
- el = egen.createSelection(item, val, clss);
- el.addEventListener('change', function (e) {
- try{
- editor.menuOptions[e.target.id].forEach(function (x) {
- if(x.textContent !== e.target.textContent) {
- delete x.selected;
- }
- });
- // editor.session['setMode']('ace/mode/javascript')
- obj[e.target.id](e.target.value);
- } catch (err) {
- throw new Error(err);
- }
- });
- } else if(typeof val === 'boolean') {
- el = egen.createCheckbox(item, val, clss);
- el.addEventListener('change', function (e) {
- try{
- // renderer['setHighlightGutterLine'](true);
- obj[e.target.id](!!e.target.checked);
- } catch (err) {
- throw new Error(err);
- }
- });
- } else {
- // this aids in giving the ability to specify settings through
- // post and get requests.
- // /ace_editor.html?setMode=ace/mode/html&setOverwrite=true
- el = egen.createInput(item, val, clss);
- el.addEventListener('blur', function (e) {
- try{
- if(e.target.value === 'true') {
- obj[e.target.id](true);
- } else if(e.target.value === 'false') {
- obj[e.target.id](false);
- } else {
- obj[e.target.id](e.target.value);
- }
- } catch (err) {
- throw new Error(err);
- }
- });
- }
- el.style.cssText = 'float:right;';
- div.appendChild(el);
- return div;
- }
- /**
- * Generates selection fields for the menu and populates their options
- * using information from `editor.menuOptions`
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {string} item The set function name.
- * @param {object} esr A reference to the object having the set function.
- * @param {string} clss The name of the object containing the set function.
- * @param {string} fn The matching get function's function name.
- * @returns {DOMElement} Returns a dom element containing a selection
- * element populated with options. The option whose value matches that
- * returned from `esr[fn]()` will be selected.
- */
- function makeDropdown(item, esr, clss, fn) {
- var val = editor.menuOptions[item];
- val = val.map(function (valuex) {
- if(valuex.value === esr[fn]()) {
- valuex.selected = 'selected';
- } else if(valuex.value === esr.$modeId) {
- // is mode
- valuex.selected = 'selected';
- }
- return valuex;
- });
- return createNewEntry(esr, clss, item, val);
- }
- /**
- * Processes the set functions returned from `getSetFunctions`. First it
- * checks for menu options defined in `editor.menuOptions`. If no
- * options are specified then it checks whether there is a get function
- * (replace set with get) for the setting. When either of those
- * conditions are met it will attempt to create a new entry for the
- * settings menu and push it into the elements array defined above.
- * It can only do so for get functions which return
- * strings, numbers, and booleans. A special case is written in for
- * `getMode` where it looks at the returned objects `$id` property and
- * forwards that through instead. Other special cases could be written
- * in but that would get a bit ridiculous.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {object} setObj An item from the array returned by
- * `getSetFunctions`.
- */
- function handleSet (setObj) {
- var item = setObj.functionName;
- var esr = setObj.parentObj;
- var clss = setObj.parentName;
- var val;
- var fn = item.replace(/^set/, 'get');
- if(editor.menuOptions[item] !== undefined) {
- // has options for select element
- elements.push(makeDropdown(item, esr, clss, fn));
- } else if(typeof esr[fn] === 'function') {
- // has get function
- try {
- val = esr[fn]();
- if(typeof val === 'object') {
- // setMode takes a string, getMode returns an object
- // the $id property of that object is the string
- // which may be given to setMode...
- val = val.$id;
- }
- // the rest of the get functions return strings,
- // booleans, or numbers.
- elements.push(
- createNewEntry(esr, clss, item, val)
- );
- } catch (e) {
- // if there are errors it is because the element
- // does not belong in the settings menu
- }
- }
- }
- addEditorMenuOptions(editor);
- // gather the set functions
- getSetFunctions(editor).forEach(function (setObj) {
- // populate the elements array with good stuff.
- handleSet(setObj);
- });
- // sort the menu entries in the elements list so people can find
- // the settings in alphabetical order.
- cleanupElementsList();
- // dump the entries from the elements list and wrap them up in a div
- return wrapElements();
-};
-
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
+ * All rights reserved.
+ *
+ * Contributed to Ajax.org under the BSD license.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*jslint
+ indent: 4,
+ maxerr: 50,
+ white: true,
+ browser: true,
+ vars: true
+*/
+/*global
+ define
+*/
+
+/**
+ * Generates the settings menu
+ * @fileOverview Generates the settings menu.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+
+define(function(require, exports, module) {
+'use strict';
+/**
+ * Generates an interactive menu with settings useful to end users.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {ace.Editor} editor An instance of the ace editor.
+ */
+module.exports.generateSettingsMenu = function generateSettingsMenu (editor) {
+ var addEditorMenuOptions = require('./add_editor_menu_options').addEditorMenuOptions;
+ var getSetFunctions = require('./get_set_functions').getSetFunctions;
+ /**
+ * container for dom elements that will go in the menu.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+ var elements = [];
+ /**
+ * Sorts the menu entries (elements var) so they'll appear in alphabetical order
+ * the sort is performed based on the value of the contains property
+ * of each element. Since this is an `array.sort` the array is sorted
+ * in place.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+ function cleanupElementsList() {
+ elements.sort(function(a, b) {
+ var x = a.getAttribute('contains');
+ var y = b.getAttribute('contains');
+ return x.localeCompare(y);
+ });
+ }
+ /**
+ * Wraps all dom elements contained in the elements var with a single
+ * div.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+ function wrapElements() {
+ var topmenu = document.createElement('div');
+ topmenu.setAttribute('id', 'settingsmenu');
+ elements.forEach(function(element) {
+ topmenu.appendChild(element);
+ });
+ return topmenu;
+ }
+ /**
+ * Creates a new menu entry.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {object} obj This is a reference to the object containing the
+ * set function. It is used to set up event listeners for when the
+ * menu options change.
+ * @param {string} clss Maps to the class of the dom element. This is
+ * the name of the object containing the set function e.g. `editor`,
+ * `session`, `renderer`.
+ * @param {string} item This is the set function name. It maps to the
+ * id of the dom element (check, select, input) and to the "contains"
+ * attribute of the div holding both the element and its label.
+ * @param {mixed} val This is the value of the setting. It is mapped to
+ * the dom element's value, checked, or selected option accordingly.
+ */
+ function createNewEntry(obj, clss, item, val) {
+ var egen = require('./element_generator');
+ var el;
+ var div = document.createElement('div');
+ div.setAttribute('contains', item);
+ div.setAttribute('class', 'menuEntry');
+ div.setAttribute('style', 'clear: both;');
+
+ div.appendChild(egen.createLabel(
+ item.replace(
+ /^set/, ''
+ ).replace(
+ /([A-Z])/g, ' $1'
+ ).trim(),
+ item
+ ));
+
+ if(Array.isArray(val)) {
+ el = egen.createSelection(item, val, clss);
+ el.addEventListener('change', function(e) {
+ try{
+ editor.menuOptions[e.target.id].forEach(function(x) {
+ if(x.textContent !== e.target.textContent) {
+ delete x.selected;
+ }
+ });
+ // editor.session['setMode']('ace/mode/javascript')
+ obj[e.target.id](e.target.value);
+ } catch (err) {
+ throw new Error(err);
+ }
+ });
+ } else if(typeof val === 'boolean') {
+ el = egen.createCheckbox(item, val, clss);
+ el.addEventListener('change', function(e) {
+ try{
+ // renderer['setHighlightGutterLine'](true);
+ obj[e.target.id](!!e.target.checked);
+ } catch (err) {
+ throw new Error(err);
+ }
+ });
+ } else {
+ // this aids in giving the ability to specify settings through
+ // post and get requests.
+ // /ace_editor.html?setMode=ace/mode/html&setOverwrite=true
+ el = egen.createInput(item, val, clss);
+ el.addEventListener('blur', function(e) {
+ try{
+ if(e.target.value === 'true') {
+ obj[e.target.id](true);
+ } else if(e.target.value === 'false') {
+ obj[e.target.id](false);
+ } else {
+ obj[e.target.id](e.target.value);
+ }
+ } catch (err) {
+ throw new Error(err);
+ }
+ });
+ }
+ el.style.cssText = 'float:right;';
+ div.appendChild(el);
+ return div;
+ }
+ /**
+ * Generates selection fields for the menu and populates their options
+ * using information from `editor.menuOptions`
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {string} item The set function name.
+ * @param {object} esr A reference to the object having the set function.
+ * @param {string} clss The name of the object containing the set function.
+ * @param {string} fn The matching get function's function name.
+ * @returns {DOMElement} Returns a dom element containing a selection
+ * element populated with options. The option whose value matches that
+ * returned from `esr[fn]()` will be selected.
+ */
+ function makeDropdown(item, esr, clss, fn) {
+ var val = editor.menuOptions[item];
+ val = val.map(function(valuex) {
+ if(valuex.value === esr[fn]()) {
+ valuex.selected = 'selected';
+ } else if(valuex.value === esr.$modeId) {
+ // is mode
+ valuex.selected = 'selected';
+ }
+ return valuex;
+ });
+ return createNewEntry(esr, clss, item, val);
+ }
+ /**
+ * Processes the set functions returned from `getSetFunctions`. First it
+ * checks for menu options defined in `editor.menuOptions`. If no
+ * options are specified then it checks whether there is a get function
+ * (replace set with get) for the setting. When either of those
+ * conditions are met it will attempt to create a new entry for the
+ * settings menu and push it into the elements array defined above.
+ * It can only do so for get functions which return
+ * strings, numbers, and booleans. A special case is written in for
+ * `getMode` where it looks at the returned objects `$id` property and
+ * forwards that through instead. Other special cases could be written
+ * in but that would get a bit ridiculous.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {object} setObj An item from the array returned by
+ * `getSetFunctions`.
+ */
+ function handleSet (setObj) {
+ var item = setObj.functionName;
+ var esr = setObj.parentObj;
+ var clss = setObj.parentName;
+ var val;
+ var fn = item.replace(/^set/, 'get');
+ if(editor.menuOptions[item] !== undefined) {
+ // has options for select element
+ elements.push(makeDropdown(item, esr, clss, fn));
+ } else if(typeof esr[fn] === 'function') {
+ // has get function
+ try {
+ val = esr[fn]();
+ if(typeof val === 'object') {
+ // setMode takes a string, getMode returns an object
+ // the $id property of that object is the string
+ // which may be given to setMode...
+ val = val.$id;
+ }
+ // the rest of the get functions return strings,
+ // booleans, or numbers.
+ elements.push(
+ createNewEntry(esr, clss, item, val)
+ );
+ } catch (e) {
+ // if there are errors it is because the element
+ // does not belong in the settings menu
+ }
+ }
+ }
+ addEditorMenuOptions(editor);
+ // gather the set functions
+ getSetFunctions(editor).forEach(function(setObj) {
+ // populate the elements array with good stuff.
+ handleSet(setObj);
+ });
+ // sort the menu entries in the elements list so people can find
+ // the settings in alphabetical order.
+ cleanupElementsList();
+ // dump the entries from the elements list and wrap them up in a div
+ return wrapElements();
+};
+
});
\ No newline at end of file
diff --git a/lib/ace/ext/menu_tools/get_editor_keyboard_shortcuts.js b/lib/ace/ext/menu_tools/get_editor_keyboard_shortcuts.js
index 96f830e6..44a24cd7 100644
--- a/lib/ace/ext/menu_tools/get_editor_keyboard_shortcuts.js
+++ b/lib/ace/ext/menu_tools/get_editor_keyboard_shortcuts.js
@@ -1,95 +1,86 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
- * All rights reserved.
- *
- * Contributed to Ajax.org under the BSD license.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*jslint
- indent: 4,
- maxerr: 50,
- white: true,
- browser: true,
- vars: true
-*/
-/*global
- define,
- require
-*/
-
-/**
- * Get Editor Keyboard Shortcuts
- * @fileOverview Get Editor Keyboard Shortcuts
- * Gets a map of keyboard shortcuts to command names for the current platform.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
-
-define(function(require, exports, module) {
-"use strict";
-/**
- * Gets a map of keyboard shortcuts to command names for the current platform.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {ace.Editor} editor An editor instance.
- * @returns {Array} Returns an array of objects representing the keyboard
- * shortcuts for the given editor.
- * @example
- * var getKbShortcuts = require('./get_keyboard_shortcuts');
- * console.log(getKbShortcuts(editor));
- * // [
- * // {'command' : aCommand, 'key' : 'Control-d'},
- * // {'command' : aCommand, 'key' : 'Control-d'}
- * // ]
- */
-module.exports.getEditorKeybordShortcuts = function getEditorKeybordShortcuts (editor) {
- var commands = editor.commands.byName;
- var commandName;
- var key;
- var platform = editor.commands.platform;
- var kb = [];
- for (commandName in commands) {
- try {
- key = commands[commandName].bindKey[platform];
- if (key) {
- kb.push({
- 'command' : commandName,
- 'key' : key
- });
- }
- } catch (e) {
- // errors on properties without bindKey we don't want them
- // so the errors don't need handling.
- }
- }
- return kb;
-};
-
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
+ * All rights reserved.
+ *
+ * Contributed to Ajax.org under the BSD license.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/
+/*global define, require */
+
+/**
+ * Get Editor Keyboard Shortcuts
+ * @fileOverview Get Editor Keyboard Shortcuts
+ * Gets a map of keyboard shortcuts to command names for the current platform.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+
+define(function(require, exports, module) {
+"use strict";
+/**
+ * Gets a map of keyboard shortcuts to command names for the current platform.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {ace.Editor} editor An editor instance.
+ * @returns {Array} Returns an array of objects representing the keyboard
+ * shortcuts for the given editor.
+ * @example
+ * var getKbShortcuts = require('./get_keyboard_shortcuts');
+ * console.log(getKbShortcuts(editor));
+ * // [
+ * // {'command' : aCommand, 'key' : 'Control-d'},
+ * // {'command' : aCommand, 'key' : 'Control-d'}
+ * // ]
+ */
+module.exports.getEditorKeybordShortcuts = function getEditorKeybordShortcuts (editor) {
+ var commands = editor.commands.byName;
+ var commandName;
+ var key;
+ var platform = editor.commands.platform;
+ var kb = [];
+ for (commandName in commands) {
+ try {
+ key = commands[commandName].bindKey[platform];
+ if (key) {
+ kb.push({
+ 'command' : commandName,
+ 'key' : key
+ });
+ }
+ } catch (e) {
+ // errors on properties without bindKey we don't want them
+ // so the errors don't need handling.
+ }
+ }
+ return kb;
+};
+
});
\ No newline at end of file
diff --git a/lib/ace/ext/menu_tools/get_set_functions.js b/lib/ace/ext/menu_tools/get_set_functions.js
index ba5a757b..c292dd03 100644
--- a/lib/ace/ext/menu_tools/get_set_functions.js
+++ b/lib/ace/ext/menu_tools/get_set_functions.js
@@ -1,155 +1,155 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
- * All rights reserved.
- *
- * Contributed to Ajax.org under the BSD license.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*jslint
- indent: 4,
- maxerr: 50,
- white: true,
- browser: true,
- vars: true
-*/
-/*global
- define
-*/
-
-/**
- * Get Set Functions
- * @fileOverview Get Set Functions
- * Gets various functions for setting settings.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
-
-define(function(require, exports, module) {
-'use strict';
-/**
- * Generates a list of set functions for the settings menu.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {object} editor The editor instance
- * @return {array} Returns an array of objects. Each object contains the
- * following properties: functionName, parentObj, and parentName. The
- * function name will be the name of a method beginning with the string
- * `set` which was found. The parent object will be a reference to the
- * object having the method matching the function name. The parent name
- * will be a string representing the identifier of the parent object e.g.
- * `editor`, `session`, or `renderer`.
- */
-module.exports.getSetFunctions = function getSetFunctions (editor) {
- /**
- * Output array. Will hold the objects described above.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
- var out = [];
- /**
- * This object provides a map between the objects which will be
- * traversed and the parent name which will appear in the output.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
- var my = {
- 'editor' : editor,
- 'session' : editor.session,
- 'renderer' : editor.renderer
- };
- /**
- * This array will hold the set function names which have already been
- * found so that they are not added to the output multiple times.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
- var opts = [];
- /**
- * This is a list of set functions which will not appear in the settings
- * menu. I don't know what to do with setKeyboardHandler. When I tried
- * to use it, it didn't appear to be working. Someone who knows better
- * could remove it from this list and add it's options to
- * add_editor_menu_options.js
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
- var skip = [
- 'setOption',
- 'setUndoManager',
- 'setDocument',
- 'setValue',
- 'setBreakpoints',
- 'setScrollTop',
- 'setScrollLeft',
- 'setSelectionStyle',
- 'setWrapLimitRange',
- 'setKeyboardHandler'
- ];
-
-
- /**
- * This will search the objects mapped to the `my` variable above. When
- * it finds a set function in the object that is not listed in the
- * `skip` list or the `opts` list it will push a new object to the
- * output array.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
- [
- 'renderer',
- 'session',
- 'editor'
- ].forEach(function (esra) {
- var fn;
- var esr = my[esra];
- var clss = esra;
- for(fn in esr) {
- if(skip.indexOf(fn) === -1) {
- if(/^set/.test(fn) && opts.indexOf(fn) === -1) {
- // found set function
- opts.push(fn);
- out.push({
- 'functionName' : fn,
- 'parentObj' : esr,
- 'parentName' : clss
- });
- }
- }
- }
- });
- return out;
-};
-
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
+ * All rights reserved.
+ *
+ * Contributed to Ajax.org under the BSD license.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*jslint
+ indent: 4,
+ maxerr: 50,
+ white: true,
+ browser: true,
+ vars: true
+*/
+/*global
+ define
+*/
+
+/**
+ * Get Set Functions
+ * @fileOverview Get Set Functions
+ * Gets various functions for setting settings.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+
+define(function(require, exports, module) {
+'use strict';
+/**
+ * Generates a list of set functions for the settings menu.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {object} editor The editor instance
+ * @return {array} Returns an array of objects. Each object contains the
+ * following properties: functionName, parentObj, and parentName. The
+ * function name will be the name of a method beginning with the string
+ * `set` which was found. The parent object will be a reference to the
+ * object having the method matching the function name. The parent name
+ * will be a string representing the identifier of the parent object e.g.
+ * `editor`, `session`, or `renderer`.
+ */
+module.exports.getSetFunctions = function getSetFunctions (editor) {
+ /**
+ * Output array. Will hold the objects described above.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+ var out = [];
+ /**
+ * This object provides a map between the objects which will be
+ * traversed and the parent name which will appear in the output.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+ var my = {
+ 'editor' : editor,
+ 'session' : editor.session,
+ 'renderer' : editor.renderer
+ };
+ /**
+ * This array will hold the set function names which have already been
+ * found so that they are not added to the output multiple times.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+ var opts = [];
+ /**
+ * This is a list of set functions which will not appear in the settings
+ * menu. I don't know what to do with setKeyboardHandler. When I tried
+ * to use it, it didn't appear to be working. Someone who knows better
+ * could remove it from this list and add it's options to
+ * add_editor_menu_options.js
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+ var skip = [
+ 'setOption',
+ 'setUndoManager',
+ 'setDocument',
+ 'setValue',
+ 'setBreakpoints',
+ 'setScrollTop',
+ 'setScrollLeft',
+ 'setSelectionStyle',
+ 'setWrapLimitRange',
+ 'setKeyboardHandler'
+ ];
+
+
+ /**
+ * This will search the objects mapped to the `my` variable above. When
+ * it finds a set function in the object that is not listed in the
+ * `skip` list or the `opts` list it will push a new object to the
+ * output array.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+ [
+ 'renderer',
+ 'session',
+ 'editor'
+ ].forEach(function(esra) {
+ var fn;
+ var esr = my[esra];
+ var clss = esra;
+ for(fn in esr) {
+ if(skip.indexOf(fn) === -1) {
+ if(/^set/.test(fn) && opts.indexOf(fn) === -1) {
+ // found set function
+ opts.push(fn);
+ out.push({
+ 'functionName' : fn,
+ 'parentObj' : esr,
+ 'parentName' : clss
+ });
+ }
+ }
+ }
+ });
+ return out;
+};
+
});
\ No newline at end of file
diff --git a/lib/ace/ext/menu_tools/overlay_page.js b/lib/ace/ext/menu_tools/overlay_page.js
index 0e18d20e..93b5829d 100644
--- a/lib/ace/ext/menu_tools/overlay_page.js
+++ b/lib/ace/ext/menu_tools/overlay_page.js
@@ -1,116 +1,107 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
- * All rights reserved.
- *
- * Contributed to Ajax.org under the BSD license.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*jslint
- indent: 4,
- maxerr: 50,
- white: true,
- browser: true,
- vars: true
-*/
-/*global
- define,
- require
-*/
-
-/**
- * Overlay Page
- * @fileOverview Overlay Page
- * Generates an overlay for displaying menus. The overlay is an absolutely
- * positioned div.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
-
-define(function(require, exports, module) {
-'use strict';
-
-/**
- * Generates an overlay for displaying menus. The overlay is an absolutely
- * positioned div.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {DOMElement} contentElement Any element which may be presented inside
- * a div.
- * @param {string|number} top absolute position value.
- * @param {string|number} right absolute position value.
- * @param {string|number} bottom absolute position value.
- * @param {string|number} left absolute position value.
- */
-module.exports.overlayPage = function overlayPage (editor, contentElement, top, right, bottom, left) {
- top = (top) ? 'top: ' + top + ';' : '';
- bottom = (bottom) ? 'bottom: ' + bottom + ';' : '';
- right = (right) ? 'right: ' + right + ';' : '';
- left = (left) ? 'left: ' + left + ';' : '';
-
- var closer = document.createElement('div');
- var contentContainer = document.createElement('div');
-
- function documentEscListener (e) {
- if (e.keyCode === 27) {
- closer.click();
- }
- }
-
- closer.style.cssText = 'margin: 0; padding: 0; ' +
- 'position: fixed; top:0; bottom:0; left:0; right:0;' +
- 'z-index: 9990; ' +
- 'background-color: rgba(0, 0, 0, 0.2);';
- closer.addEventListener('click', function () {
- document.removeEventListener('keydown', documentEscListener);
- closer.parentNode.removeChild(closer);
- editor.focus();
- closer = null;
- });
- // click closer if esc key is pressed
- document.addEventListener('keydown', documentEscListener);
-
- contentContainer.style.cssText = 'margin: 0; padding: 0; ' +
- 'position: absolute;' +
- top + right + bottom + left +
- 'z-index: 9991; ' +
- 'box-shadow: rgba(126, 126, 126, 0.25) -20px 10px 25px; ' +
- 'background-color: rgba(255, 255, 255, 0.6);' +
- 'color: black; overflow: auto;';
- contentContainer.addEventListener('click', function (e) {
- e.stopPropagation();
- });
-
- contentContainer.appendChild(contentElement);
- closer.appendChild(contentContainer);
- document.body.appendChild(closer);
- editor.blur();
-};
-
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
+ * All rights reserved.
+ *
+ * Contributed to Ajax.org under the BSD license.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/
+/*global define, require */
+
+/**
+ * Overlay Page
+ * @fileOverview Overlay Page
+ * Generates an overlay for displaying menus. The overlay is an absolutely
+ * positioned div.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+
+define(function(require, exports, module) {
+'use strict';
+
+/**
+ * Generates an overlay for displaying menus. The overlay is an absolutely
+ * positioned div.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {DOMElement} contentElement Any element which may be presented inside
+ * a div.
+ * @param {string|number} top absolute position value.
+ * @param {string|number} right absolute position value.
+ * @param {string|number} bottom absolute position value.
+ * @param {string|number} left absolute position value.
+ */
+module.exports.overlayPage = function overlayPage (editor, contentElement, top, right, bottom, left) {
+ top = (top) ? 'top: ' + top + ';' : '';
+ bottom = (bottom) ? 'bottom: ' + bottom + ';' : '';
+ right = (right) ? 'right: ' + right + ';' : '';
+ left = (left) ? 'left: ' + left + ';' : '';
+
+ var closer = document.createElement('div');
+ var contentContainer = document.createElement('div');
+
+ function documentEscListener (e) {
+ if (e.keyCode === 27) {
+ closer.click();
+ }
+ }
+
+ closer.style.cssText = 'margin: 0; padding: 0; ' +
+ 'position: fixed; top:0; bottom:0; left:0; right:0;' +
+ 'z-index: 9990; ' +
+ 'background-color: rgba(0, 0, 0, 0.2);';
+ closer.addEventListener('click', function() {
+ document.removeEventListener('keydown', documentEscListener);
+ closer.parentNode.removeChild(closer);
+ editor.focus();
+ closer = null;
+ });
+ // click closer if esc key is pressed
+ document.addEventListener('keydown', documentEscListener);
+
+ contentContainer.style.cssText = 'margin: 0; padding: 0; ' +
+ 'position: absolute;' +
+ top + right + bottom + left +
+ 'z-index: 9991; ' +
+ 'box-shadow: rgba(126, 126, 126, 0.25) -20px 10px 25px; ' +
+ 'background-color: rgba(255, 255, 255, 0.6);' +
+ 'color: black; overflow: auto;';
+ contentContainer.addEventListener('click', function(e) {
+ e.stopPropagation();
+ });
+
+ contentContainer.appendChild(contentElement);
+ closer.appendChild(contentContainer);
+ document.body.appendChild(closer);
+ editor.blur();
+};
+
});
\ No newline at end of file
diff --git a/lib/ace/ext/modelist.js b/lib/ace/ext/modelist.js
index f3bf695b..27f8bb6e 100644
--- a/lib/ace/ext/modelist.js
+++ b/lib/ace/ext/modelist.js
@@ -34,7 +34,7 @@ var Mode = function(name, desc, extensions) {
}) + "$";
} else {
var re = "^.*\\.(" + extensions + ")$";
- }
+ }
this.extRe = new RegExp(re, "gi");
};
diff --git a/lib/ace/ext/searchbox.js b/lib/ace/ext/searchbox.js
index 71cab2ac..a0d8d6da 100644
--- a/lib/ace/ext/searchbox.js
+++ b/lib/ace/ext/searchbox.js
@@ -168,7 +168,7 @@ var SearchBox = function(editor, range, showReplaceForm) {
(sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();
}
});
-
+
this.$searchBarKb.addCommands([{
name: "toggleRegexpMode",
bindKey: {win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/"},
@@ -191,7 +191,7 @@ var SearchBox = function(editor, range, showReplaceForm) {
sb.$syncOptions();
}
}]);
-
+
this.$syncOptions = function() {
dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked);
dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked);
@@ -224,7 +224,7 @@ var SearchBox = function(editor, range, showReplaceForm) {
this.editor.replaceAll(this.replaceInput.value);
};
- this.hide = function () {
+ this.hide = function() {
this.element.style.display = "none";
this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);
this.editor.focus();
diff --git a/lib/ace/ext/show_settings_menu.js b/lib/ace/ext/settings_menu.js
similarity index 83%
rename from lib/ace/ext/show_settings_menu.js
rename to lib/ace/ext/settings_menu.js
index 15eb8027..6cccf5c8 100644
--- a/lib/ace/ext/show_settings_menu.js
+++ b/lib/ace/ext/settings_menu.js
@@ -1,94 +1,76 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
- * All rights reserved.
- *
- * Contributed to Ajax.org under the BSD license.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*jslint
- indent: 4,
- maxerr: 50,
- white: true,
- browser: true,
- vars: true
-*/
-/*global
- define,
- require,
- getComputedStyle
-*/
-
-/**
- * Show Settings Menu
- * @fileOverview Show Settings Menu
- * Displays an interactive settings menu mostly generated on the fly based on
- * the current state of the editor.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
-
-define(function(require, exports, module) {
- "use strict";
- /**
- * This displays the settings menu if it is not already being shown.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- * @param {ace.Editor} editor An instance of the ace editor.
- */
- function showSettingsMenu (editor) {
- var overlayPage = require('./menu_tools/overlay_page').overlayPage;
- var generateSettingsMenu = require(
- './menu_tools/generate_settings_menu').generateSettingsMenu;
- // make sure the menu isn't open already.
- if(!document.getElementById('settingsmenu')) {
- overlayPage(editor, generateSettingsMenu(editor), '0', '0', '0');
- }
- }
- /**
- * Initializes the settings menu extension. It adds the showSettingsMenu
- * method to the given editor object and adds the showSettingsMenu command
- * to the editor with appropriate keyboard shortcuts.
- * @param {ace.Editor} editor An instance of the Editor.
- */
- module.exports.init = function (editor) {
- var Editor = require("ace/editor").Editor;
- Editor.prototype.showSettingsMenu = function () {
- showSettingsMenu(this);
- };
- editor.commands.addCommands([{
- name: "showSettingsMenu",
- bindKey: {win: "Ctrl-q", mac: "Command-q"},
- exec: function(editor, line) {
- editor.showSettingsMenu();
- },
- readOnly: true
- }]);
- };
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
+ * All rights reserved.
+ *
+ * Contributed to Ajax.org under the BSD license.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/
+/*global define, require */
+
+/**
+ * Show Settings Menu
+ * @fileOverview Show Settings Menu
+ * Displays an interactive settings menu mostly generated on the fly based on
+ * the current state of the editor.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+
+define(function(require, exports, module) {
+ "use strict";
+ /**
+ * This displays the settings menu if it is not already being shown.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ * @param {ace.Editor} editor An instance of the ace editor.
+ */
+ function showSettingsMenu (editor) {
+ var overlayPage = require('./menu_tools/overlay_page').overlayPage;
+ var generateSettingsMenu = require(
+ './menu_tools/generate_settings_menu').generateSettingsMenu;
+ // make sure the menu isn't open already.
+ if(!document.getElementById('settingsmenu')) {
+ overlayPage(editor, generateSettingsMenu(editor), '0', '0', '0');
+ }
+ }
+ /**
+ * Initializes the settings menu extension. It adds the showSettingsMenu
+ * method to the given editor object and adds the showSettingsMenu command
+ * to the editor with appropriate keyboard shortcuts.
+ * @param {ace.Editor} editor An instance of the Editor.
+ */
+ module.exports.init = function(editor) {
+ var Editor = require("ace/editor").Editor;
+ Editor.prototype.showSettingsMenu = function() {
+ showSettingsMenu(this);
+ };
+ };
});
\ No newline at end of file
diff --git a/lib/ace/ext/spellcheck.js b/lib/ace/ext/spellcheck.js
index b3600e5f..af596a49 100644
--- a/lib/ace/ext/spellcheck.js
+++ b/lib/ace/ext/spellcheck.js
@@ -19,7 +19,7 @@ exports.contextMenuHandler = function(e){
text.value = value;
text.setSelectionRange(w.length + 1, w.length + 1);
text.setSelectionRange(0, 0);
-
+
var afterKeydown = false;
event.addListener(text, "keydown", function onKeydown() {
event.removeListener(text, "keydown", onKeydown);
@@ -44,7 +44,7 @@ exports.contextMenuHandler = function(e){
return "";
}
}
-
+
return newVal;
});
};
@@ -58,7 +58,7 @@ require("../config").defineOptions(Editor.prototype, "editor", {
if (!val)
this.removeListener("nativecontextmenu", exports.contextMenuHandler);
else
- this.on("nativecontextmenu", exports.contextMenuHandler);
+ this.on("nativecontextmenu", exports.contextMenuHandler);
},
value: true
}
diff --git a/lib/ace/ext/static.css b/lib/ace/ext/static.css
index 7d785b49..c080b575 100644
--- a/lib/ace/ext/static.css
+++ b/lib/ace/ext/static.css
@@ -3,12 +3,12 @@
font-size: 12px;
}
-.ace_editor .ace_gutter {
+.ace_editor .ace_gutter {
width: 25px !important;
display: block;
float: left;
- text-align: right;
- padding: 0 3px 0 0;
+ text-align: right;
+ padding: 0 3px 0 0;
margin-right: 3px;
}
diff --git a/lib/ace/ext/static_highlight.js b/lib/ace/ext/static_highlight.js
index 4a44b22e..3585476c 100644
--- a/lib/ace/ext/static_highlight.js
+++ b/lib/ace/ext/static_highlight.js
@@ -3,7 +3,7 @@
*
* Copyright (c) 2010, Ajax.org B.V.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
@@ -14,7 +14,7 @@
* * Neither the name of Ajax.org B.V. nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@@ -39,8 +39,8 @@ var config = require("../config");
* Transforms a given input code snippet into HTML using the given mode
*
* @param {string} input Code snippet
- * @param {string|mode} mode String specifying the mode to load such as
- * `ace/mode/javascript` or, a mode loaded from `/ace/mode`
+ * @param {string|mode} mode String specifying the mode to load such as
+ * `ace/mode/javascript` or, a mode loaded from `/ace/mode`
* (use 'ServerSideHiglighter.getMode').
* @param {string|theme} theme String specifying the theme to load such as
* `ace/theme/twilight` or, a theme loaded from `/ace/theme`.
@@ -57,25 +57,25 @@ var config = require("../config");
exports.render = function(input, mode, theme, lineStart, disableGutter, callback) {
var waiting = 0
-
- // if either the theme or the mode were specified as objects
+
+ // if either the theme or the mode were specified as objects
// then we need to lazily load them.
if (typeof theme == "string") {
waiting++;
- config.loadModule(['theme', theme], function (m) {
+ config.loadModule(['theme', theme], function(m) {
theme = m;
--waiting || done();
});
}
-
+
if (typeof mode == "string") {
waiting++;
- config.loadModule(['mode', mode], function (m) {
+ config.loadModule(['mode', mode], function(m) {
mode = new m.Mode()
--waiting || done();
});
}
-
+
// loads or passes the specified mode module then calls renderer
function done() {
var result = exports.renderSync(input, mode, theme, lineStart, disableGutter);
@@ -94,20 +94,20 @@ exports.render = function(input, mode, theme, lineStart, disableGutter, callback
exports.renderSync = function(input, mode, theme, lineStart, disableGutter) {
lineStart = parseInt(lineStart || 1, 10);
-
+
var session = new EditSession("");
session.setUseWorker(false);
session.setMode(mode);
-
+
var textLayer = new TextLayer(document.createElement("div"));
textLayer.setSession(session);
textLayer.config = {
characterWidth: 10,
lineHeight: 20
};
-
+
session.setValue(input);
-
+
var stringBuilder = [];
var length = session.getLength();
@@ -118,16 +118,16 @@ exports.renderSync = function(input, mode, theme, lineStart, disableGutter) {
textLayer.$renderLine(stringBuilder, ix, true, false);
stringBuilder.push("");
}
-
+
// let's prepare the whole html
var html = "".replace(/:cssClass/, theme.cssClass).replace(/:code/, stringBuilder.join(""));
-
+
textLayer.destroy();
-
+
return {
css: baseStyles + theme.cssText,
html: html
diff --git a/lib/ace/ext/static_highlight_test.js b/lib/ace/ext/static_highlight_test.js
index 0cebda9b..2113d14f 100644
--- a/lib/ace/ext/static_highlight_test.js
+++ b/lib/ace/ext/static_highlight_test.js
@@ -13,7 +13,7 @@ var JavaScriptMode = require("../mode/javascript").Mode;
// Execution ORDER: test.setUpSuite, setUp, testFn, tearDown, test.tearDownSuite
module.exports = {
timeout: 10000,
-
+
"test simple snippet": function(next) {
var theme = require("../theme/tomorrow");
var snippet = "\
@@ -24,13 +24,13 @@ function hello (a, b, c) {\n\
console.log(a * b + c + 'sup?');\n\
}";
var mode = new JavaScriptMode();
-
+
var result = highlighter.render(snippet, mode, theme);
assert.equal(result.html, " 1
2
3
4function\xa0hello\xa0(a,\xa0b,\xa0c)\xa0{
5\xa0\xa0\xa0\xa0console.log(a\xa0*\xa0b\xa0+\xa0c\xa0+\xa0'sup?');
6}
");
assert.ok(!!result.css);
next();
},
-
+
"test css from theme is used": function(next) {
var theme = require("../theme/tomorrow");
var snippet = "\
@@ -41,16 +41,16 @@ function hello (a, b, c) {\n\
console.log(a * b + c + 'sup?');\n\
}";
var mode = new JavaScriptMode();
-
+
var isError = false, result;
result = highlighter.render(snippet, mode, theme);
-
+
assert.ok(result.css.indexOf(theme.cssText) !== -1);
-
+
next();
},
-
- "test theme classname should be in output html": function (next) {
+
+ "test theme classname should be in output html": function(next) {
var theme = require("../theme/tomorrow");
var snippet = "\
/** this is a function\n\
@@ -60,11 +60,11 @@ function hello (a, b, c) {\n\
console.log(a * b + c + 'sup?');\n\
}";
var mode = new JavaScriptMode();
-
+
var isError = false, result;
result = highlighter.render(snippet, mode, theme);
assert.equal(!!result.html.match(//), true);
-
+
next();
}
};
diff --git a/lib/ace/ext/textarea.js b/lib/ace/ext/textarea.js
index 6b10063a..a402e65f 100644
--- a/lib/ace/ext/textarea.js
+++ b/lib/ace/ext/textarea.js
@@ -3,7 +3,7 @@
*
* Copyright (c) 2010, Ajax.org B.V.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
@@ -14,7 +14,7 @@
* * Neither the name of Ajax.org B.V. nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@@ -232,7 +232,7 @@ exports.transformTextarea = function(element, loader) {
// Create the setting's panel.
setupSettingPanel(settingDiv, settingOpener, editor, options);
-
+
var state = "";
event.addListener(settingOpener, "mousemove", function(e) {
var rect = this.getBoundingClientRect();
@@ -245,7 +245,7 @@ exports.transformTextarea = function(element, loader) {
this.style.cursor = "nw-resize";
}
});
-
+
event.addListener(settingOpener, "mousedown", function(e) {
if (state == "toggle") {
editor.setDisplaySettings();
@@ -294,7 +294,7 @@ function setupApi(editor, editorDiv, settingDiv, ace, options, loader) {
editor.focus();
};
};
-
+
editor.setOption = function(key, value) {
if (options[key] == value) return;
@@ -335,7 +335,7 @@ function setupApi(editor, editorDiv, settingDiv, ace, options, loader) {
case "vim":
editor.setKeyboardHandler("ace/keyboard/vim");
break;
- case "emacs":
+ case "emacs":
editor.setKeyboardHandler("ace/keyboard/emacs");
break;
default:
diff --git a/lib/ace/ext/themelist.js b/lib/ace/ext/themelist.js
index 9610e691..1032f72c 100644
--- a/lib/ace/ext/themelist.js
+++ b/lib/ace/ext/themelist.js
@@ -1,88 +1,79 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
- * All rights reserved.
- *
- * Contributed to Ajax.org under the BSD license.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*jslint
- indent: 4,
- maxerr: 50,
- white: true,
- browser: true,
- vars: true
-*/
-/*global
- define,
- require
-*/
-
-/**
- * Generates a list of themes available when ace was built.
- * @fileOverview Generates a list of themes available when ace was built.
- * @author
- * Matthew Christopher Kastor-Inare III
- * ☭ Hial Atropa!! ☭
- */
-
-define(function(require, exports, module) {
-"use strict";
-
-/**
- * An array containing information about available themes.
- */
-module.exports.themes = require('ace/ext/themelist_utils/themes').themes;
-
-/**
- * Creates a theme description.
- * @param {string} name The file name of the theme.
- * @returns {ThemeDescription} Returns a theme description object which has
- * three properties: the name gives the filename, the desc gives a menu
- * friendly name, and the theme gives the string to set the theme with
- * `setTheme`
- */
-module.exports.ThemeDescription = function(name) {
- this.name = name;
- this.desc = name.split('_'
- ).map(
- function (namePart) {
- return namePart[0].toUpperCase() + namePart.slice(1);
- }
- ).join(' ');
- this.theme = "ace/theme/" + name;
-};
-
-module.exports.themesByName = {};
-
-module.exports.themes = module.exports.themes.map(function (name) {
- module.exports.themesByName[name] = new module.exports.ThemeDescription(name);
- return module.exports.themesByName[name];
-});
-
-});
-
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
+ * All rights reserved.
+ *
+ * Contributed to Ajax.org under the BSD license.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/
+/*global define, require */
+
+/**
+ * Generates a list of themes available when ace was built.
+ * @fileOverview Generates a list of themes available when ace was built.
+ * @author
+ * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭
+ */
+
+define(function(require, exports, module) {
+"use strict";
+
+/**
+ * An array containing information about available themes.
+ */
+module.exports.themes = require('ace/ext/themelist_utils/themes').themes;
+
+/**
+ * Creates a theme description.
+ * @param {string} name The file name of the theme.
+ * @returns {ThemeDescription} Returns a theme description object which has
+ * three properties: the name gives the filename, the desc gives a menu
+ * friendly name, and the theme gives the string to set the theme with
+ * `setTheme`
+ */
+module.exports.ThemeDescription = function(name) {
+ this.name = name;
+ this.desc = name.split('_'
+ ).map(
+ function(namePart) {
+ return namePart[0].toUpperCase() + namePart.slice(1);
+ }
+ ).join(' ');
+ this.theme = "ace/theme/" + name;
+};
+
+module.exports.themesByName = {};
+
+module.exports.themes = module.exports.themes.map(function(name) {
+ module.exports.themesByName[name] = new module.exports.ThemeDescription(name);
+ return module.exports.themesByName[name];
+});
+
+});
+
diff --git a/lib/ace/ext/whitespace.js b/lib/ace/ext/whitespace.js
index 2378cadd..234a9579 100644
--- a/lib/ace/ext/whitespace.js
+++ b/lib/ace/ext/whitespace.js
@@ -55,23 +55,23 @@ exports.$detectIndentation = function(lines, fallback) {
var diff = spaces - prevSpaces;
if (diff > 0 && !(prevSpaces%diff) && !(spaces%diff))
changes[diff] = (changes[diff] || 0) + 1;
-
+
stats[spaces] = (stats[spaces] || 0) + 1;
}
prevSpaces = spaces;
-
+
// ignore lines ending with backslash
while (line[line.length - 1] == "\\")
line = lines[i++];
- };
-
+ };
+
function getScore(indent) {
var score = 0;
for (var i = indent; i < stats.length; i += indent)
score += stats[i] || 0;
return score;
}
-
+
var changesTotal = changes.reduce(function(a,b){return a+b}, 0);
var first = {score: 0, length: 0};
@@ -86,17 +86,17 @@ exports.$detectIndentation = function(lines, fallback) {
if (changes[i]) {
score += changes[i] / changesTotal;
}
-
+
if (score > first.score)
first = {score: score, length: i};
}
-
+
if (first.score && first.score > 1.4)
var tabLength = first.length;
-
+
if (tabIndents > spaceIndents + 1)
return {ch: "\t", length: tabLength};
-
+
if (spaceIndents + 1 > tabIndents)
return {ch: " ", length: tabLength};
};
@@ -104,10 +104,10 @@ exports.$detectIndentation = function(lines, fallback) {
exports.detectIndentation = function(session) {
var lines = session.getLines(0, 1000);
var indent = exports.$detectIndentation(lines) || {};
-
+
if (indent.ch)
session.setUseSoftTabs(indent.ch == " ");
-
+
if (indent.length)
session.setTabSize(indent.length);
return indent;
@@ -131,9 +131,9 @@ exports.convertIndentation = function(session, ch, len) {
var oldLen = session.getTabSize();
if (!len) len = oldLen;
if (!ch) ch = oldCh;
-
+
var tab = ch == "\t" ? ch: lang.stringRepeat(ch, len);
-
+
var doc = session.doc;
var lines = doc.getAllLines();
@@ -148,10 +148,10 @@ exports.convertIndentation = function(session, ch, len) {
var reminder = w%oldLen;
var toInsert = cache[tabCount] || (cache[tabCount] = lang.stringRepeat(tab, tabCount));
toInsert += spaceCache[reminder] || (spaceCache[reminder] = lang.stringRepeat(" ", reminder));
-
+
if (toInsert != match) {
doc.removeInLine(i, 0, match.length);
- doc.insertInLine({row: i, column: 0}, toInsert);
+ doc.insertInLine({row: i, column: 0}, toInsert);
}
}
}