Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Bug 527206 - Merge LSP support into master - move event range into te…
…xtModel and provide it for onChanged as well
  • Loading branch information
mrennie committed Nov 23, 2017
1 parent 4fb6205 commit b47c70b
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 12 deletions.
Expand Up @@ -42,6 +42,28 @@ define("orion/editor/textModel", ['orion/editor/eventTarget', 'orion/regex', 'or
this.setLineDelimiter(lineDelimiter);
}

/**
* @name setRange
* @description Sets the range attributes on the modelChang* events for VS code LSP compatibility
* @param {TextModel} textModel The backing text model
* @param {?} modelChangingEvent The event object to modify
* @since 17.0
*/
function setRange(textModel, modelChangingEvent) {
var sl = textModel.getLineAtOffset(modelChangingEvent.start),
el = textModel.getLineAtOffset(modelChangingEvent.start + modelChangingEvent.removedCharCount);
modelChangingEvent.range = {
start: {
line: sl,
character: modelChangingEvent.start - textModel.getLineStart(sl)
},
end: {
line: el,
character: modelChangingEvent.start + modelChangingEvent.removedCharCount - textModel.getLineStart(el)
}
};
}

TextModel.prototype = /** @lends orion.editor.TextModel.prototype */ {
/**
* Destroys this text model.
Expand Down Expand Up @@ -431,6 +453,7 @@ define("orion/editor/textModel", ['orion/editor/eventTarget', 'orion/regex', 'or
* @param {orion.editor.ModelChangingEvent} modelChangingEvent the changing event
*/
onChanging: function(modelChangingEvent) {
setRange(this, modelChangingEvent);
return this.dispatchEvent(modelChangingEvent);
},
/**
Expand All @@ -448,6 +471,7 @@ define("orion/editor/textModel", ['orion/editor/eventTarget', 'orion/regex', 'or
* @param {orion.editor.ModelChangedEvent} modelChangedEvent the changed event
*/
onChanged: function(modelChangedEvent) {
setRange(this, modelChangedEvent);
return this.dispatchEvent(modelChangedEvent);
},
/**
Expand Down
Expand Up @@ -2738,18 +2738,6 @@ define("orion/editor/textView", [
* @param {orion.editor.ModelChangingEvent} modelChangingEvent the event
*/
onModelChanging: function(modelChangingEvent) {
var sl = this._model.getLineAtOffset(modelChangingEvent.start),
el = this.getLineAtOffset(modelChangingEvent.start + modelChangingEvent.removedCharCount);
modelChangingEvent.range = {
start: {
line: sl,
character: modelChangingEvent.start - this._model.getLineStart(sl)
},
end: {
line: el,
character: modelChangingEvent.start + modelChangingEvent.removedCharCount - this._model.getLineStart(el)
}
};
return this.dispatchEvent(modelChangingEvent);
},
/**
Expand Down

0 comments on commit b47c70b

Please sign in to comment.