feature #2558 added functions to get all attributes at the current or an abritrary position
This commit is contained in:
parent
a67664055d
commit
e8d85c1173
1 changed files with 51 additions and 1 deletions
|
@ -98,7 +98,7 @@ AttributeManager.prototype = _(AttributeManager.prototype).extend({
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Gets all attributes on a line
|
Gets all attributes on a line
|
||||||
@param lineNum: the number of the line to set the attribute for
|
@param lineNum: the number of the line to get the attribute for
|
||||||
*/
|
*/
|
||||||
getAttributesOnLine: function(lineNum){
|
getAttributesOnLine: function(lineNum){
|
||||||
// get attributes of first char of line
|
// get attributes of first char of line
|
||||||
|
@ -122,6 +122,56 @@ AttributeManager.prototype = _(AttributeManager.prototype).extend({
|
||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/*
|
||||||
|
Gets all attributes at a position containing line number and column
|
||||||
|
@param lineNumber starting with zero
|
||||||
|
@param column starting with zero
|
||||||
|
returns a list of attributes in the format
|
||||||
|
[ ["key","value"], ["key","value"], ... ]
|
||||||
|
*/
|
||||||
|
getAttributesOnPosition: function(lineNumber, column){
|
||||||
|
// get all attributes of the line
|
||||||
|
var aline = this.rep.alines[lineNumber];
|
||||||
|
|
||||||
|
if (!aline) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
// iterate through all operations of a line
|
||||||
|
var opIter = Changeset.opIterator(aline);
|
||||||
|
|
||||||
|
// we need to sum up how much characters each operations take until the wanted position
|
||||||
|
var currentPointer = 0;
|
||||||
|
var attributes = [];
|
||||||
|
var currentOperation;
|
||||||
|
|
||||||
|
while (opIter.hasNext()) {
|
||||||
|
currentOperation = opIter.next();
|
||||||
|
currentPointer = currentPointer + currentOperation.chars;
|
||||||
|
|
||||||
|
if (currentPointer > column) {
|
||||||
|
// we got the operation of the wanted position, now collect all its attributes
|
||||||
|
Changeset.eachAttribNumber(currentOperation.attribs, function (n) {
|
||||||
|
attributes.push([
|
||||||
|
this.rep.apool.getAttribKey(n),
|
||||||
|
this.rep.apool.getAttribValue(n)
|
||||||
|
]);
|
||||||
|
}.bind(this));
|
||||||
|
|
||||||
|
// skip the loop
|
||||||
|
return attributes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return attributes;
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/*
|
||||||
|
Gets all attributes at caret position
|
||||||
|
*/
|
||||||
|
getAttributesOnCaret: function(){
|
||||||
|
return this.getAttributesOnPosition(this.rep.selStart[0], this.rep.selStart[1]);
|
||||||
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Sets a specified attribute on a line
|
Sets a specified attribute on a line
|
||||||
@param lineNum: the number of the line to set the attribute for
|
@param lineNum: the number of the line to set the attribute for
|
||||||
|
|
Loading…
Reference in a new issue