Save changes
This commit is contained in:
parent
0739444f87
commit
eb955fa90d
18 changed files with 15484 additions and 1283 deletions
14365
api/api.json
14365
api/api.json
File diff suppressed because it is too large
Load diff
|
|
@ -2,6 +2,7 @@ var fs = require("fs");
|
|||
var path = require("path");
|
||||
var panino = require("panino");
|
||||
var srcPath = __dirname + "/../lib/ace";
|
||||
var buildType = process.argv.splice(2)[0];buildType
|
||||
|
||||
var options = {
|
||||
title : "Ace API",
|
||||
|
|
@ -46,7 +47,7 @@ panino.parse(files, options, function (err, ast) {
|
|||
process.exit(1);
|
||||
}
|
||||
|
||||
panino.render('json', ast, options, function (err) {
|
||||
panino.render(buildType || 'html', ast, options, function (err) {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
|
|
|
|||
|
|
@ -36,19 +36,19 @@ var EventEmitter = require("./lib/event_emitter").EventEmitter;
|
|||
|
||||
/**
|
||||
*
|
||||
* Defines the floating pointer in the document. Whenever text is inserted or deleted before the cursor, the position of the cursor is updated
|
||||
* Defines the floating pointer in the document. Whenever text is inserted or deleted before the cursor, the position of the cursor is updated.
|
||||
*
|
||||
* @class Anchor
|
||||
**/
|
||||
|
||||
/**
|
||||
* new Anchor(doc, row, column)
|
||||
* Creates a new `Anchor` and associates it with a document.
|
||||
*
|
||||
* @param {Document} doc The document to associate with the anchor
|
||||
* @param {Number} row The starting row position
|
||||
* @param {Number} column The starting column position
|
||||
*
|
||||
* Creates a new `Anchor` and associates it with a document.
|
||||
*
|
||||
* @constructor
|
||||
**/
|
||||
|
||||
var Anchor = exports.Anchor = function(doc, row, column) {
|
||||
|
|
@ -69,7 +69,7 @@ var Anchor = exports.Anchor = function(doc, row, column) {
|
|||
|
||||
/**
|
||||
* Returns an object identifying the `row` and `column` position of the current anchor.
|
||||
* @returns Object
|
||||
* @returns {Object}
|
||||
**/
|
||||
|
||||
this.getPosition = function() {
|
||||
|
|
@ -79,7 +79,7 @@ var Anchor = exports.Anchor = function(doc, row, column) {
|
|||
/**
|
||||
*
|
||||
* Returns the current document.
|
||||
* @returns Document
|
||||
* @returns {Document}
|
||||
**/
|
||||
|
||||
this.getDocument = function() {
|
||||
|
|
@ -87,15 +87,17 @@ var Anchor = exports.Anchor = function(doc, row, column) {
|
|||
};
|
||||
|
||||
/**
|
||||
* @event change
|
||||
* @param {Object} e An object containing information about the anchor position. It has two properties:
|
||||
- `old`: An object describing the old Anchor position
|
||||
- `value`: An object describing the new Anchor position
|
||||
* Both of these objects have a `row` and `column` property corresponding to the position.
|
||||
*
|
||||
* Fires whenever the anchor position changes.
|
||||
*
|
||||
* Both of these objects have a `row` and `column` property corresponding to the position.
|
||||
*
|
||||
* Events that can trigger this function include [[Anchor.setPosition `setPosition()`]].
|
||||
*
|
||||
* @event change
|
||||
* @param {Object} e An object containing information about the anchor position. It has two properties:
|
||||
* - `old`: An object describing the old Anchor position
|
||||
* - `value`: An object describing the new Anchor position
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
||||
|
|
@ -165,12 +167,12 @@ var Anchor = exports.Anchor = function(doc, row, column) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Anchor.setPosition(row, column, noClip)
|
||||
* Sets the anchor position to the specified row and column. If `noClip` is `true`, the position is not clipped.
|
||||
* @param {Number} row The row index to move the anchor to
|
||||
* @param {Number} column The column index to move the anchor to
|
||||
* @param {Boolean} noClip Identifies if you want the position to be clipped
|
||||
*
|
||||
* Sets the anchor position to the specified row and column. If `noClip` is `true`, the position is not clipped.
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
||||
|
|
@ -212,11 +214,11 @@ var Anchor = exports.Anchor = function(doc, row, column) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Anchor.clipPositionToDocument(row, column)
|
||||
* Clips the anchor position to the specified row and column.
|
||||
* @param {Number} row The row index to clip the anchor to
|
||||
* @param {Number} column The column index to clip the anchor to
|
||||
*
|
||||
* Clips the anchor position to the specified row and column.
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.$clipPositionToDocument = function(row, column) {
|
||||
|
|
|
|||
|
|
@ -38,22 +38,23 @@ var EventEmitter = require("./lib/event_emitter").EventEmitter;
|
|||
var MAX_LINE_LENGTH = 5000;
|
||||
|
||||
/**
|
||||
* @class BackgroundTokenizer
|
||||
*
|
||||
*
|
||||
* Tokenizes the current [[Document `Document`]] in the background, and caches the tokenized rows for future use.
|
||||
*
|
||||
* If a certain row is changed, everything below that row is re-tokenized.
|
||||
*
|
||||
* @class BackgroundTokenizer
|
||||
**/
|
||||
|
||||
/**
|
||||
* new BackgroundTokenizer(tokenizer, editor)
|
||||
* Creates a new `BackgroundTokenizer` object.
|
||||
* @param {Tokenizer} tokenizer The tokenizer to use
|
||||
* @param {Editor} editor The editor to associate with
|
||||
*
|
||||
* Creates a new `BackgroundTokenizer` object.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* @constructor
|
||||
**/
|
||||
|
||||
var BackgroundTokenizer = function(tokenizer, editor) {
|
||||
|
|
@ -100,10 +101,10 @@ var BackgroundTokenizer = function(tokenizer, editor) {
|
|||
oop.implement(this, EventEmitter);
|
||||
|
||||
/**
|
||||
* @param {Tokenizer} tokenizer The new tokenizer to use
|
||||
*
|
||||
* Sets a new tokenizer for this object.
|
||||
*
|
||||
* @param {Tokenizer} tokenizer The new tokenizer to use
|
||||
*
|
||||
**/
|
||||
this.setTokenizer = function(tokenizer) {
|
||||
this.tokenizer = tokenizer;
|
||||
|
|
@ -114,10 +115,8 @@ var BackgroundTokenizer = function(tokenizer, editor) {
|
|||
};
|
||||
|
||||
/**
|
||||
* @param {Document} doc The new document to associate with
|
||||
*
|
||||
* Sets a new document to associate with this object.
|
||||
*
|
||||
* @param {Document} doc The new document to associate with
|
||||
**/
|
||||
this.setDocument = function(doc) {
|
||||
this.doc = doc;
|
||||
|
|
@ -128,18 +127,17 @@ var BackgroundTokenizer = function(tokenizer, editor) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Fires whenever the background tokeniziers between a range of rows are going to be updated.
|
||||
*
|
||||
* @event update
|
||||
* @param {Object} e An object containing two properties, `first` and `last`, which indicate the rows of the region being updated.
|
||||
*
|
||||
* Fires whenever the background tokeniziers between a range of rows are going to be updated.
|
||||
*
|
||||
**/
|
||||
/**
|
||||
* Emits the `'update'` event. `firstRow` and `lastRow` are used to define the boundaries of the region to be updated.
|
||||
* @param {Number} firstRow The starting row region
|
||||
* @param {Number} lastRow The final row region
|
||||
*
|
||||
* Emits the `'update'` event. `firstRow` and `lastRow` are used to define the boundaries of the region to be updated.
|
||||
*
|
||||
**/
|
||||
this.fireUpdateEvent = function(firstRow, lastRow) {
|
||||
var data = {
|
||||
|
|
@ -150,10 +148,10 @@ var BackgroundTokenizer = function(tokenizer, editor) {
|
|||
};
|
||||
|
||||
/**
|
||||
* @param {Number} startRow The row to start at
|
||||
*
|
||||
* Starts tokenizing at the row indicated.
|
||||
*
|
||||
* @param {Number} startRow The row to start at
|
||||
*
|
||||
**/
|
||||
this.start = function(startRow) {
|
||||
this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());
|
||||
|
|
@ -202,9 +200,11 @@ var BackgroundTokenizer = function(tokenizer, editor) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Gives list of tokens of the row. (tokens are cached)
|
||||
*
|
||||
* @param {Number} row The row to get tokens at
|
||||
*
|
||||
* Gives list of tokens of the row. (tokens are cached)
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.getTokens = function(row) {
|
||||
|
|
@ -212,9 +212,9 @@ var BackgroundTokenizer = function(tokenizer, editor) {
|
|||
};
|
||||
|
||||
/**
|
||||
* @param {Number} row The row to get state at
|
||||
*
|
||||
* [Returns the state of tokenization at the end of a row.]{: #BackgroundTokenizer.getState}
|
||||
*
|
||||
* @param {Number} row The row to get state at
|
||||
**/
|
||||
this.getState = function(row) {
|
||||
if (this.currentLine == row)
|
||||
|
|
|
|||
|
|
@ -37,21 +37,18 @@ var Range = require("./range").Range;
|
|||
var Anchor = require("./anchor").Anchor;
|
||||
|
||||
/**
|
||||
* @class Document
|
||||
*
|
||||
* Contains the text of the document. Document can be attached to several [[EditSession `EditSession`]]s.
|
||||
*
|
||||
* At its core, `Document`s are just an array of strings, with each row in the document matching up to the array index.
|
||||
*
|
||||
*
|
||||
* @class Document
|
||||
**/
|
||||
|
||||
/**
|
||||
* new Document([text])
|
||||
* @param {String | Array} text The starting text
|
||||
*
|
||||
*
|
||||
* Creates a new `Document`. If `text` is included, the `Document` contains those strings; otherwise, it's empty.
|
||||
*
|
||||
* @param {String | Array} text The starting text
|
||||
* @constructor
|
||||
**/
|
||||
|
||||
var Document = function(text) {
|
||||
|
|
@ -73,9 +70,9 @@ var Document = function(text) {
|
|||
oop.implement(this, EventEmitter);
|
||||
|
||||
/**
|
||||
* @param {String} text The text to use
|
||||
*
|
||||
* Replaces all the lines in the current `Document` with the value of `text`.
|
||||
*
|
||||
* @param {String} text The text to use
|
||||
**/
|
||||
this.setValue = function(text) {
|
||||
var len = this.getLength();
|
||||
|
|
@ -91,21 +88,23 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Creates a new `Anchor` to define a floating point in the document.
|
||||
* @param {Number} row The row number to use
|
||||
* @param {Number} column The column number to use
|
||||
*
|
||||
* Creates a new `Anchor` to define a floating point in the document.
|
||||
*
|
||||
**/
|
||||
this.createAnchor = function(row, column) {
|
||||
return new Anchor(this, row, column);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} text The text to work with
|
||||
* @returns String A String array, with each index containing a piece of the original `text` string.
|
||||
*
|
||||
* Splits a string of text on any newline (`\n`) or carriage-return ('\r') characters.
|
||||
*
|
||||
* @method $split
|
||||
* @param {String} text The text to work with
|
||||
* @returns {String} A String array, with each index containing a piece of the original `text` string.
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
||||
|
|
@ -131,12 +130,12 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Document.getNewLineCharacter() -> String
|
||||
* Returns the newline character that's being used, depending on the value of `newLineMode`.
|
||||
* @returns {String} If `newLineMode == windows`, `\r\n` is returned.
|
||||
* If `newLineMode == unix`, `\n` is returned.
|
||||
* If `newLineMode == auto`, the value of `autoNewLine` is returned.
|
||||
*
|
||||
* Returns the newline character that's being used, depending on the value of `newLineMode`.
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
|
@ -156,9 +155,10 @@ var Document = function(text) {
|
|||
this.$autoNewLine = "\n";
|
||||
this.$newLineMode = "auto";
|
||||
/**
|
||||
* [Sets the new line mode.]{: #Document.setNewLineMode.desc}
|
||||
* @param {String} newLineMode [The newline mode to use; can be either `windows`, `unix`, or `auto`]{: #Document.setNewLineMode.param}
|
||||
*
|
||||
* [Sets the new line mode.]{: #Document.setNewLineMode.desc}
|
||||
*
|
||||
**/
|
||||
this.setNewLineMode = function(newLineMode) {
|
||||
if (this.$newLineMode === newLineMode)
|
||||
|
|
@ -169,16 +169,17 @@ var Document = function(text) {
|
|||
|
||||
/**
|
||||
* [Returns the type of newlines being used; either `windows`, `unix`, or `auto`]{: #Document.getNewLineMode}
|
||||
*
|
||||
* @returns String
|
||||
**/
|
||||
this.getNewLineMode = function() {
|
||||
return this.$newLineMode;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns `true` if `text` is a newline character (either `\r\n`, `\r`, or `\n`).
|
||||
* @param {String} text The text to check
|
||||
*
|
||||
* Returns `true` if `text` is a newline character (either `\r\n`, `\r`, or `\n`).
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.isNewLine = function(text) {
|
||||
|
|
@ -186,9 +187,10 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Returns a verbatim copy of the given line as it is in the document
|
||||
* @param {Number} row The row index to retrieve
|
||||
*
|
||||
* Returns a verbatim copy of the given line as it is in the document
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.getLine = function(row) {
|
||||
|
|
@ -196,10 +198,11 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Returns an array of strings of the rows between `firstRow` and `lastRow`. This function is inclusive of `lastRow`.
|
||||
* @param {Number} firstRow The first row index to retrieve
|
||||
* @param {Number} lastRow The final row index to retrieve
|
||||
*
|
||||
* Returns an array of strings of the rows between `firstRow` and `lastRow`. This function is inclusive of `lastRow`.
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.getLines = function(firstRow, lastRow) {
|
||||
|
|
@ -221,9 +224,10 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* [Given a range within the document, this function returns all the text within that range as a single string.]{: #Document.getTextRange.desc}
|
||||
* @param {Range} range The range to work with
|
||||
*
|
||||
* [Given a range within the document, this function returns all the text within that range as a single string.]{: #Document.getTextRange.desc}
|
||||
*
|
||||
**/
|
||||
this.getTextRange = function(range) {
|
||||
if (range.start.row == range.end.row) {
|
||||
|
|
@ -248,11 +252,12 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Inserts a block of `text` and the indicated `position`.
|
||||
* @param {Number} position The position to start inserting at
|
||||
* @param {String} text A chunk of text to insert
|
||||
* @returns {Number} The position of the last line of `text`. If the length of `text` is 0, this function simply returns `position`.
|
||||
*
|
||||
* Inserts a block of `text` and the indicated `position`.
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.insert = function(position, text) {
|
||||
|
|
@ -279,9 +284,6 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* @event change
|
||||
* @param {Object} e Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties.
|
||||
*
|
||||
* Fires whenever the document changes.
|
||||
*
|
||||
* Several methods trigger different `"change"` events. Below is a list of each action type, followed by each property that's also available:
|
||||
|
|
@ -300,11 +302,15 @@ var Document = function(text) {
|
|||
* * `range`: the [[Range]] of the change within the document
|
||||
* * `text`: the text that's being removed
|
||||
*
|
||||
* @event change
|
||||
* @param {Object} e Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties.
|
||||
*
|
||||
**/
|
||||
/**
|
||||
* Inserts the elements in `lines` into the document, starting at the row index given by `row`. This method also triggers the `'change'` event.
|
||||
* @param {Number} row The index of the row to insert at
|
||||
* @param {Array} lines An array of strings
|
||||
* @returns Object Contains the final row and column, like this:
|
||||
* @returns {Object} Contains the final row and column, like this:
|
||||
* ```
|
||||
* {row: endRow, column: 0}
|
||||
* ```
|
||||
|
|
@ -313,7 +319,7 @@ var Document = function(text) {
|
|||
* {row: row, column: 0}
|
||||
* ```
|
||||
*
|
||||
* Inserts the elements in `lines` into the document, starting at the row index given by `row`. This method also triggers the `'change'` event.
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
|
@ -343,16 +349,13 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Inserts a new line into the document at the current row's `position`. This method also triggers the `'change'` event.
|
||||
* @param {String} position The position to insert at
|
||||
* @returns {Object} Returns an object containing the final row and column, like this:<br/>
|
||||
* ```
|
||||
* {row: endRow, column: 0}
|
||||
* ```
|
||||
*
|
||||
* Inserts a new line into the document at the current row's `position`. This method also triggers the `'change'` event.
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.insertNewLine = function(position) {
|
||||
position = this.$clipPosition(position);
|
||||
|
|
@ -377,6 +380,7 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Inserts `text` into the `position` at the current row. This method also triggers the `'change'` event.
|
||||
* @param {Number} position The position to insert at
|
||||
* @param {String} text A chunk of text
|
||||
* @returns {Object} Returns an object containing the final row and column, like this:
|
||||
|
|
@ -385,10 +389,7 @@ var Document = function(text) {
|
|||
* ```
|
||||
* @returns {Number} If `text` is empty, this function returns the value of `position`
|
||||
*
|
||||
* Inserts `text` into the `position` at the current row. This method also triggers the `'change'` event.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.insertInLine = function(position, text) {
|
||||
if (text.length == 0)
|
||||
|
|
@ -415,11 +416,10 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Removes the `range` from the document.
|
||||
* @param {Range} range A specified Range to remove
|
||||
* @returns {Object} Returns the new `start` property of the range, which contains `startRow` and `startColumn`. If `range` is empty, this function returns the unmodified value of `range.start`.
|
||||
*
|
||||
* Removes the `range` from the document.
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.remove = function(range) {
|
||||
|
|
@ -455,13 +455,12 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Removes the specified columns from the `row`. This method also triggers the `'change'` event.
|
||||
* @param {Number} row The row to remove from
|
||||
* @param {Number} startColumn The column to start removing at
|
||||
* @param {Number} endColumn The column to stop removing at
|
||||
* @returns {Object} Returns an object containing `startRow` and `startColumn`, indicating the new row and column values.<br/>If `startColumn` is equal to `endColumn`, this function returns nothing.
|
||||
*
|
||||
* Removes the specified columns from the `row`. This method also triggers the `'change'` event.
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.removeInLine = function(row, startColumn, endColumn) {
|
||||
|
|
@ -484,12 +483,11 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Removes a range of full lines. This method also triggers the `'change'` event.
|
||||
* @param {Number} firstRow The first row to be removed
|
||||
* @param {Number} lastRow The last row to be removed
|
||||
* @returns {[String]} Returns all the removed lines.
|
||||
*
|
||||
* Removes a range of full lines. This method also triggers the `'change'` event.
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.removeLines = function(firstRow, lastRow) {
|
||||
|
|
@ -507,10 +505,9 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Removes the new line between `row` and the row immediately following it. This method also triggers the `'change'` event.
|
||||
* @param {Number} row The row to check
|
||||
*
|
||||
* Removes the new line between `row` and the row immediately following it. This method also triggers the `'change'` event.
|
||||
*
|
||||
**/
|
||||
this.removeNewLine = function(row) {
|
||||
var firstLine = this.getLine(row);
|
||||
|
|
@ -530,6 +527,7 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Replaces a range in the document with the new `text`.
|
||||
* @param {Range} range A specified Range to replace
|
||||
* @param {String} text The new text to use as a replacement
|
||||
* @returns {Object} Returns an object containing the final row and column, like this:
|
||||
|
|
@ -537,7 +535,6 @@ var Document = function(text) {
|
|||
* If the text and range are empty, this function returns an object containing the current `range.start` value.
|
||||
* If the text is the exact same as what currently exists, this function returns an object containing the current `range.end` value.
|
||||
*
|
||||
* Replaces a range in the document with the new `text`.
|
||||
*
|
||||
**/
|
||||
this.replace = function(range, text) {
|
||||
|
|
@ -561,7 +558,7 @@ var Document = function(text) {
|
|||
};
|
||||
|
||||
/**
|
||||
* =Applies all the changes previously accumulated. These can be either `'includeText'`, `'insertLines'`, `'removeText'`, and `'removeLines'`.
|
||||
* Applies all the changes previously accumulated. These can be either `'includeText'`, `'insertLines'`, `'removeText'`, and `'removeLines'`.
|
||||
**/
|
||||
this.applyDeltas = function(deltas) {
|
||||
for (var i=0; i<deltas.length; i++) {
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -35,14 +35,12 @@ var EventEmitter = require("./lib/event_emitter").EventEmitter;
|
|||
var oop = require("./lib/oop");
|
||||
|
||||
/**
|
||||
* class PlaceHolder
|
||||
*
|
||||
* TODO
|
||||
* @class PlaceHolder
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
||||
/**
|
||||
* new PlaceHolder(session, length, pos, others, mainClass, othersClass)
|
||||
* - session (Document): The document to associate with the anchor
|
||||
* - length (Number): The starting row position
|
||||
* - pos (Number): The starting column position
|
||||
|
|
@ -50,8 +48,8 @@ var oop = require("./lib/oop");
|
|||
* - mainClass (String):
|
||||
* - othersClass (String):
|
||||
*
|
||||
* TODO
|
||||
*
|
||||
*
|
||||
* @constructor
|
||||
**/
|
||||
|
||||
var PlaceHolder = function(session, length, pos, others, mainClass, othersClass) {
|
||||
|
|
|
|||
334
lib/ace/range.js
334
lib/ace/range.js
|
|
@ -32,21 +32,21 @@ define(function(require, exports, module) {
|
|||
"use strict";
|
||||
|
||||
/**
|
||||
* class Range
|
||||
*
|
||||
*
|
||||
* This object is used in various places to indicate a region within the editor. To better visualize how this works, imagine a rectangle. Each quadrant of the rectangle is analogus to a range, as ranges contain a starting row and starting column, and an ending row, and ending column.
|
||||
*
|
||||
* @class Range
|
||||
**/
|
||||
|
||||
/**
|
||||
* new Range(startRow, startColumn, endRow, endColumn)
|
||||
* - startRow (Number): The starting row
|
||||
* - startColumn (Number): The starting column
|
||||
* - endRow (Number): The ending row
|
||||
* - endColumn (Number): The ending column
|
||||
*
|
||||
* Creates a new `Range` object with the given starting and ending row and column points.
|
||||
* @param {Number} startRow The starting row
|
||||
* @param {Number} startColumn The starting column
|
||||
* @param {Number} endRow The ending row
|
||||
* @param {Number} endColumn The ending column
|
||||
*
|
||||
*
|
||||
* @constructor
|
||||
**/
|
||||
var Range = function(startRow, startColumn, endRow, endColumn) {
|
||||
this.start = {
|
||||
|
|
@ -62,11 +62,11 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
|
||||
(function() {
|
||||
/**
|
||||
* Range.isEqual(range) -> Boolean
|
||||
* - range (Range): A range to check against
|
||||
*
|
||||
* Returns `true` if and only if the starting row and column, and ending tow and column, are equivalent to those given by `range`.
|
||||
* @param {Range} range A range to check against
|
||||
*
|
||||
*
|
||||
* @return Boolean
|
||||
**/
|
||||
this.isEqual = function(range) {
|
||||
return this.start.row == range.start.row &&
|
||||
|
|
@ -76,38 +76,42 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Range.toString() -> String
|
||||
*
|
||||
*
|
||||
* Returns a string containing the range's row and column information, given like this:
|
||||
*
|
||||
* ```
|
||||
* [start.row/start.column] -> [end.row/end.column]
|
||||
*
|
||||
* ```
|
||||
* @return String
|
||||
**/
|
||||
this.toString = function() {
|
||||
return ("Range: [" + this.start.row + "/" + this.start.column +
|
||||
"] -> [" + this.end.row + "/" + this.end.column + "]");
|
||||
};
|
||||
|
||||
/** related to: Range.compare
|
||||
* Range.contains(row, column) -> Boolean
|
||||
* - row (Number): A row to check for
|
||||
* - column (Number): A column to check for
|
||||
/**
|
||||
*
|
||||
* Returns `true` if the `row` and `column` provided are within the given range. This can better be expressed as returning `true` if:
|
||||
*
|
||||
* ```javascript
|
||||
* this.start.row <= row <= this.end.row &&
|
||||
* this.start.column <= column <= this.end.column
|
||||
*
|
||||
* ```
|
||||
* @param {Number} row A row to check for
|
||||
* @param {Number} column A column to check for
|
||||
* @returns {Boolean}
|
||||
* @related Range.compare
|
||||
**/
|
||||
|
||||
this.contains = function(row, column) {
|
||||
return this.compare(row, column) == 0;
|
||||
};
|
||||
|
||||
/** related to: Range.compare
|
||||
* Range.compareRange(range) -> Number
|
||||
* - range (Range): A range to compare with
|
||||
* + (Number): This method returns one of the following numbers:<br/>
|
||||
/**
|
||||
* Compares `this` range (A) with another range (B).
|
||||
* @param {Range} range A range to compare with
|
||||
*
|
||||
*
|
||||
* @related Range.compare
|
||||
* @returns {Number} This method returns one of the following numbers:<br/>
|
||||
* <br/>
|
||||
* * `-2`: (B) is in front of (A), and doesn't intersect with (A)<br/>
|
||||
* * `-1`: (B) begins before (A) but ends inside of (A)<br/>
|
||||
|
|
@ -115,9 +119,6 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
* * `+1`: (B) begins inside of (A) but ends outside of (A)<br/>
|
||||
* * `+2`: (B) is after (A) and doesn't intersect with (A)<br/>
|
||||
* * `42`: FTW state: (B) ends in (A) but starts outside of (A)
|
||||
*
|
||||
* Compares `this` range (A) with another range (B).
|
||||
*
|
||||
**/
|
||||
this.compareRange = function(range) {
|
||||
var cmp,
|
||||
|
|
@ -146,12 +147,16 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/** related to: Range.compare
|
||||
* Range.comparePoint(p) -> Number
|
||||
* - p (Range): A point to compare with
|
||||
* + (Number): This method returns one of the following numbers:<br/>
|
||||
/**
|
||||
*
|
||||
* Checks the row and column points of `p` with the row and column points of the calling range.
|
||||
*
|
||||
* @param {Range} p A point to compare with
|
||||
*
|
||||
* @related Range.compare
|
||||
* @returns {Number} This method returns one of the following numbers:<br/>
|
||||
* * `0` if the two points are exactly equal<br/>
|
||||
* * `-1` if `p.row` is less then the calling range<br/>
|
||||
* * `1` if `p.row` is greater than the calling range<br/>
|
||||
|
|
@ -163,70 +168,66 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
* If the ending row of the calling range is equal to `p.row`, and:<br/>
|
||||
* * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
|
||||
* * Otherwise, it returns 1<br/>
|
||||
*
|
||||
* Checks the row and column points of `p` with the row and column points of the calling range.
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.comparePoint = function(p) {
|
||||
return this.compare(p.row, p.column);
|
||||
}
|
||||
};
|
||||
|
||||
/** related to: Range.comparePoint
|
||||
* Range.containsRange(range) -> Boolean
|
||||
* - range (Range): A range to compare with
|
||||
*
|
||||
/**
|
||||
* Checks the start and end points of `range` and compares them to the calling range. Returns `true` if the `range` is contained within the caller's range.
|
||||
* @param {Range} range A range to compare with
|
||||
*
|
||||
* @returns {Boolean}
|
||||
* @related Range.comparePoint
|
||||
*
|
||||
**/
|
||||
this.containsRange = function(range) {
|
||||
return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Range.intersects(range) -> Boolean
|
||||
* - range (Range): A range to compare with
|
||||
*
|
||||
* Returns `true` if passed in `range` intersects with the one calling this method.
|
||||
* @param {Range} range A range to compare with
|
||||
*
|
||||
*
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.intersects = function(range) {
|
||||
var cmp = this.compareRange(range);
|
||||
return (cmp == -1 || cmp == 0 || cmp == 1);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Range.isEnd(row, column) -> Boolean
|
||||
* - row (Number): A row point to compare with
|
||||
* - column (Number): A column point to compare with
|
||||
*
|
||||
* Returns `true` if the caller's ending row point is the same as `row`, and if the caller's ending column is the same as `column`.
|
||||
* @param {Number} row A row point to compare with
|
||||
* @param {Number} column A column point to compare with
|
||||
*
|
||||
*
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.isEnd = function(row, column) {
|
||||
return this.end.row == row && this.end.column == column;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Range.isStart(row, column) -> Boolean
|
||||
* - row (Number): A row point to compare with
|
||||
* - column (Number): A column point to compare with
|
||||
*
|
||||
* Returns `true` if the caller's starting row point is the same as `row`, and if the caller's starting column is the same as `column`.
|
||||
* @param {Number} row A row point to compare with
|
||||
* @param {Number} column A column point to compare with
|
||||
*
|
||||
*
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.isStart = function(row, column) {
|
||||
return this.start.row == row && this.start.column == column;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Range.setStart(row, column)
|
||||
* - row (Number): A row point to set
|
||||
* - column (Number): A column point to set
|
||||
*
|
||||
* Sets the starting row and column for the range.
|
||||
* @param {Number} row A row point to set
|
||||
* @param {Number} column A column point to set
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setStart = function(row, column) {
|
||||
if (typeof row == "object") {
|
||||
|
|
@ -236,14 +237,14 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
this.start.row = row;
|
||||
this.start.column = column;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Range.setEnd(row, column)
|
||||
* - row (Number): A row point to set
|
||||
* - column (Number): A column point to set
|
||||
*
|
||||
* Sets the starting row and column for the range.
|
||||
* @param {Number} row A row point to set
|
||||
* @param {Number} column A column point to set
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setEnd = function(row, column) {
|
||||
|
|
@ -254,15 +255,16 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
this.end.row = row;
|
||||
this.end.column = column;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/** related to: Range.compare
|
||||
* Range.inside(row, column) -> Boolean
|
||||
* - row (Number): A row point to compare with
|
||||
* - column (Number): A column point to compare with
|
||||
*
|
||||
/**
|
||||
* Returns `true` if the `row` and `column` are within the given range.
|
||||
* @param {Number} row A row point to compare with
|
||||
* @param {Number} column A column point to compare with
|
||||
*
|
||||
*
|
||||
* @returns {Boolean}
|
||||
* @related Range.compare
|
||||
**/
|
||||
this.inside = function(row, column) {
|
||||
if (this.compare(row, column) == 0) {
|
||||
|
|
@ -273,15 +275,16 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/** related to: Range.compare
|
||||
* Range.insideStart(row, column) -> Boolean
|
||||
* - row (Number): A row point to compare with
|
||||
* - column (Number): A column point to compare with
|
||||
*
|
||||
/**
|
||||
* Returns `true` if the `row` and `column` are within the given range's starting points.
|
||||
* @param {Number} row A row point to compare with
|
||||
* @param {Number} column A column point to compare with
|
||||
*
|
||||
*
|
||||
* @returns {Boolean}
|
||||
* @related Range.compare
|
||||
**/
|
||||
this.insideStart = function(row, column) {
|
||||
if (this.compare(row, column) == 0) {
|
||||
|
|
@ -292,15 +295,17 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/** related to: Range.compare
|
||||
* Range.insideEnd(row, column) -> Boolean
|
||||
* - row (Number): A row point to compare with
|
||||
* - column (Number): A column point to compare with
|
||||
*
|
||||
/**
|
||||
* Returns `true` if the `row` and `column` are within the given range's ending points.
|
||||
* @param {Number} row A row point to compare with
|
||||
* @param {Number} column A column point to compare with
|
||||
*
|
||||
*
|
||||
* @returns {Boolean}
|
||||
* @related Range.compare
|
||||
*
|
||||
**/
|
||||
this.insideEnd = function(row, column) {
|
||||
if (this.compare(row, column) == 0) {
|
||||
|
|
@ -311,28 +316,26 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Range.compare(row, column) -> Number
|
||||
* - row (Number): A row point to compare with
|
||||
* - column (Number): A column point to compare with
|
||||
* + (Number): This method returns one of the following numbers:<br/>
|
||||
* * `0` if the two points are exactly equal <br/>
|
||||
* * `-1` if `p.row` is less then the calling range <br/>
|
||||
* * `1` if `p.row` is greater than the calling range <br/>
|
||||
* Checks the row and column points with the row and column points of the calling range.
|
||||
* @param {Number} row A row point to compare with
|
||||
* @param {Number} column A column point to compare with
|
||||
*
|
||||
*
|
||||
* @returns {Number} This method returns one of the following numbers:<br/>
|
||||
* `0` if the two points are exactly equal <br/>
|
||||
* `-1` if `p.row` is less then the calling range <br/>
|
||||
* `1` if `p.row` is greater than the calling range <br/>
|
||||
* <br/>
|
||||
* If the starting row of the calling range is equal to `p.row`, and: <br/>
|
||||
* * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
|
||||
* * Otherwise, it returns -1<br/>
|
||||
* `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
|
||||
* Otherwise, it returns -1<br/>
|
||||
* <br/>
|
||||
* If the ending row of the calling range is equal to `p.row`, and: <br/>
|
||||
* * `p.column` is less than or equal to the calling range's ending column, this returns `0` <br/>
|
||||
* * Otherwise, it returns 1
|
||||
*
|
||||
* Checks the row and column points with the row and column points of the calling range.
|
||||
*
|
||||
*
|
||||
* `p.column` is less than or equal to the calling range's ending column, this returns `0` <br/>
|
||||
* Otherwise, it returns 1
|
||||
**/
|
||||
this.compare = function(row, column) {
|
||||
if (!this.isMultiLine()) {
|
||||
|
|
@ -357,26 +360,25 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Range.compareStart(row, column) -> Number
|
||||
* - row (Number): A row point to compare with
|
||||
* - column (Number): A column point to compare with
|
||||
* + (Number): This method returns one of the following numbers:<br/>
|
||||
* Checks the row and column points with the row and column points of the calling range.
|
||||
* @param {Number} row A row point to compare with
|
||||
* @param {Number} column A column point to compare with
|
||||
*
|
||||
*
|
||||
*
|
||||
* @returns {Number} This method returns one of the following numbers:<br/>
|
||||
* <br/>
|
||||
* * `0` if the two points are exactly equal<br/>
|
||||
* * `-1` if `p.row` is less then the calling range<br/>
|
||||
* * `1` if `p.row` is greater than the calling range, or if `isStart` is `true`.<br/>
|
||||
* `0` if the two points are exactly equal<br/>
|
||||
* `-1` if `p.row` is less then the calling range<br/>
|
||||
* `1` if `p.row` is greater than the calling range, or if `isStart` is `true`.<br/>
|
||||
* <br/>
|
||||
* If the starting row of the calling range is equal to `p.row`, and:<br/>
|
||||
* * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
|
||||
* * Otherwise, it returns -1<br/>
|
||||
* `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
|
||||
* Otherwise, it returns -1<br/>
|
||||
* <br/>
|
||||
* If the ending row of the calling range is equal to `p.row`, and:<br/>
|
||||
* * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
|
||||
* * Otherwise, it returns 1
|
||||
*
|
||||
* Checks the row and column points with the row and column points of the calling range.
|
||||
*
|
||||
*
|
||||
* `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
|
||||
* Otherwise, it returns 1
|
||||
*
|
||||
**/
|
||||
this.compareStart = function(row, column) {
|
||||
|
|
@ -385,51 +387,47 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
} else {
|
||||
return this.compare(row, column);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Range.compareEnd(row, column) -> Number
|
||||
* - row (Number): A row point to compare with
|
||||
* - column (Number): A column point to compare with
|
||||
* + (Number): This method returns one of the following numbers:<br/>
|
||||
* * `0` if the two points are exactly equal<br/>
|
||||
* * `-1` if `p.row` is less then the calling range<br/>
|
||||
* * `1` if `p.row` is greater than the calling range, or if `isEnd` is `true.<br/>
|
||||
* Checks the row and column points with the row and column points of the calling range.
|
||||
* @param {Number} row A row point to compare with
|
||||
* @param {Number} column A column point to compare with
|
||||
*
|
||||
*
|
||||
* @returns {Number} This method returns one of the following numbers:<br/>
|
||||
* `0` if the two points are exactly equal<br/>
|
||||
* `-1` if `p.row` is less then the calling range<br/>
|
||||
* `1` if `p.row` is greater than the calling range, or if `isEnd` is `true.<br/>
|
||||
* <br/>
|
||||
* If the starting row of the calling range is equal to `p.row`, and:<br/>
|
||||
* * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
|
||||
* * Otherwise, it returns -1<br/>
|
||||
* `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
|
||||
* Otherwise, it returns -1<br/>
|
||||
*<br/>
|
||||
* If the ending row of the calling range is equal to `p.row`, and:<br/>
|
||||
* * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
|
||||
* * Otherwise, it returns 1
|
||||
*
|
||||
* Checks the row and column points with the row and column points of the calling range.
|
||||
*
|
||||
*
|
||||
**/
|
||||
* `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
|
||||
* Otherwise, it returns 1
|
||||
*/
|
||||
this.compareEnd = function(row, column) {
|
||||
if (this.end.row == row && this.end.column == column) {
|
||||
return 1;
|
||||
} else {
|
||||
return this.compare(row, column);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Range.compareInside(row, column) -> Number
|
||||
* - row (Number): A row point to compare with
|
||||
* - column (Number): A column point to compare with
|
||||
* + (Number): This method returns one of the following numbers:<br/>
|
||||
* Checks the row and column points with the row and column points of the calling range.
|
||||
* @param {Number} row A row point to compare with
|
||||
* @param {Number} column A column point to compare with
|
||||
*
|
||||
*
|
||||
* @returns {Number} This method returns one of the following numbers:<br/>
|
||||
* * `1` if the ending row of the calling range is equal to `row`, and the ending column of the calling range is equal to `column`<br/>
|
||||
* * `-1` if the starting row of the calling range is equal to `row`, and the starting column of the calling range is equal to `column`<br/>
|
||||
* <br/>
|
||||
* Otherwise, it returns the value after calling [[Range.compare `compare()`]].
|
||||
*
|
||||
* Checks the row and column points with the row and column points of the calling range.
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.compareInside = function(row, column) {
|
||||
if (this.end.row == row && this.end.column == column) {
|
||||
|
|
@ -439,15 +437,15 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
} else {
|
||||
return this.compare(row, column);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Range.clipRows(firstRow, lastRow) -> Range
|
||||
* - firstRow (Number): The starting row
|
||||
* - lastRow (Number): The ending row
|
||||
*
|
||||
* Returns the part of the current `Range` that occurs within the boundaries of `firstRow` and `lastRow` as a new `Range` object.
|
||||
* @param {Number} firstRow The starting row
|
||||
* @param {Number} lastRow The ending row
|
||||
*
|
||||
*
|
||||
* @returns {Range}
|
||||
**/
|
||||
this.clipRows = function(firstRow, lastRow) {
|
||||
if (this.end.row > lastRow) {
|
||||
|
|
@ -481,12 +479,12 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Range.extend(row, column) -> Range
|
||||
* - row (Number): A new row to extend to
|
||||
* - column (Number): A new column to extend to
|
||||
*
|
||||
* Changes the row and column points for the calling range for both the starting and ending points. This method returns that range with a new row.
|
||||
* Changes the row and column points for the calling range for both the starting and ending points.
|
||||
* @param {Number} row A new row to extend to
|
||||
* @param {Number} column A new column to extend to
|
||||
*
|
||||
*
|
||||
* @returns {Range} The original range with the new row
|
||||
**/
|
||||
this.extend = function(row, column) {
|
||||
var cmp = this.compare(row, column);
|
||||
|
|
@ -506,30 +504,27 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Range.isMultiLine() -> Boolean
|
||||
*
|
||||
* Returns true if the range spans across multiple lines.
|
||||
*
|
||||
*
|
||||
* Returns `true` if the range spans across multiple lines.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.isMultiLine = function() {
|
||||
return (this.start.row !== this.end.row);
|
||||
};
|
||||
|
||||
/**
|
||||
* Range.clone() -> Range
|
||||
*
|
||||
*
|
||||
* Returns a duplicate of the calling range.
|
||||
*
|
||||
* @returns {Range}
|
||||
**/
|
||||
this.clone = function() {
|
||||
return Range.fromPoints(this.start, this.end);
|
||||
};
|
||||
|
||||
/**
|
||||
* Range.collapseRows() -> Range
|
||||
*
|
||||
* Returns a range containing the starting and ending rows of the original range, but with a column value of `0`.
|
||||
*
|
||||
* @returns {Range}
|
||||
**/
|
||||
this.collapseRows = function() {
|
||||
if (this.end.column == 0)
|
||||
|
|
@ -539,10 +534,11 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Range.toScreenRange(session) -> Range
|
||||
* - session (EditSession): The `EditSession` to retrieve coordinates from
|
||||
*
|
||||
* Given the current `Range`, this function converts those starting and ending points into screen positions, and then returns a new `Range` object.
|
||||
* @param {EditSession} session The `EditSession` to retrieve coordinates from
|
||||
*
|
||||
*
|
||||
* @returns {Range}
|
||||
**/
|
||||
this.toScreenRange = function(session) {
|
||||
var screenPosStart =
|
||||
|
|
@ -559,12 +555,12 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
|||
}).call(Range.prototype);
|
||||
|
||||
/**
|
||||
* Range.fromPoints(start, end) -> Range
|
||||
* - start (Range): A starting point to use
|
||||
* - end (Range): An ending point to use
|
||||
*
|
||||
* Creates and returns a new `Range` based on the row and column of the given parameters.
|
||||
*
|
||||
* @param {Range} start A starting point to use
|
||||
* @param {Range} end An ending point to use
|
||||
*
|
||||
*
|
||||
* @returns {Range}
|
||||
**/
|
||||
Range.fromPoints = function(start, end) {
|
||||
return new Range(start.row, start.column, end.row, end.column);
|
||||
|
|
|
|||
|
|
@ -33,19 +33,14 @@ define(function(require, exports, module) {
|
|||
|
||||
var event = require("./lib/event");
|
||||
|
||||
/** internal, hide
|
||||
* class RenderLoop
|
||||
/**
|
||||
*
|
||||
*
|
||||
* Batches changes (that force something to be redrawn) in the background.
|
||||
*
|
||||
* @class RenderLoop
|
||||
**/
|
||||
|
||||
/** internal, hide
|
||||
* new RenderLoop(onRender, win)
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
||||
var RenderLoop = function(onRender, win) {
|
||||
this.onRender = onRender;
|
||||
this.pending = false;
|
||||
|
|
@ -55,12 +50,7 @@ var RenderLoop = function(onRender, win) {
|
|||
|
||||
(function() {
|
||||
|
||||
/** internal, hide
|
||||
* RenderLoop.schedule(change)
|
||||
* - change (Array):
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
||||
this.schedule = function(change) {
|
||||
//this.onRender(change);
|
||||
//return;
|
||||
|
|
|
|||
|
|
@ -37,18 +37,20 @@ var event = require("./lib/event");
|
|||
var EventEmitter = require("./lib/event_emitter").EventEmitter;
|
||||
|
||||
/**
|
||||
* class ScrollBar
|
||||
*
|
||||
*
|
||||
* A set of methods for setting and retrieving the editor's scrollbar.
|
||||
*
|
||||
* @class ScrollBar
|
||||
**/
|
||||
|
||||
/**
|
||||
* new ScrollBar(parent)
|
||||
* - parent (DOMElement): A DOM element
|
||||
*
|
||||
* Creates a new `ScrollBar`. `parent` is the owner of the scroll bar.
|
||||
* @param {DOMElement} parent A DOM element
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* @constructor
|
||||
**/
|
||||
var ScrollBar = function(parent) {
|
||||
this.element = dom.createElement("div");
|
||||
|
|
@ -75,10 +77,11 @@ var ScrollBar = function(parent) {
|
|||
oop.implement(this, EventEmitter);
|
||||
|
||||
/**
|
||||
* ScrollBar@scroll(e)
|
||||
* - e (Object): Contains one property, `"data"`, which indicates the current scroll top position
|
||||
*
|
||||
* Emitted when the scroll bar, well, scrolls.
|
||||
* @event scroll
|
||||
* @param {Object} e Contains one property, `"data"`, which indicates the current scroll top position
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.onScroll = function() {
|
||||
|
|
@ -86,20 +89,19 @@ var ScrollBar = function(parent) {
|
|||
};
|
||||
|
||||
/**
|
||||
* ScrollBar.getWidth() -> Number
|
||||
*
|
||||
*
|
||||
* Returns the width of the scroll bar.
|
||||
*
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getWidth = function() {
|
||||
return this.width;
|
||||
};
|
||||
|
||||
/**
|
||||
* ScrollBar.setHeight(height)
|
||||
* - height (Number): The new height
|
||||
*
|
||||
* Sets the height of the scroll bar, in pixels.
|
||||
* @param {Number} height The new height
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setHeight = function(height) {
|
||||
|
|
@ -107,25 +109,26 @@ var ScrollBar = function(parent) {
|
|||
};
|
||||
|
||||
/**
|
||||
* ScrollBar.setInnerHeight(height)
|
||||
* - height (Number): The new inner height
|
||||
*
|
||||
* Sets the inner height of the scroll bar, in pixels.
|
||||
* @param {Number} height The new inner height
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setInnerHeight = function(height) {
|
||||
this.inner.style.height = height + "px";
|
||||
};
|
||||
|
||||
/**
|
||||
* ScrollBar.setScrollTop(scrollTop)
|
||||
* - scrollTop (Number): The new scroll top
|
||||
*
|
||||
* Sets the scroll top of the scroll bar.
|
||||
*
|
||||
**/
|
||||
|
||||
// TODO: on chrome 17+ for small zoom levels after calling this function
|
||||
// this.element.scrollTop != scrollTop which makes page to scroll up.
|
||||
/**
|
||||
* Sets the scroll top of the scroll bar.
|
||||
* @param {Number} scrollTop The new scroll top
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setScrollTop = function(scrollTop) {
|
||||
this.element.scrollTop = scrollTop;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -36,28 +36,29 @@ var oop = require("./lib/oop");
|
|||
var Range = require("./range").Range;
|
||||
|
||||
/**
|
||||
* class Search
|
||||
* @class Search
|
||||
*
|
||||
* A class designed to handle all sorts of text searches within a [[Document `Document`]].
|
||||
*
|
||||
**/
|
||||
|
||||
/**
|
||||
* new Search()
|
||||
*
|
||||
*
|
||||
* Creates a new `Search` object. The following search options are avaliable:
|
||||
*
|
||||
* * `needle`: The string or regular expression you're looking for
|
||||
* * `backwards`: Whether to search backwards from where cursor currently is. Defaults to `false`.
|
||||
* * `wrap`: Whether to wrap the search back to the beginning when it hits the end. Defaults to `false`.
|
||||
* * `caseSensitive`: Whether the search ought to be case-sensitive. Defaults to `false`.
|
||||
* * `wholeWord`: Whether the search matches only on whole words. Defaults to `false`.
|
||||
* * `range`: The [[Range]] to search within. Set this to `null` for the whole document
|
||||
* * `regExp`: Whether the search is a regular expression or not. Defaults to `false`.
|
||||
* * `start`: The starting [[Range]] or cursor position to begin the search
|
||||
* * `skipCurrent`: Whether or not to include the current line in the search. Default to `false`.
|
||||
*
|
||||
**/
|
||||
* - `needle`: The string or regular expression you're looking for
|
||||
* - `backwards`: Whether to search backwards from where cursor currently is. Defaults to `false`.
|
||||
* - `wrap`: Whether to wrap the search back to the beginning when it hits the end. Defaults to `false`.
|
||||
* - `caseSensitive`: Whether the search ought to be case-sensitive. Defaults to `false`.
|
||||
* - `wholeWord`: Whether the search matches only on whole words. Defaults to `false`.
|
||||
* - `range`: The [[Range]] to search within. Set this to `null` for the whole document
|
||||
* - `regExp`: Whether the search is a regular expression or not. Defaults to `false`.
|
||||
* - `start`: The starting [[Range]] or cursor position to begin the search
|
||||
* - `skipCurrent`: Whether or not to include the current line in the search. Default to `false`.
|
||||
*
|
||||
* @constructor
|
||||
**/
|
||||
|
||||
var Search = function() {
|
||||
this.$options = {};
|
||||
|
|
@ -65,11 +66,12 @@ var Search = function() {
|
|||
|
||||
(function() {
|
||||
/**
|
||||
* Search.set(options) -> Search
|
||||
* - options (Object): An object containing all the new search properties
|
||||
*
|
||||
* Sets the search options via the `options` parameter.
|
||||
* @param {Object} options An object containing all the new search properties
|
||||
*
|
||||
*
|
||||
* @returns {Search}
|
||||
* @chainable
|
||||
**/
|
||||
this.set = function(options) {
|
||||
oop.mixin(this.$options, options);
|
||||
|
|
@ -77,24 +79,27 @@ var Search = function() {
|
|||
};
|
||||
|
||||
/**
|
||||
* Search.getOptions() -> Object
|
||||
*
|
||||
* [Returns an object containing all the search options.]{: #Search.getOptions}
|
||||
*
|
||||
* @returns {Object}
|
||||
**/
|
||||
this.getOptions = function() {
|
||||
return lang.copyObject(this.$options);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Sets the search options via the `options` parameter.
|
||||
* @param {Object} An object containing all the search propertie
|
||||
* @related Search.set
|
||||
**/
|
||||
this.setOptions = function(options) {
|
||||
this.$options = options;
|
||||
};
|
||||
/**
|
||||
* Search.find(session) -> Range
|
||||
* - session (EditSession): The session to search with
|
||||
*
|
||||
* Searches for `options.needle`. If found, this method returns the [[Range `Range`]] where the text first occurs. If `options.backwards` is `true`, the search goes backwards in the session.
|
||||
* @param {EditSession} session The session to search with
|
||||
*
|
||||
*
|
||||
* @returns {Range}
|
||||
**/
|
||||
this.find = function(session) {
|
||||
var iterator = this.$matchIterator(session, this.$options);
|
||||
|
|
@ -116,11 +121,11 @@ var Search = function() {
|
|||
};
|
||||
|
||||
/**
|
||||
* Search.findAll(session) -> [Range]
|
||||
* - session (EditSession): The session to search with
|
||||
*
|
||||
* Searches for all occurances `options.needle`. If found, this method returns an array of [[Range `Range`s]] where the text first occurs. If `options.backwards` is `true`, the search goes backwards in the session.
|
||||
* @param {EditSession} session The session to search with
|
||||
*
|
||||
*
|
||||
* @returns [Range]
|
||||
**/
|
||||
this.findAll = function(session) {
|
||||
var options = this.$options;
|
||||
|
|
@ -179,14 +184,14 @@ var Search = function() {
|
|||
};
|
||||
|
||||
/**
|
||||
* Search.replace(input, replacement) -> String
|
||||
* - input (String): The text to search in
|
||||
* - replacement (String): The replacing text
|
||||
* Searches for `options.needle` in `input`, and, if found, replaces it with `replacement`.
|
||||
* @param {String} input The text to search in
|
||||
* @param {String} replacement The replacing text
|
||||
* + (String): If `options.regExp` is `true`, this function returns `input` with the replacement already made. Otherwise, this function just returns `replacement`.<br/>
|
||||
* If `options.needle` was not found, this function returns `null`.
|
||||
*
|
||||
* Searches for `options.needle` in `input`, and, if found, replaces it with `replacement`.
|
||||
*
|
||||
*
|
||||
* @returns {String}
|
||||
**/
|
||||
this.replace = function(input, replacement) {
|
||||
var options = this.$options;
|
||||
|
|
@ -218,11 +223,6 @@ var Search = function() {
|
|||
return replacement;
|
||||
};
|
||||
|
||||
/** internal, hide
|
||||
* Search.$matchIterator(session) -> String | Boolean
|
||||
* - session (EditSession): The session to search with
|
||||
*
|
||||
**/
|
||||
this.$matchIterator = function(session, options) {
|
||||
var re = this.$assembleRegExp(options);
|
||||
if (!re)
|
||||
|
|
|
|||
|
|
@ -37,32 +37,37 @@ var EventEmitter = require("./lib/event_emitter").EventEmitter;
|
|||
var Range = require("./range").Range;
|
||||
|
||||
/**
|
||||
* class Selection
|
||||
*
|
||||
*
|
||||
* Contains the cursor position and the text selection of an edit session.
|
||||
*
|
||||
* The row/columns used in the selection are in document coordinates representing ths coordinates as thez appear in the document before applying soft wrap and folding.
|
||||
* @class Selection
|
||||
**/
|
||||
|
||||
|
||||
/**
|
||||
* new Selection(session)
|
||||
* - session (EditSession): The session to use
|
||||
*
|
||||
* Creates a new `Selection` object.
|
||||
*
|
||||
**/
|
||||
/**
|
||||
* Selection@changeCursor()
|
||||
*
|
||||
* Emitted when the cursor position changes.
|
||||
* @event changeCursor
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
/**
|
||||
* Selection@changeSelection()
|
||||
*
|
||||
* Emitted when the cursor selection changes.
|
||||
* @event changeSelection
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
/**
|
||||
* Creates a new `Selection` object.
|
||||
* @param {EditSession} session The session to use
|
||||
*
|
||||
*
|
||||
*
|
||||
* @constructor
|
||||
**/
|
||||
var Selection = function(session) {
|
||||
this.session = session;
|
||||
this.doc = session.getDocument();
|
||||
|
|
@ -91,9 +96,9 @@ var Selection = function(session) {
|
|||
oop.implement(this, EventEmitter);
|
||||
|
||||
/**
|
||||
* Selection.isEmpty() -> Boolean
|
||||
*
|
||||
*
|
||||
* Returns `true` if the selection is empty.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.isEmpty = function() {
|
||||
return (this.$isEmpty || (
|
||||
|
|
@ -102,10 +107,9 @@ var Selection = function(session) {
|
|||
));
|
||||
};
|
||||
|
||||
/** extension
|
||||
* Selection.isMultiLine() -> Boolean
|
||||
*
|
||||
/**
|
||||
* Returns `true` if the selection is a multi-line.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.isMultiLine = function() {
|
||||
if (this.isEmpty()) {
|
||||
|
|
@ -115,21 +119,20 @@ var Selection = function(session) {
|
|||
return this.getRange().isMultiLine();
|
||||
};
|
||||
|
||||
/** extension
|
||||
* Selection.getCursor() -> Number
|
||||
*
|
||||
/**
|
||||
* Gets the current position of the cursor.
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getCursor = function() {
|
||||
return this.lead.getPosition();
|
||||
};
|
||||
|
||||
/**
|
||||
* Selection.setSelectionAnchor(row, column)
|
||||
* - row (Number): The new row
|
||||
* - column (Number): The new column
|
||||
*
|
||||
* Sets the row and column position of the anchor. This function also emits the `'changeSelection'` event.
|
||||
* @param {Number} row The new row
|
||||
* @param {Number} column The new column
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setSelectionAnchor = function(row, column) {
|
||||
this.anchor.setPosition(row, column);
|
||||
|
|
@ -140,11 +143,9 @@ var Selection = function(session) {
|
|||
}
|
||||
};
|
||||
|
||||
/** related to: Anchor.getPosition
|
||||
* Selection.getSelectionAnchor() -> Object
|
||||
*
|
||||
/**
|
||||
* Returns an object containing the `row` and `column` of the calling selection anchor.
|
||||
*
|
||||
* @related Anchor.getPosition
|
||||
**/
|
||||
this.getSelectionAnchor = function() {
|
||||
if (this.$isEmpty)
|
||||
|
|
@ -154,19 +155,19 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.getSelectionLead() -> Object
|
||||
*
|
||||
*
|
||||
* Returns an object containing the `row` and `column` of the calling selection lead.
|
||||
* @returns {Object}
|
||||
**/
|
||||
this.getSelectionLead = function() {
|
||||
return this.lead.getPosition();
|
||||
};
|
||||
|
||||
/**
|
||||
* Selection.shiftSelection(columns)
|
||||
* - columns (Number): The number of columns to shift by
|
||||
*
|
||||
* Shifts the selection up (or down, if [[Selection.isBackwards `isBackwards()`]] is true) the given number of columns.
|
||||
* @param {Number} columns The number of columns to shift by
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.shiftSelection = function(columns) {
|
||||
|
|
@ -191,9 +192,8 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.isBackwards() -> Boolean
|
||||
*
|
||||
* Returns `true` if the selection is going backwards in the document.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.isBackwards = function() {
|
||||
var anchor = this.anchor;
|
||||
|
|
@ -202,9 +202,8 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.getRange() -> Range
|
||||
*
|
||||
* [Returns the [[Range]] for the selected text.]{: #Selection.getRange}
|
||||
* @returns {Range}
|
||||
**/
|
||||
this.getRange = function() {
|
||||
var anchor = this.anchor;
|
||||
|
|
@ -222,8 +221,6 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.clearSelection()
|
||||
*
|
||||
* [Empties the selection (by de-selecting it). This function also emits the `'changeSelection'` event.]{: #Selection.clearSelection}
|
||||
**/
|
||||
this.clearSelection = function() {
|
||||
|
|
@ -234,8 +231,6 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectAll()
|
||||
*
|
||||
* Selects all the text in the document.
|
||||
**/
|
||||
this.selectAll = function() {
|
||||
|
|
@ -245,12 +240,12 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.setSelectionRange(range, reverse)
|
||||
* - range (Range): The range of text to select
|
||||
* - reverse (Boolean): Indicates if the range should go backwards (`true`) or not
|
||||
*
|
||||
* Sets the selection to the provided range.
|
||||
* @param {Range} range The range of text to select
|
||||
* @param {Boolean} reverse Indicates if the range should go backwards (`true`) or not
|
||||
*
|
||||
*
|
||||
* @method setSelectionRange
|
||||
**/
|
||||
this.setRange =
|
||||
this.setSelectionRange = function(range, reverse) {
|
||||
|
|
@ -273,11 +268,11 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectTo(row, column)
|
||||
* - row (Number): The row to select to
|
||||
* - column (Number): The column to select to
|
||||
*
|
||||
* Moves the selection cursor to the indicated row and column.
|
||||
* @param {Number} row The row to select to
|
||||
* @param {Number} column The column to select to
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.selectTo = function(row, column) {
|
||||
|
|
@ -287,10 +282,10 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectToPosition(pos)
|
||||
* - pos (Object): An object containing the row and column
|
||||
*
|
||||
* Moves the selection cursor to the row and column indicated by `pos`.
|
||||
* @param {Object} pos An object containing the row and column
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.selectToPosition = function(pos) {
|
||||
|
|
@ -300,8 +295,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectUp()
|
||||
*
|
||||
*
|
||||
* Moves the selection up one row.
|
||||
**/
|
||||
this.selectUp = function() {
|
||||
|
|
@ -309,8 +303,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectDown()
|
||||
*
|
||||
*
|
||||
* Moves the selection down one row.
|
||||
**/
|
||||
this.selectDown = function() {
|
||||
|
|
@ -318,7 +311,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectRight()
|
||||
*
|
||||
*
|
||||
* Moves the selection right one column.
|
||||
**/
|
||||
|
|
@ -327,8 +320,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectLeft()
|
||||
*
|
||||
*
|
||||
* Moves the selection left one column.
|
||||
**/
|
||||
this.selectLeft = function() {
|
||||
|
|
@ -336,8 +328,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectLineStart()
|
||||
*
|
||||
*
|
||||
* Moves the selection to the beginning of the current line.
|
||||
**/
|
||||
this.selectLineStart = function() {
|
||||
|
|
@ -345,8 +336,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectLineEnd()
|
||||
*
|
||||
*
|
||||
* Moves the selection to the end of the current line.
|
||||
**/
|
||||
this.selectLineEnd = function() {
|
||||
|
|
@ -354,8 +344,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectFileEnd()
|
||||
*
|
||||
*
|
||||
* Moves the selection to the end of the file.
|
||||
**/
|
||||
this.selectFileEnd = function() {
|
||||
|
|
@ -363,8 +352,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectFileStart()
|
||||
*
|
||||
*
|
||||
* Moves the selection to the start of the file.
|
||||
**/
|
||||
this.selectFileStart = function() {
|
||||
|
|
@ -372,8 +360,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectWordRight()
|
||||
*
|
||||
*
|
||||
* Moves the selection to the first word on the right.
|
||||
**/
|
||||
this.selectWordRight = function() {
|
||||
|
|
@ -381,18 +368,16 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectWordLeft()
|
||||
*
|
||||
*
|
||||
* Moves the selection to the first word on the left.
|
||||
**/
|
||||
this.selectWordLeft = function() {
|
||||
this.$moveSelection(this.moveCursorWordLeft);
|
||||
};
|
||||
|
||||
/** related to: EditSession.getWordRange
|
||||
* Selection.selectWord()
|
||||
*
|
||||
/**
|
||||
* Moves the selection to highlight the entire word.
|
||||
* @related EditSession.getWordRange
|
||||
**/
|
||||
this.getWordRange = function(row, column) {
|
||||
if (typeof column == "undefined") {
|
||||
|
|
@ -402,15 +387,18 @@ var Selection = function(session) {
|
|||
}
|
||||
return this.session.getWordRange(row, column);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Selects an entire word boundary.
|
||||
**/
|
||||
this.selectWord = function() {
|
||||
this.setSelectionRange(this.getWordRange());
|
||||
};
|
||||
|
||||
/** related to: EditSession.getAWordRange
|
||||
* Selection.selectAWord()
|
||||
*
|
||||
/**
|
||||
* Selects a word, including its right whitespace.
|
||||
* @related EditSession.getAWordRange
|
||||
**/
|
||||
this.selectAWord = function() {
|
||||
var cursor = this.getCursor();
|
||||
|
|
@ -436,8 +424,6 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.selectLine()
|
||||
*
|
||||
* Selects the entire line.
|
||||
**/
|
||||
this.selectLine = function() {
|
||||
|
|
@ -445,8 +431,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorUp()
|
||||
*
|
||||
*
|
||||
* Moves the cursor up one row.
|
||||
**/
|
||||
this.moveCursorUp = function() {
|
||||
|
|
@ -454,8 +439,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorDown()
|
||||
*
|
||||
*
|
||||
* Moves the cursor down one row.
|
||||
**/
|
||||
this.moveCursorDown = function() {
|
||||
|
|
@ -463,8 +447,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorLeft()
|
||||
*
|
||||
*
|
||||
* Moves the cursor left one column.
|
||||
**/
|
||||
this.moveCursorLeft = function() {
|
||||
|
|
@ -489,8 +472,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorRight()
|
||||
*
|
||||
*
|
||||
* Moves the cursor right one column.
|
||||
**/
|
||||
this.moveCursorRight = function() {
|
||||
|
|
@ -515,8 +497,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorLineStart()
|
||||
*
|
||||
*
|
||||
* Moves the cursor to the start of the line.
|
||||
**/
|
||||
this.moveCursorLineStart = function() {
|
||||
|
|
@ -548,8 +529,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorLineEnd()
|
||||
*
|
||||
*
|
||||
* Moves the cursor to the end of the line.
|
||||
**/
|
||||
this.moveCursorLineEnd = function() {
|
||||
|
|
@ -568,8 +548,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorFileEnd()
|
||||
*
|
||||
*
|
||||
* Moves the cursor to the end of the file.
|
||||
**/
|
||||
this.moveCursorFileEnd = function() {
|
||||
|
|
@ -579,8 +558,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorFileStart()
|
||||
*
|
||||
*
|
||||
* Moves the cursor to the start of the file.
|
||||
**/
|
||||
this.moveCursorFileStart = function() {
|
||||
|
|
@ -588,8 +566,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorLongWordRight()
|
||||
*
|
||||
*
|
||||
* Moves the cursor to the word on the right.
|
||||
**/
|
||||
this.moveCursorLongWordRight = function() {
|
||||
|
|
@ -635,8 +612,7 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorLongWordLeft()
|
||||
*
|
||||
*
|
||||
* Moves the cursor to the word on the left.
|
||||
**/
|
||||
this.moveCursorLongWordLeft = function() {
|
||||
|
|
@ -788,12 +764,13 @@ var Selection = function(session) {
|
|||
this.moveCursorShortWordLeft();
|
||||
};
|
||||
|
||||
/** related to: EditSession.documentToScreenPosition
|
||||
* Selection.moveCursorBy(rows, chars)
|
||||
* - rows (Number): The number of rows to move by
|
||||
* - chars (Number): The number of characters to move by
|
||||
/**
|
||||
* Moves the cursor to position indicated by the parameters. Negative numbers move the cursor backwards in the document.
|
||||
* @param {Number} rows The number of rows to move by
|
||||
* @param {Number} chars The number of characters to move by
|
||||
*
|
||||
* Moves the cursor to position indicated by the parameters. Negative numbers move the cursor backwards in the document.
|
||||
*
|
||||
* @related EditSession.documentToScreenPosition
|
||||
**/
|
||||
this.moveCursorBy = function(rows, chars) {
|
||||
var screenPos = this.session.documentToScreenPosition(
|
||||
|
|
@ -815,22 +792,22 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorToPosition(position)
|
||||
* - position (Object): The position to move to
|
||||
*
|
||||
* Moves the selection to the position indicated by its `row` and `column`.
|
||||
* @param {Object} position The position to move to
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.moveCursorToPosition = function(position) {
|
||||
this.moveCursorTo(position.row, position.column);
|
||||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorTo(row, column, keepDesiredColumn)
|
||||
* - row (Number): The row to move to
|
||||
* - column (Number): The column to move to
|
||||
* - keepDesiredColumn (Boolean): [If `true`, the cursor move does not respect the previous column]{: #preventUpdateBool}
|
||||
*
|
||||
* Moves the cursor to the row and column provided. [If `preventUpdateDesiredColumn` is `true`, then the cursor stays in the same column position as its original point.]{: #preventUpdateBoolDesc}
|
||||
* @param {Number} row The row to move to
|
||||
* @param {Number} column The column to move to
|
||||
* @param {Boolean} keepDesiredColumn [If `true`, the cursor move does not respect the previous column]{: #preventUpdateBool}
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.moveCursorTo = function(row, column, keepDesiredColumn) {
|
||||
// Ensure the row/column is not inside of a fold.
|
||||
|
|
@ -849,12 +826,12 @@ var Selection = function(session) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Selection.moveCursorToScreen(row, column, keepDesiredColumn)
|
||||
* - row (Number): The row to move to
|
||||
* - column (Number): The column to move to
|
||||
* - keepDesiredColumn (Boolean): {:preventUpdateBool}
|
||||
*
|
||||
* Moves the cursor to the screen position indicated by row and column. {:preventUpdateBoolDesc}
|
||||
* @param {Number} row The row to move to
|
||||
* @param {Number} column The column to move to
|
||||
* @param {Boolean} keepDesiredColumn {:preventUpdateBool}
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.moveCursorToScreen = function(row, column, keepDesiredColumn) {
|
||||
var pos = this.session.screenToDocumentPosition(row, column);
|
||||
|
|
|
|||
109
lib/ace/split.js
109
lib/ace/split.js
|
|
@ -39,22 +39,13 @@ var Editor = require("./editor").Editor;
|
|||
var Renderer = require("./virtual_renderer").VirtualRenderer;
|
||||
var EditSession = require("./edit_session").EditSession;
|
||||
|
||||
/** internal, hide
|
||||
* class Split
|
||||
/**
|
||||
* @class Split
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
||||
/** internal, hide
|
||||
* new Split(container, theme, splits)
|
||||
* - container (Document): The document to associate with the split
|
||||
* - theme (String): The name of the initial theme
|
||||
* - splits (Number): The number of initial splits
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
||||
var Split = function(container, theme, splits) {
|
||||
this.BELOW = 1;
|
||||
|
|
@ -96,13 +87,6 @@ var Split = function(container, theme, splits) {
|
|||
return editor;
|
||||
};
|
||||
|
||||
/** internal, hide
|
||||
* Split.setSplits(splits) -> Void
|
||||
* - splits (Number): The new number of splits
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setSplits = function(splits) {
|
||||
var editor;
|
||||
if (splits < 1) {
|
||||
|
|
@ -133,18 +117,16 @@ var Split = function(container, theme, splits) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Split.getSplits() -> Number
|
||||
*
|
||||
*
|
||||
* Returns the number of splits.
|
||||
*
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getSplits = function() {
|
||||
return this.$splits;
|
||||
};
|
||||
|
||||
/**
|
||||
* Split.getEditor(idx) -> Editor
|
||||
* -idx (Number): The index of the editor you want
|
||||
* @param {Number} idx The index of the editor you want
|
||||
*
|
||||
* Returns the editor identified by the index `idx`.
|
||||
*
|
||||
|
|
@ -154,40 +136,36 @@ var Split = function(container, theme, splits) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Split.getCurrentEditor() -> Editor
|
||||
*
|
||||
*
|
||||
* Returns the current editor.
|
||||
*
|
||||
* @returns {Editor}
|
||||
**/
|
||||
this.getCurrentEditor = function() {
|
||||
return this.$cEditor;
|
||||
};
|
||||
|
||||
/** related to: Editor.focus
|
||||
* Split.focus() -> Void
|
||||
*
|
||||
/**
|
||||
* Focuses the current editor.
|
||||
*
|
||||
* @related Editor.focus
|
||||
**/
|
||||
this.focus = function() {
|
||||
this.$cEditor.focus();
|
||||
};
|
||||
|
||||
/** related to: Editor.blur
|
||||
* Split.blur() -> Void
|
||||
*
|
||||
/**
|
||||
* Blurs the current editor.
|
||||
*
|
||||
* @related Editor.blur
|
||||
**/
|
||||
this.blur = function() {
|
||||
this.$cEditor.blur();
|
||||
};
|
||||
|
||||
/** related to: Editor.setTheme
|
||||
* Split.setTheme(theme) -> Void
|
||||
* - theme (String): The name of the theme to set
|
||||
/**
|
||||
*
|
||||
* @param {String} theme The name of the theme to set
|
||||
*
|
||||
* Sets a theme for each of the available editors.
|
||||
* @related Editor.setTheme
|
||||
**/
|
||||
this.setTheme = function(theme) {
|
||||
this.$editors.forEach(function(editor) {
|
||||
|
|
@ -195,11 +173,12 @@ var Split = function(container, theme, splits) {
|
|||
});
|
||||
};
|
||||
|
||||
/** internal, hide
|
||||
* Split.setKeyboardHandler(keybinding) -> Void
|
||||
* - keybinding (String):
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param {String} keybinding
|
||||
*
|
||||
* Sets the keyboard handler for the editor.
|
||||
* @related editor.setKeyboardHandler
|
||||
**/
|
||||
this.setKeyboardHandler = function(keybinding) {
|
||||
this.$editors.forEach(function(editor) {
|
||||
|
|
@ -207,10 +186,10 @@ var Split = function(container, theme, splits) {
|
|||
});
|
||||
};
|
||||
|
||||
/** internal, hide
|
||||
* Split.forEach(callback, scope) -> Void
|
||||
* - callback (Function): A callback function to execute
|
||||
* - scope (String):
|
||||
/**
|
||||
*
|
||||
* @param {Function} callback A callback function to execute
|
||||
* @param {String} scope The default scope for the callback
|
||||
*
|
||||
* Executes `callback` on all of the available editors.
|
||||
*
|
||||
|
|
@ -219,14 +198,14 @@ var Split = function(container, theme, splits) {
|
|||
this.$editors.forEach(callback, scope);
|
||||
};
|
||||
|
||||
/** related to: Editor.setFontSize
|
||||
* Split.setFontSize(size) -> Void
|
||||
* - size (Number): The new font size
|
||||
|
||||
this.$fontSize = "";
|
||||
/**
|
||||
* @param {Number} size The new font size
|
||||
*
|
||||
* Sets the font size, in pixels, for all the available editors.
|
||||
*
|
||||
**/
|
||||
this.$fontSize = "";
|
||||
this.setFontSize = function(size) {
|
||||
this.$fontSize = size;
|
||||
this.forEach(function(editor) {
|
||||
|
|
@ -261,13 +240,13 @@ var Split = function(container, theme, splits) {
|
|||
return s;
|
||||
};
|
||||
|
||||
/** related to: Editor.setSession
|
||||
* Split.setSession(session, idx) -> Void
|
||||
* - session (EditSession): The new edit session
|
||||
* - idx (Number): The editor's index you're interested in
|
||||
/**
|
||||
*
|
||||
* @param {EditSession} session The new edit session
|
||||
* @param {Number} idx The editor's index you're interested in
|
||||
*
|
||||
* Sets a new [[EditSession `EditSession`]] for the indicated editor.
|
||||
*
|
||||
* @related Editor.setSession
|
||||
**/
|
||||
this.setSession = function(session, idx) {
|
||||
var editor;
|
||||
|
|
@ -295,19 +274,18 @@ var Split = function(container, theme, splits) {
|
|||
return session;
|
||||
};
|
||||
|
||||
/** internal, hide
|
||||
* Split.getOrientation() -> Number
|
||||
/**
|
||||
*
|
||||
* Returns the orientation.
|
||||
*
|
||||
* @returns Number
|
||||
**/
|
||||
this.getOrientation = function() {
|
||||
return this.$orientation;
|
||||
};
|
||||
|
||||
/** internal, hide
|
||||
* Split.setOrientation(oriantation) -> Void
|
||||
* - oriantation (Number):
|
||||
/**
|
||||
*
|
||||
* @param {Number} orientation The new orientation value
|
||||
*
|
||||
* Sets the orientation.
|
||||
*
|
||||
|
|
@ -320,11 +298,11 @@ var Split = function(container, theme, splits) {
|
|||
this.resize();
|
||||
};
|
||||
|
||||
/** internal
|
||||
/**
|
||||
* Split.resize() -> Void
|
||||
*
|
||||
*
|
||||
*
|
||||
* Resizes the editor.
|
||||
**/
|
||||
this.resize = function() {
|
||||
var width = this.$container.clientWidth;
|
||||
|
|
@ -356,12 +334,7 @@ var Split = function(container, theme, splits) {
|
|||
|
||||
}).call(Split.prototype);
|
||||
|
||||
/** internal
|
||||
* Split.UndoManagerProxy() -> Void
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
||||
function UndoManagerProxy(undoManager, session) {
|
||||
this.$u = undoManager;
|
||||
this.$doc = session;
|
||||
|
|
|
|||
|
|
@ -32,20 +32,19 @@ define(function(require, exports, module) {
|
|||
"use strict";
|
||||
|
||||
/**
|
||||
* class TokenIterator
|
||||
*
|
||||
*
|
||||
* This class provides an essay way to treat the document as a stream of tokens, and provides methods to iterate over these tokens.
|
||||
*
|
||||
* @class TokenIterator
|
||||
**/
|
||||
|
||||
/**
|
||||
* new TokenIterator(session, initialRow, initialColumn)
|
||||
* - session (EditSession): The session to associate with
|
||||
* - initialRow (Number): The row to start the tokenizing at
|
||||
* - initialColumn (Number): The column to start the tokenizing at
|
||||
*
|
||||
* Creates a new token iterator object. The inital token index is set to the provided row and column coordinates.
|
||||
* @param {EditSession} session The session to associate with
|
||||
* @param {Number} initialRow The row to start the tokenizing at
|
||||
* @param {Number} initialColumn The column to start the tokenizing at
|
||||
*
|
||||
* @constructor
|
||||
**/
|
||||
var TokenIterator = function(session, initialRow, initialColumn) {
|
||||
this.$session = session;
|
||||
|
|
@ -59,10 +58,9 @@ var TokenIterator = function(session, initialRow, initialColumn) {
|
|||
(function() {
|
||||
|
||||
/**
|
||||
* TokenIterator.stepBackward() -> [String]
|
||||
* + (String): If the current point is not at the top of the file, this function returns `null`. Otherwise, it returns an array of the tokenized strings.
|
||||
*
|
||||
* Tokenizes all the items from the current point to the row prior in the document.
|
||||
* @returns [String] If the current point is not at the top of the file, this function returns `null`. Otherwise, it returns an array of the tokenized strings.
|
||||
**/
|
||||
this.stepBackward = function() {
|
||||
this.$tokenIndex -= 1;
|
||||
|
|
@ -82,9 +80,9 @@ var TokenIterator = function(session, initialRow, initialColumn) {
|
|||
};
|
||||
|
||||
/**
|
||||
* TokenIterator.stepForward() -> String
|
||||
*
|
||||
* Tokenizes all the items from the current point until the next row in the document. If the current point is at the end of the file, this function returns `null`. Otherwise, it returns the tokenized string.
|
||||
* @returns {String}
|
||||
**/
|
||||
this.stepForward = function() {
|
||||
var rowCount = this.$session.getLength();
|
||||
|
|
@ -105,30 +103,27 @@ var TokenIterator = function(session, initialRow, initialColumn) {
|
|||
};
|
||||
|
||||
/**
|
||||
* TokenIterator.getCurrentToken() -> String
|
||||
*
|
||||
* Returns the current tokenized string.
|
||||
*
|
||||
* @returns {String}
|
||||
**/
|
||||
this.getCurrentToken = function () {
|
||||
return this.$rowTokens[this.$tokenIndex];
|
||||
};
|
||||
|
||||
/**
|
||||
* TokenIterator.getCurrentTokenRow() -> Number
|
||||
*
|
||||
* Returns the current row.
|
||||
*
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getCurrentTokenRow = function () {
|
||||
return this.$row;
|
||||
};
|
||||
|
||||
/**
|
||||
* TokenIterator.getCurrentTokenColumn() -> Number
|
||||
*
|
||||
* Returns the current column.
|
||||
*
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getCurrentTokenColumn = function() {
|
||||
var rowTokens = this.$rowTokens;
|
||||
|
|
|
|||
|
|
@ -32,19 +32,21 @@ define(function(require, exports, module) {
|
|||
"use strict";
|
||||
|
||||
/**
|
||||
* class Tokenizer
|
||||
*
|
||||
*
|
||||
* This class takes a set of highlighting rules, and creates a tokenizer out of them. For more information, see [the wiki on extending highlighters](https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode#wiki-extendingTheHighlighter).
|
||||
*
|
||||
* @class Tokenizer
|
||||
**/
|
||||
|
||||
/**
|
||||
* new Tokenizer(rules, flag)
|
||||
* - rules (Object): The highlighting rules
|
||||
* - flag (String): Any additional regular expression flags to pass (like "i" for case insensitive)
|
||||
*
|
||||
* Constructs a new tokenizer based on the given rules and flags.
|
||||
* @param {Object} rules The highlighting rules
|
||||
* @param {String} flag Any additional regular expression flags to pass (like "i" for case insensitive)
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* @constructor
|
||||
**/
|
||||
var Tokenizer = function(rules, flag) {
|
||||
flag = flag ? "g" + flag : "g";
|
||||
|
|
@ -92,9 +94,8 @@ var Tokenizer = function(rules, flag) {
|
|||
(function() {
|
||||
|
||||
/**
|
||||
* Tokenizer.getLineTokens() -> Object
|
||||
*
|
||||
* Returns an object containing two properties: `tokens`, which contains all the tokens; and `state`, the current state.
|
||||
* @returns {Object}
|
||||
**/
|
||||
this.getLineTokens = function(line, startState) {
|
||||
var currentState = startState || "start";
|
||||
|
|
|
|||
|
|
@ -32,16 +32,18 @@ define(function(require, exports, module) {
|
|||
"use strict";
|
||||
|
||||
/**
|
||||
* class UndoManager
|
||||
*
|
||||
*
|
||||
* This object maintains the undo stack for an [[EditSession `EditSession`]].
|
||||
*
|
||||
* @class UndoManager
|
||||
**/
|
||||
|
||||
/**
|
||||
* new UndoManager()
|
||||
*
|
||||
*
|
||||
* Resets the current undo state and creates a new `UndoManager`.
|
||||
*
|
||||
* @constructor
|
||||
**/
|
||||
var UndoManager = function() {
|
||||
this.reset();
|
||||
|
|
@ -50,13 +52,12 @@ var UndoManager = function() {
|
|||
(function() {
|
||||
|
||||
/**
|
||||
* UndoManager.execute(options) -> Void
|
||||
* - options (Object): Contains additional properties
|
||||
*
|
||||
* Provides a means for implementing your own undo manager. `options` has one property, `args`, an [[Array `Array`]], with two elements:
|
||||
*
|
||||
* * `args[0]` is an array of deltas
|
||||
* * `args[1]` is the document to associate with
|
||||
* - `args[0]` is an array of deltas
|
||||
* - `args[1]` is the document to associate with
|
||||
*
|
||||
* @param {Object} options Contains additional properties
|
||||
*
|
||||
**/
|
||||
this.execute = function(options) {
|
||||
|
|
@ -67,10 +68,11 @@ var UndoManager = function() {
|
|||
};
|
||||
|
||||
/**
|
||||
* UndoManager.undo(dontSelect) -> Range
|
||||
* - dontSelect (Boolean): {:dontSelect}
|
||||
* [Perform an undo operation on the document, reverting the last change.]{: #UndoManager.undo}
|
||||
* @param {Boolean} dontSelect {:dontSelect}
|
||||
*
|
||||
* [Perform an undo operation on the document, reverting the last change. Returns the range of the undo.]{: #UndoManager.undo}
|
||||
*
|
||||
* @returns {Range} The range of the undo.
|
||||
**/
|
||||
this.undo = function(dontSelect) {
|
||||
var deltas = this.$undoStack.pop();
|
||||
|
|
@ -84,10 +86,10 @@ var UndoManager = function() {
|
|||
};
|
||||
|
||||
/**
|
||||
* UndoManager.redo(dontSelect) -> Void
|
||||
* - dontSelect (Boolean): {:dontSelect}
|
||||
*
|
||||
* [Perform a redo operation on the document, reimplementing the last change.]{: #UndoManager.redo}
|
||||
* @param {Boolean} dontSelect {:dontSelect}
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.redo = function(dontSelect) {
|
||||
var deltas = this.$redoStack.pop();
|
||||
|
|
@ -101,8 +103,7 @@ var UndoManager = function() {
|
|||
};
|
||||
|
||||
/**
|
||||
* UndoManager.reset() -> Void
|
||||
*
|
||||
*
|
||||
* Destroys the stack of undo and redo redo operations.
|
||||
**/
|
||||
this.reset = function() {
|
||||
|
|
@ -111,18 +112,18 @@ var UndoManager = function() {
|
|||
};
|
||||
|
||||
/**
|
||||
* UndoManager.hasUndo() -> Boolean
|
||||
*
|
||||
*
|
||||
* Returns `true` if there are undo operations left to perform.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.hasUndo = function() {
|
||||
return this.$undoStack.length > 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* UndoManager.hasRedo() -> Boolean
|
||||
*
|
||||
*
|
||||
* Returns `true` if there are redo operations left to perform.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.hasRedo = function() {
|
||||
return this.$redoStack.length > 0;
|
||||
|
|
|
|||
|
|
@ -49,19 +49,21 @@ var editorCss = require("./requirejs/text!./css/editor.css");
|
|||
dom.importCssString(editorCss, "ace_editor");
|
||||
|
||||
/**
|
||||
* class VirtualRenderer
|
||||
*
|
||||
*
|
||||
* The class that is responsible for drawing everything you see on the screen!
|
||||
*
|
||||
* @class VirtualRenderer
|
||||
**/
|
||||
|
||||
/**
|
||||
* new VirtualRenderer(container, theme)
|
||||
* - container (DOMElement): The root element of the editor
|
||||
* - theme (String): The starting theme
|
||||
*
|
||||
* Constructs a new `VirtualRenderer` within the `container` specified, applying the given `theme`.
|
||||
* @param {DOMElement} container The root element of the editor
|
||||
* @param {String} theme The starting theme
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* @constructor
|
||||
**/
|
||||
|
||||
var VirtualRenderer = function(container, theme) {
|
||||
|
|
@ -196,9 +198,8 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setSession(session)
|
||||
*
|
||||
* Associates an [[EditSession `EditSession`]].
|
||||
* Associates the renderer with an [[EditSession `EditSession`]].
|
||||
**/
|
||||
this.setSession = function(session) {
|
||||
this.session = session;
|
||||
|
|
@ -215,11 +216,11 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.updateLines(firstRow, lastRow)
|
||||
* - firstRow (Number): The first row to update
|
||||
* - lastRow (Number): The last row to update
|
||||
*
|
||||
* Triggers a partial update of the text, from the range given by the two parameters.
|
||||
* @param {Number} firstRow The first row to update
|
||||
* @param {Number} lastRow The last row to update
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.updateLines = function(firstRow, lastRow) {
|
||||
if (lastRow === undefined)
|
||||
|
|
@ -248,8 +249,6 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.updateText()
|
||||
*
|
||||
* Triggers a full update of the text, for all the rows.
|
||||
**/
|
||||
this.updateText = function() {
|
||||
|
|
@ -257,10 +256,10 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.updateFull(force)
|
||||
* - force (Boolean): If `true`, forces the changes through
|
||||
*
|
||||
* Triggers a full update of all the layers, for all the rows.
|
||||
* @param {Boolean} force If `true`, forces the changes through
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.updateFull = function(force) {
|
||||
if (force){
|
||||
|
|
@ -272,8 +271,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.updateFontSize()
|
||||
*
|
||||
*
|
||||
* Updates the font size.
|
||||
**/
|
||||
this.updateFontSize = function() {
|
||||
|
|
@ -281,13 +279,13 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.onResize(force, gutterWidth, width, height)
|
||||
* - force (Boolean): If `true`, recomputes the size, even if the height and width haven't changed
|
||||
* - gutterWidth (Number): The width of the gutter in pixels
|
||||
* - width (Number): The width of the editor in pixels
|
||||
* - height (Number): The hiehgt of the editor, in pixels
|
||||
*
|
||||
* [Triggers a resize of the editor.]{: #VirtualRenderer.onResize}
|
||||
* @param {Boolean} force If `true`, recomputes the size, even if the height and width haven't changed
|
||||
* @param {Number} gutterWidth The width of the gutter in pixels
|
||||
* @param {Number} width The width of the editor in pixels
|
||||
* @param {Number} height The hiehgt of the editor, in pixels
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.onResize = function(force, gutterWidth, width, height) {
|
||||
var changes = this.CHANGE_SIZE;
|
||||
|
|
@ -339,8 +337,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.adjustWrapLimit()
|
||||
*
|
||||
*
|
||||
* Adjusts the wrap limit, which is the number of characters that can fit within the width of the edit area on screen.
|
||||
**/
|
||||
this.adjustWrapLimit = function() {
|
||||
|
|
@ -350,10 +347,10 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setAnimatedScroll(shouldAnimate)
|
||||
* - shouldAnimate (Boolean): Set to `true` to show animated scrolls
|
||||
*
|
||||
* Identifies whether you want to have an animated scroll or not.
|
||||
* @param {Boolean} shouldAnimate Set to `true` to show animated scrolls
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setAnimatedScroll = function(shouldAnimate){
|
||||
|
|
@ -361,19 +358,19 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getAnimatedScroll() -> Boolean
|
||||
*
|
||||
*
|
||||
* Returns whether an animated scroll happens or not.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.getAnimatedScroll = function() {
|
||||
return this.$animatedScroll;
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setShowInvisibles(showInvisibles)
|
||||
* - showInvisibles (Boolean): Set to `true` to show invisibles
|
||||
*
|
||||
* Identifies whether you want to show invisible characters or not.
|
||||
* @param {Boolean} showInvisibles Set to `true` to show invisibles
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setShowInvisibles = function(showInvisibles) {
|
||||
|
|
@ -382,9 +379,9 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getShowInvisibles() -> Boolean
|
||||
*
|
||||
*
|
||||
* Returns whether invisible characters are being shown or not.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.getShowInvisibles = function() {
|
||||
return this.$textLayer.showInvisibles;
|
||||
|
|
@ -402,10 +399,10 @@ var VirtualRenderer = function(container, theme) {
|
|||
this.$showPrintMargin = true;
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setShowPrintMargin(showPrintMargin)
|
||||
* - showPrintMargin (Boolean): Set to `true` to show the print margin
|
||||
*
|
||||
* Identifies whether you want to show the print margin or not.
|
||||
* @param {Boolean} showPrintMargin Set to `true` to show the print margin
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setShowPrintMargin = function(showPrintMargin) {
|
||||
|
|
@ -414,9 +411,8 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getShowPrintMargin() -> Boolean
|
||||
*
|
||||
* Returns whetherthe print margin is being shown or not.
|
||||
* Returns whether the print margin is being shown or not.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.getShowPrintMargin = function() {
|
||||
return this.$showPrintMargin;
|
||||
|
|
@ -425,10 +421,10 @@ var VirtualRenderer = function(container, theme) {
|
|||
this.$printMarginColumn = 80;
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setPrintMarginColumn(showPrintMargin)
|
||||
* - showPrintMargin (Boolean): Set to `true` to show the print margin column
|
||||
*
|
||||
* Identifies whether you want to show the print margin column or not.
|
||||
* @param {Boolean} showPrintMargin Set to `true` to show the print margin column
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setPrintMarginColumn = function(showPrintMargin) {
|
||||
|
|
@ -437,28 +433,28 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getPrintMarginColumn() -> Boolean
|
||||
*
|
||||
*
|
||||
* Returns whether the print margin column is being shown or not.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.getPrintMarginColumn = function() {
|
||||
return this.$printMarginColumn;
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getShowGutter() -> Boolean
|
||||
*
|
||||
*
|
||||
* Returns `true` if the gutter is being shown.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.getShowGutter = function(){
|
||||
return this.showGutter;
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setShowGutter(show)
|
||||
* - show (Boolean): Set to `true` to show the gutter
|
||||
*
|
||||
* Identifies whether you want to show the gutter or not.
|
||||
* @param {Boolean} show Set to `true` to show the gutter
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setShowGutter = function(show){
|
||||
if(this.showGutter === show)
|
||||
|
|
@ -526,27 +522,27 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getContainerElement() -> DOMElement
|
||||
*
|
||||
*
|
||||
* Returns the root element containing this renderer.
|
||||
* @returns {DOMElement}
|
||||
**/
|
||||
this.getContainerElement = function() {
|
||||
return this.container;
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getMouseEventTarget() -> DOMElement
|
||||
*
|
||||
*
|
||||
* Returns the element that the mouse events are attached to
|
||||
* @returns {DOMElement}
|
||||
**/
|
||||
this.getMouseEventTarget = function() {
|
||||
return this.content;
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getTextAreaContainer() -> DOMElement
|
||||
*
|
||||
*
|
||||
* Returns the element to which the hidden text area is added.
|
||||
* @returns {DOMElement}
|
||||
**/
|
||||
this.getTextAreaContainer = function() {
|
||||
return this.container;
|
||||
|
|
@ -582,27 +578,27 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getFirstVisibleRow() -> Number
|
||||
*
|
||||
*
|
||||
* [Returns the index of the first visible row.]{: #VirtualRenderer.getFirstVisibleRow}
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getFirstVisibleRow = function() {
|
||||
return this.layerConfig.firstRow;
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getFirstFullyVisibleRow() -> Number
|
||||
*
|
||||
*
|
||||
* Returns the index of the first fully visible row. "Fully" here means that the characters in the row are not truncated; that the top and the bottom of the row are on the screen.
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getFirstFullyVisibleRow = function() {
|
||||
return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getLastFullyVisibleRow() -> Number
|
||||
*
|
||||
*
|
||||
* Returns the index of the last fully visible row. "Fully" here means that the characters in the row are not truncated; that the top and the bottom of the row are on the screen.
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getLastFullyVisibleRow = function() {
|
||||
var flint = Math.floor((this.layerConfig.height + this.layerConfig.offset) / this.layerConfig.lineHeight);
|
||||
|
|
@ -610,9 +606,9 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getLastVisibleRow() -> Number
|
||||
*
|
||||
*
|
||||
* [Returns the index of the last visible row.]{: #VirtualRenderer.getLastVisibleRow}
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getLastVisibleRow = function() {
|
||||
return this.layerConfig.lastRow;
|
||||
|
|
@ -621,10 +617,10 @@ var VirtualRenderer = function(container, theme) {
|
|||
this.$padding = null;
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setPadding(padding)
|
||||
* - padding (Number): A new padding value (in pixels)
|
||||
*
|
||||
* Sets the padding for all the layers.
|
||||
* @param {Number} padding A new padding value (in pixels)
|
||||
*
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setPadding = function(padding) {
|
||||
|
|
@ -638,19 +634,19 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getHScrollBarAlwaysVisible() -> Boolean
|
||||
*
|
||||
*
|
||||
* Returns whether the horizontal scrollbar is set to be always visible.
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.getHScrollBarAlwaysVisible = function() {
|
||||
return this.$horizScrollAlwaysVisible;
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setHScrollBarAlwaysVisible(alwaysVisible)
|
||||
* - alwaysVisible (Boolean): Set to `true` to make the horizontal scroll bar visible
|
||||
*
|
||||
* Identifies whether you want to show the horizontal scrollbar or not.
|
||||
* @param {Boolean} alwaysVisible Set to `true` to make the horizontal scroll bar visible
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setHScrollBarAlwaysVisible = function(alwaysVisible) {
|
||||
if (this.$horizScrollAlwaysVisible != alwaysVisible) {
|
||||
|
|
@ -862,8 +858,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.updateFrontMarkers()
|
||||
*
|
||||
*
|
||||
* Schedules an update to all the front markers in the document.
|
||||
**/
|
||||
this.updateFrontMarkers = function() {
|
||||
|
|
@ -872,8 +867,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.updateBackMarkers()
|
||||
*
|
||||
*
|
||||
* Schedules an update to all the back markers in the document.
|
||||
**/
|
||||
this.updateBackMarkers = function() {
|
||||
|
|
@ -881,27 +875,25 @@ var VirtualRenderer = function(container, theme) {
|
|||
this.$loop.schedule(this.CHANGE_MARKER_BACK);
|
||||
};
|
||||
|
||||
/** deprecated
|
||||
* VirtualRenderer.addGutterDecoration(row, className)
|
||||
*
|
||||
/**
|
||||
*
|
||||
* Deprecated; (moved to [[EditSession]])
|
||||
* @deprecated
|
||||
**/
|
||||
this.addGutterDecoration = function(row, className){
|
||||
this.$gutterLayer.addGutterDecoration(row, className);
|
||||
};
|
||||
|
||||
/** deprecated
|
||||
* VirtualRenderer.removeGutterDecoration(row, className)-> Void
|
||||
*
|
||||
/**
|
||||
* Deprecated; (moved to [[EditSession]])
|
||||
* @deprecated
|
||||
**/
|
||||
this.removeGutterDecoration = function(row, className){
|
||||
this.$gutterLayer.removeGutterDecoration(row, className);
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.updateBreakpoints()
|
||||
*
|
||||
*
|
||||
* Redraw breakpoints.
|
||||
**/
|
||||
this.updateBreakpoints = function(rows) {
|
||||
|
|
@ -909,10 +901,11 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setAnnotations(annotations)
|
||||
* - annotations (Array): An array containing annotations
|
||||
*
|
||||
*
|
||||
* Sets annotations for the gutter.
|
||||
* @param {Array} annotations An array containing annotations
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setAnnotations = function(annotations) {
|
||||
this.$gutterLayer.setAnnotations(annotations);
|
||||
|
|
@ -920,8 +913,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.updateCursor()
|
||||
*
|
||||
*
|
||||
* Updates the cursor icon.
|
||||
**/
|
||||
this.updateCursor = function() {
|
||||
|
|
@ -929,8 +921,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.hideCursor()
|
||||
*
|
||||
*
|
||||
* Hides the cursor icon.
|
||||
**/
|
||||
this.hideCursor = function() {
|
||||
|
|
@ -938,8 +929,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.showCursor()
|
||||
*
|
||||
*
|
||||
* Shows the cursor icon.
|
||||
**/
|
||||
this.showCursor = function() {
|
||||
|
|
@ -953,8 +943,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.scrollCursorIntoView(cursor, offset)
|
||||
*
|
||||
*
|
||||
* Scrolls the cursor into the first visibile area of the editor
|
||||
**/
|
||||
this.scrollCursorIntoView = function(cursor, offset) {
|
||||
|
|
@ -988,47 +977,48 @@ var VirtualRenderer = function(container, theme) {
|
|||
}
|
||||
};
|
||||
|
||||
/** related to: EditSession.getScrollTop
|
||||
* VirtualRenderer.getScrollTop() -> Number
|
||||
*
|
||||
/**
|
||||
* {:EditSession.getScrollTop}
|
||||
* @related EditSession.getScrollTop
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getScrollTop = function() {
|
||||
return this.session.getScrollTop();
|
||||
};
|
||||
|
||||
/** related to: EditSession.getScrollLeft
|
||||
* VirtualRenderer.getScrollLeft() -> Number
|
||||
*
|
||||
/**
|
||||
* {:EditSession.getScrollLeft}
|
||||
* @related EditSession.getScrollLeft
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getScrollLeft = function() {
|
||||
return this.session.getScrollLeft();
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getScrollTopRow() -> Number
|
||||
*
|
||||
*
|
||||
* Returns the first visible row, regardless of whether it's fully visible or not.
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getScrollTopRow = function() {
|
||||
return this.scrollTop / this.lineHeight;
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getScrollBottomRow() -> Number
|
||||
*
|
||||
*
|
||||
* Returns the last visible row, regardless of whether it's fully visible or not.
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.getScrollBottomRow = function() {
|
||||
return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);
|
||||
};
|
||||
|
||||
/** related to: EditSession.setScrollTop
|
||||
* VirtualRenderer.scrollToRow(row)
|
||||
* - row (Number): A row id
|
||||
/**
|
||||
* Gracefully scrolls from the top of the editor to the row indicated.
|
||||
* @param {Number} row A row id
|
||||
*
|
||||
* Gracefully scrolls the top of the editor to the row indicated.
|
||||
*
|
||||
* @related EditSession.setScrollTop
|
||||
**/
|
||||
this.scrollToRow = function(row) {
|
||||
this.session.setScrollTop(row * this.lineHeight);
|
||||
|
|
@ -1063,13 +1053,13 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.scrollToLine(line, center, animate, callback)
|
||||
* - line (Number): A line number
|
||||
* - center (Boolean): If `true`, centers the editor the to indicated line
|
||||
* - animate (Boolean): If `true` animates scrolling
|
||||
* - callback (Function): Function to be called after the animation has finished
|
||||
*
|
||||
* Gracefully scrolls the editor to the row indicated.
|
||||
* @param {Number} line A line number
|
||||
* @param {Boolean} center If `true`, centers the editor the to indicated line
|
||||
* @param {Boolean} animate If `true` animates scrolling
|
||||
* @param {Function} callback Function to be called after the animation has finished
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.scrollToLine = function(line, center, animate, callback) {
|
||||
var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0});
|
||||
|
|
@ -1113,11 +1103,11 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.scrollToY(scrollTop) -> Number
|
||||
* - scrollTop (Number): The position to scroll to
|
||||
*
|
||||
* Scrolls the editor to the y pixel indicated.
|
||||
* @param {Number} scrollTop The position to scroll to
|
||||
*
|
||||
*
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.scrollToY = function(scrollTop) {
|
||||
// after calling scrollBar.setScrollTop
|
||||
|
|
@ -1129,11 +1119,11 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.scrollToX(scrollLeft) -> Number
|
||||
* - scrollLeft (Number): The position to scroll to
|
||||
*
|
||||
* Scrolls the editor to the x pixel indicated.
|
||||
* Scrolls the editor across the x-axis to the pixel indicated.
|
||||
* @param {Number} scrollLeft The position to scroll to
|
||||
*
|
||||
*
|
||||
* @returns {Number}
|
||||
**/
|
||||
this.scrollToX = function(scrollLeft) {
|
||||
if (scrollLeft < 0)
|
||||
|
|
@ -1145,11 +1135,11 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.scrollBy(deltaX, deltaY)
|
||||
* - deltaX (Number): The x value to scroll by
|
||||
* - deltaY (Number): The y value to scroll by
|
||||
*
|
||||
* Scrolls the editor across both x- and y-axes.
|
||||
* @param {Number} deltaX The x value to scroll by
|
||||
* @param {Number} deltaY The y value to scroll by
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.scrollBy = function(deltaX, deltaY) {
|
||||
deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);
|
||||
|
|
@ -1157,11 +1147,12 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.isScrollableBy(deltaX, deltaY) -> Boolean
|
||||
* - deltaX (Number): The x value to scroll by
|
||||
* - deltaY (Number): The y value to scroll by
|
||||
*
|
||||
* Returns `true` if you can still scroll by either parameter; in other words, you haven't reached the end of the file or line.
|
||||
* @param {Number} deltaX The x value to scroll by
|
||||
* @param {Number} deltaY The y value to scroll by
|
||||
*
|
||||
*
|
||||
* @returns {Boolean}
|
||||
**/
|
||||
this.isScrollableBy = function(deltaX, deltaY) {
|
||||
if (deltaY < 0 && this.session.getScrollTop() > 0)
|
||||
|
|
@ -1195,13 +1186,13 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.textToScreenCoordinates(row, column) -> Object
|
||||
* - row (Number): The document row position
|
||||
* - column (Number): The document column position
|
||||
*
|
||||
* Returns an object containing the `pageX` and `pageY` coordinates of the document position.
|
||||
* @param {Number} row The document row position
|
||||
* @param {Number} column The document column position
|
||||
*
|
||||
*
|
||||
*
|
||||
* @returns {Object}
|
||||
**/
|
||||
this.textToScreenCoordinates = function(row, column) {
|
||||
var canvasPos = this.scroller.getBoundingClientRect();
|
||||
|
|
@ -1217,8 +1208,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.visualizeFocus()
|
||||
*
|
||||
*
|
||||
* Focuses the current container.
|
||||
**/
|
||||
this.visualizeFocus = function() {
|
||||
|
|
@ -1226,18 +1216,17 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.visualizeBlur()
|
||||
*
|
||||
*
|
||||
* Blurs the current container.
|
||||
**/
|
||||
this.visualizeBlur = function() {
|
||||
dom.removeCssClass(this.container, "ace_focus");
|
||||
};
|
||||
|
||||
/** internal, hide
|
||||
* VirtualRenderer.showComposition(position)
|
||||
* - position (Number):
|
||||
/**
|
||||
* @param {Number} position
|
||||
*
|
||||
* @private
|
||||
**/
|
||||
this.showComposition = function(position) {
|
||||
if (!this.$composition)
|
||||
|
|
@ -1253,8 +1242,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setCompositionText(text)
|
||||
* - text (String): A string of text to use
|
||||
* @param {String} text A string of text to use
|
||||
*
|
||||
* Sets the inner text of the current composition to `text`.
|
||||
**/
|
||||
|
|
@ -1263,8 +1251,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.hideComposition()
|
||||
*
|
||||
*
|
||||
* Hides the current composition.
|
||||
**/
|
||||
this.hideComposition = function() {
|
||||
|
|
@ -1285,10 +1272,10 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setTheme(theme)
|
||||
* - theme (String): The path to a theme
|
||||
*
|
||||
* [Sets a new theme for the editor. `theme` should exist, and be a directory path, like `ace/theme/textmate`.]{: #VirtualRenderer.setTheme}
|
||||
* @param {String} theme The path to a theme
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setTheme = function(theme) {
|
||||
var _self = this;
|
||||
|
|
@ -1346,9 +1333,8 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.getTheme() -> String
|
||||
*
|
||||
* [Returns the path of the current theme.]{: #VirtualRenderer.getTheme}
|
||||
* @returns {String}
|
||||
**/
|
||||
this.getTheme = function() {
|
||||
return this.$themeValue;
|
||||
|
|
@ -1359,28 +1345,27 @@ var VirtualRenderer = function(container, theme) {
|
|||
// a certain mode that editor is in.
|
||||
|
||||
/**
|
||||
* VirtualRenderer.setStyle(style)
|
||||
* - style (String): A class name
|
||||
*
|
||||
* [Adds a new class, `style`, to the editor.]{: #VirtualRenderer.setStyle}
|
||||
* @param {String} style A class name
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.setStyle = function setStyle(style, include) {
|
||||
dom.setCssClass(this.container, style, include != false);
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.unsetStyle(style)
|
||||
* - style (String): A class name
|
||||
*
|
||||
* [Removes the class `style` from the editor.]{: #VirtualRenderer.unsetStyle}
|
||||
* @param {String} style A class name
|
||||
*
|
||||
*
|
||||
**/
|
||||
this.unsetStyle = function unsetStyle(style) {
|
||||
dom.removeCssClass(this.container, style);
|
||||
};
|
||||
|
||||
/**
|
||||
* VirtualRenderer.destroy()
|
||||
*
|
||||
*
|
||||
* Destroys the text and cursor layers for this renderer.
|
||||
**/
|
||||
this.destroy = function() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue