This commit is contained in:
Fabian Jakobs 2011-12-19 15:15:17 +01:00
commit 65c0bd1213
28 changed files with 78 additions and 136 deletions

View file

@ -36,40 +36,42 @@
* ***** END LICENSE BLOCK ***** */ * ***** END LICENSE BLOCK ***** */
define(function(require, exports, module) { define(function(require, exports, module) {
"use strict";
require("./lib/fixoldbrowsers"); require("./lib/fixoldbrowsers");
var Dom = require("./lib/dom"); var Dom = require("./lib/dom");
var Event = require("./lib/event"); var Event = require("./lib/event");
var Editor = require("./editor").Editor; var Editor = require("./editor").Editor;
var EditSession = require("./edit_session").EditSession; var EditSession = require("./edit_session").EditSession;
var UndoManager = require("./undomanager").UndoManager; var UndoManager = require("./undomanager").UndoManager;
var Renderer = require("./virtual_renderer").VirtualRenderer; var Renderer = require("./virtual_renderer").VirtualRenderer;
exports.edit = function(el) { exports.edit = function(el) {
if (typeof(el) == "string") { if (typeof(el) == "string") {
el = document.getElementById(el); el = document.getElementById(el);
} }
var doc = new EditSession(Dom.getInnerText(el)); var doc = new EditSession(Dom.getInnerText(el));
doc.setUndoManager(new UndoManager()); doc.setUndoManager(new UndoManager());
el.innerHTML = ''; el.innerHTML = '';
var editor = new Editor(new Renderer(el, require("./theme/textmate"))); var editor = new Editor(new Renderer(el, require("./theme/textmate")));
editor.setSession(doc); editor.setSession(doc);
var env = {}; var env = {};
env.document = doc; env.document = doc;
env.editor = editor; env.editor = editor;
editor.resize();
Event.addListener(window, "resize", function() {
editor.resize(); editor.resize();
Event.addListener(window, "resize", function() { });
editor.resize(); el.env = env;
}); // Store env on editor such that it can be accessed later on from
el.env = env; // the returned object.
// Store env on editor such that it can be accessed later on from editor.env = env;
// the returned object. return editor;
editor.env = env; };
return editor;
};
}); });

View file

@ -285,8 +285,7 @@ module.exports = {
}, },
"test: documentToScreen with soft wrap and multibyte characters": function() { "test: documentToScreen with soft wrap and multibyte characters": function() {
var session = new EditSession(["ぁぁa"]);
session = new EditSession(["ぁぁa"]);
session.setUseWrapMode(true); session.setUseWrapMode(true);
session.setWrapLimitRange(2, 2); session.setWrapLimitRange(2, 2);
session.adjustWrapLimit(80); session.adjustWrapLimit(80);
@ -342,7 +341,7 @@ module.exports = {
}, },
"test: screenToDocument with soft wrap and multi byte characters": function() { "test: screenToDocument with soft wrap and multi byte characters": function() {
session = new EditSession(["ぁ a"]); var session = new EditSession(["ぁ a"]);
session.setUseWrapMode(true); session.setUseWrapMode(true);
session.adjustWrapLimit(80); session.adjustWrapLimit(80);
@ -374,9 +373,6 @@ module.exports = {
}, },
"test: wrapLine split function" : function() { "test: wrapLine split function" : function() {
var splits;
var c = 0;
function computeAndAssert(line, assertEqual, wrapLimit, tabSize) { function computeAndAssert(line, assertEqual, wrapLimit, tabSize) {
wrapLimit = wrapLimit || 12; wrapLimit = wrapLimit || 12;
tabSize = tabSize || 4; tabSize = tabSize || 4;
@ -618,9 +614,9 @@ module.exports = {
}, },
"test getFoldsInRange()": function() { "test getFoldsInRange()": function() {
var session = createFoldTestSession(), var session = createFoldTestSession();
foldLines = session.$foldData; var foldLines = session.$foldData;
folds = foldLines[0].folds.concat(foldLines[1].folds); var folds = foldLines[0].folds.concat(foldLines[1].folds);
function test(startRow, startColumn, endColumn, endRow, folds) { function test(startRow, startColumn, endColumn, endRow, folds) {
var r = new Range(startRow, startColumn, endColumn, endRow); var r = new Range(startRow, startColumn, endColumn, endRow);

View file

@ -46,7 +46,6 @@ define(function(require, exports, module) {
var EditSession = require("./edit_session").EditSession; var EditSession = require("./edit_session").EditSession;
var Editor = require("./editor").Editor; var Editor = require("./editor").Editor;
var MockRenderer = require("./test/mockrenderer").MockRenderer; var MockRenderer = require("./test/mockrenderer").MockRenderer;
var TextMode = require("./mode/text").Mode;
var assert = require("./test/assertions"); var assert = require("./test/assertions");
var lipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + var lipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " +

View file

@ -44,7 +44,7 @@ exports.inherits = (function() {
ctor.super_ = superCtor.prototype; ctor.super_ = superCtor.prototype;
ctor.prototype = new tempCtor(); ctor.prototype = new tempCtor();
ctor.prototype.constructor = ctor; ctor.prototype.constructor = ctor;
} };
}()); }());
exports.mixin = function(obj, mixin) { exports.mixin = function(obj, mixin) {

View file

@ -1,13 +1,15 @@
define(function(require, exports, module) { /**
* Based on code from:
*
* XRegExp 1.5.0
* (c) 2007-2010 Steven Levithan
* MIT License
* <http://xregexp.com>
* Provides an augmented, extensible, cross-browser implementation of regular expressions,
* including support for additional syntax, flags, and methods
*/
// Based on code from: define(function(require, exports, module) {
//
// XRegExp 1.5.0
// (c) 2007-2010 Steven Levithan
// MIT License
// <http://xregexp.com>
// Provides an augmented, extensible, cross-browser implementation of regular expressions,
// including support for additional syntax, flags, and methods
//--------------------------------- //---------------------------------
// Private variables // Private variables

View file

@ -39,7 +39,6 @@ define(function(require, exports, module) {
var os = (navigator.platform.match(/mac|win|linux/i) || ["other"])[0].toLowerCase(); var os = (navigator.platform.match(/mac|win|linux/i) || ["other"])[0].toLowerCase();
var ua = navigator.userAgent; var ua = navigator.userAgent;
var av = navigator.appVersion;
/** Is the user using a browser that identifies itself as Windows */ /** Is the user using a browser that identifies itself as Windows */
exports.isWin = (os == "win"); exports.isWin = (os == "win");
@ -60,7 +59,7 @@ exports.isOldIE = exports.isIE && exports.isIE < 9;
exports.isGecko = exports.isMozilla = window.controllers && window.navigator.product === "Gecko"; exports.isGecko = exports.isMozilla = window.controllers && window.navigator.product === "Gecko";
/** oldGecko == rev < 2.0 **/ /** oldGecko == rev < 2.0 **/
exports.isOldGecko = exports.isGecko && parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1]) < 4; exports.isOldGecko = exports.isGecko && parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1], 10) < 4;
/** Is this Opera */ /** Is this Opera */
exports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == "[object Opera]"; exports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == "[object Opera]";
@ -84,9 +83,9 @@ exports.isTouchPad = ua.indexOf("TouchPad") >= 0;
* Windows folks expect to use CTRL + C * Windows folks expect to use CTRL + C
*/ */
exports.OS = { exports.OS = {
LINUX: 'LINUX', LINUX: "LINUX",
MAC: 'MAC', MAC: "MAC",
WINDOWS: 'WINDOWS' WINDOWS: "WINDOWS"
}; };
/** /**
@ -94,11 +93,11 @@ exports.OS = {
*/ */
exports.getOS = function() { exports.getOS = function() {
if (exports.isMac) { if (exports.isMac) {
return exports.OS['MAC']; return exports.OS.MAC;
} else if (exports.isLinux) { } else if (exports.isLinux) {
return exports.OS['LINUX']; return exports.OS.LINUX;
} else { } else {
return exports.OS['WINDOWS']; return exports.OS.WINDOWS;
} }
}; };

View file

@ -53,7 +53,7 @@ oop.inherits(Worker, Mirror);
this.onUpdate = function() { this.onUpdate = function() {
var value = this.doc.getValue(); var value = this.doc.getValue();
result = CSSLint.verify(value); var result = CSSLint.verify(value);
this.sender.emit("csslint", result.messages.map(function(msg) { this.sender.emit("csslint", result.messages.map(function(msg) {
delete msg.rule; delete msg.rule;
return msg; return msg;

View file

@ -39,7 +39,6 @@
define(function(require, exports, module) { define(function(require, exports, module) {
var oop = require("../lib/oop"); var oop = require("../lib/oop");
var lang = require("../lib/lang");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var JsonHighlightRules = function() { var JsonHighlightRules = function() {

View file

@ -12,12 +12,10 @@ var Mode = function()
}; };
oop.inherits(Mode, TextMode); oop.inherits(Mode, TextMode);
(function() (function() {
{
this.toggleCommentLines = function(state, doc, startRow, endRow) { this.toggleCommentLines = function(state, doc, startRow, endRow) {
// This code is adapted from ruby.js // This code is adapted from ruby.js
var outdent = true; var outdent = true;
var outentedRows = [];
// LaTeX comments begin with % and go to the end of the line // LaTeX comments begin with % and go to the end of the line
var commentRegEx = /^(\s*)\%/; var commentRegEx = /^(\s*)\%/;

View file

@ -3,8 +3,7 @@ define(function(require, exports, module) {
var oop = require("../lib/oop"); var oop = require("../lib/oop");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var LatexHighlightRules = function() var LatexHighlightRules = function() {
{
this.$rules = { this.$rules = {
"start" : [{ "start" : [{
// A tex command e.g. \foo // A tex command e.g. \foo

View file

@ -42,7 +42,6 @@ var oop = require("../lib/oop");
var TextMode = require("./text").Mode; var TextMode = require("./text").Mode;
var Tokenizer = require("../tokenizer").Tokenizer; var Tokenizer = require("../tokenizer").Tokenizer;
var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules;
var Range = require("../range").Range;
var Mode = function() { var Mode = function() {
this.$tokenizer = new Tokenizer(new LuaHighlightRules().getRules()); this.$tokenizer = new Tokenizer(new LuaHighlightRules().getRules());
@ -55,7 +54,6 @@ oop.inherits(Mode, TextMode);
var tokenizedLine = this.$tokenizer.getLineTokens(line, state); var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
var tokens = tokenizedLine.tokens; var tokens = tokenizedLine.tokens;
var endState = tokenizedLine.state;
var chunks = ["function", "then", "do", "repeat"]; var chunks = ["function", "then", "do", "repeat"];
@ -79,39 +77,6 @@ oop.inherits(Mode, TextMode);
return indent; return indent;
}; };
/*this.checkOutdent = function(state, line, input) {
if (input !== "\r\n" && input !== "\r" && input !== "\n")
return false;
var tokens = this.$tokenizer.getLineTokens(line.trim(), state).tokens;
if (!tokens)
return false;
// ignore trailing comments
do {
var last = tokens.pop();
} while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/))));
if (!last)
return false;
var outdents = {
"end" : 1,
"until" : 1,
"else" : 1
}
return (last.type == "keyword" && outdents[last.value]);
};
this.autoOutdent = function(state, doc, row) {
console.log(doc, row);
var indent = this.$getIndent(doc.getLine(row));
var tab = doc.getTabString();
if (indent.slice(-tab.length) == tab)
doc.remove(new Range(row, indent.length-tab.length, row, indent.length));
};*/
}).call(Mode.prototype); }).call(Mode.prototype);
exports.Mode = Mode; exports.Mode = Mode;

View file

@ -47,7 +47,6 @@ var XmlMode = require("./xml").Mode;
var HtmlMode = require("./html").Mode; var HtmlMode = require("./html").Mode;
var Tokenizer = require("../tokenizer").Tokenizer; var Tokenizer = require("../tokenizer").Tokenizer;
var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules;
var Range = require("../range").Range;
var Mode = function() { var Mode = function() {
var highlighter = new MarkdownHighlightRules(); var highlighter = new MarkdownHighlightRules();

View file

@ -46,11 +46,11 @@ var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
function github_embed(tag, prefix) { function github_embed(tag, prefix) {
return { // Github style block return { // Github style block
token : "support.function", token : "support.function",
regex : "^```" + tag + "\\s*$", regex : "^```" + tag + "\\s*$",
next : prefix + "start" next : prefix + "start"
} };
} }
var MarkdownHighlightRules = function() { var MarkdownHighlightRules = function() {

View file

@ -2,7 +2,6 @@ define(function(require, exports, module) {
var oop = require("../lib/oop"); var oop = require("../lib/oop");
var lang = require("../lib/lang"); var lang = require("../lib/lang");
var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var PowershellHighlightRules = function() { var PowershellHighlightRules = function() {

View file

@ -55,7 +55,6 @@ oop.inherits(Mode, TextMode);
this.toggleCommentLines = function(state, doc, startRow, endRow) { this.toggleCommentLines = function(state, doc, startRow, endRow) {
var outdent = true; var outdent = true;
var outentedRows = [];
var re = /^(\s*)#/; var re = /^(\s*)#/;
for (var i=startRow; i<= endRow; i++) { for (var i=startRow; i<= endRow; i++) {
@ -87,7 +86,6 @@ oop.inherits(Mode, TextMode);
var tokenizedLine = this.$tokenizer.getLineTokens(line, state); var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
var tokens = tokenizedLine.tokens; var tokens = tokenizedLine.tokens;
var endState = tokenizedLine.state;
if (tokens.length && tokens[tokens.length-1].type == "comment") { if (tokens.length && tokens[tokens.length-1].type == "comment") {
return indent; return indent;

View file

@ -16,9 +16,7 @@
* the provisions above, a recipient may use your version of this file under * the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL. * the terms of any one of the MPL, the GPL or the LGPL.
* *
* ***** END LICENSE BLOCK ***** * ***** END LICENSE BLOCK ***** */
*
*/
define(function(require, exports, module) { define(function(require, exports, module) {

View file

@ -53,7 +53,7 @@ module.exports = {
"test: toggle comment lines should not do anything" : function() { "test: toggle comment lines should not do anything" : function() {
var session = new EditSession([" abc", "cde", "fg"]); var session = new EditSession([" abc", "cde", "fg"]);
var comment = this.mode.toggleCommentLines("start", session, 0, 1); this.mode.toggleCommentLines("start", session, 0, 1);
assert.equal([" abc", "cde", "fg"].join("\n"), session.toString()); assert.equal([" abc", "cde", "fg"].join("\n"), session.toString());
}, },

View file

@ -42,19 +42,15 @@ var TextMode = require("./text").Mode;
var Tokenizer = require("../tokenizer").Tokenizer; var Tokenizer = require("../tokenizer").Tokenizer;
var TextileHighlightRules = require("./textile_highlight_rules").TextileHighlightRules; var TextileHighlightRules = require("./textile_highlight_rules").TextileHighlightRules;
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
var Range = require("../range").Range;
var Mode = function() var Mode = function() {
{
this.$tokenizer = new Tokenizer(new TextileHighlightRules().getRules()); this.$tokenizer = new Tokenizer(new TextileHighlightRules().getRules());
this.$outdent = new MatchingBraceOutdent(); this.$outdent = new MatchingBraceOutdent();
}; };
oop.inherits(Mode, TextMode); oop.inherits(Mode, TextMode);
(function() (function() {
{ this.getNextLineIndent = function(state, line, tab) {
this.getNextLineIndent = function(state, line, tab)
{
if (state == "intag") if (state == "intag")
return tab; return tab;

View file

@ -44,7 +44,6 @@ var TextileHighlightRules = function() {
this.$rules = { this.$rules = {
"start" : [ "start" : [
{ {
token : "keyword", // start of block
token : function(value) { token : function(value) {
if (value.match(/^h\d$/)) if (value.match(/^h\d$/))
return "markup.heading." + value.charAt(1); return "markup.heading." + value.charAt(1);

View file

@ -54,7 +54,6 @@ oop.inherits(Mode, TextMode);
(function() { (function() {
this.getNextLineIndent = function(state, line, tab) { this.getNextLineIndent = function(state, line, tab) {
return this.$getIndent(line); return this.$getIndent(line);
}; };

View file

@ -36,15 +36,15 @@
* ***** END LICENSE BLOCK ***** */ * ***** END LICENSE BLOCK ***** */
define(function(require, exports, module) { define(function(require, exports, module) {
var lang = require("../lib/lang"); var lang = require("../lib/lang");
var formTags = lang.arrayToMap( var formTags = lang.arrayToMap(
("button|form|input|label|select|textarea").split("|") ("button|form|input|label|select|textarea").split("|")
); );
var tableTags = lang.arrayToMap( var tableTags = lang.arrayToMap(
("table|tbody|td|tfoot|th|tr").split("|") ("table|tbody|td|tfoot|th|tr").split("|")
); );
function string(state) { function string(state) {
return [{ return [{

View file

@ -39,7 +39,6 @@
define(function(require, exports, module) { define(function(require, exports, module) {
var oop = require("ace/lib/oop"); var oop = require("ace/lib/oop");
var lang = require("ace/lib/lang");
var EventEmitter = require("ace/lib/event_emitter").EventEmitter; var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var Editor = exports.Editor = function() { var Editor = exports.Editor = function() {

View file

@ -168,7 +168,7 @@ module.exports = {
assert.position(selection.getCursor(), 0, 0); assert.position(selection.getCursor(), 0, 0);
}, },
"test: moveCursor word left" : function() { "test: moveCursor word left with umlauts" : function() {
var session = new EditSession(" Fuß Füße"); var session = new EditSession(" Fuß Füße");
var selection = session.getSelection(); var selection = session.getSelection();

View file

@ -3,7 +3,6 @@ define(function(require, exports, module) {
require("ace/lib/fixoldbrowsers"); require("ace/lib/fixoldbrowsers");
var AsyncTest = require("asyncjs").test; var AsyncTest = require("asyncjs").test;
var async = require("asyncjs"); var async = require("asyncjs");
var dom = require("ace/lib/dom");
var passed = 0 var passed = 0
var failed = 0 var failed = 0

View file

@ -51,7 +51,7 @@ assert.range = function(range, startRow, startColumn, endRow, endColumn) {
assert.notOk = function(value) { assert.notOk = function(value) {
assert.equal(value, false); assert.equal(value, false);
} };
exports.jsonEquals = function(foundJson, expectedJson) { exports.jsonEquals = function(foundJson, expectedJson) {
assert.equal(JSON.stringify(foundJson), JSON.stringify(expectedJson)); assert.equal(JSON.stringify(foundJson), JSON.stringify(expectedJson));

View file

@ -41,7 +41,6 @@ if (typeof process !== "undefined") {
define(function(require, exports, module) { define(function(require, exports, module) {
var assert = require("../test/assertions");
var EditSession = require("../edit_session").EditSession; var EditSession = require("../edit_session").EditSession;
module.exports = { module.exports = {

View file

@ -37,7 +37,6 @@
define(function(require, exports, module) { define(function(require, exports, module) {
exports.cssClass = "ace-chrome"; exports.cssClass = "ace-chrome";
exports.cssText = ".ace-chrome .ace_editor {\ exports.cssText = ".ace-chrome .ace_editor {\
border: 2px solid rgb(159, 159, 159);\ border: 2px solid rgb(159, 159, 159);\

View file

@ -42,7 +42,6 @@ define(function(require, exports, module) {
var oop = require("./lib/oop"); var oop = require("./lib/oop");
var dom = require("./lib/dom"); var dom = require("./lib/dom");
var event = require("./lib/event");
var useragent = require("./lib/useragent"); var useragent = require("./lib/useragent");
var GutterLayer = require("./layer/gutter").Gutter; var GutterLayer = require("./layer/gutter").Gutter;
var MarkerLayer = require("./layer/marker").Marker; var MarkerLayer = require("./layer/marker").Marker;