Cleanup autocomplete.js

Consistently use .bind(this) instead of that = this
This commit is contained in:
Aaron O'Mullan 2014-02-08 00:32:16 +01:00
commit c52278a64e

View file

@ -47,7 +47,7 @@ var Autocomplete = function() {
this.changeListener = this.changeListener.bind(this); this.changeListener = this.changeListener.bind(this);
this.mousedownListener = this.mousedownListener.bind(this); this.mousedownListener = this.mousedownListener.bind(this);
this.mousewheelListener = this.mousewheelListener.bind(this); this.mousewheelListener = this.mousewheelListener.bind(this);
this.changeTimer = lang.delayedCall(function() { this.changeTimer = lang.delayedCall(function() {
this.updateCompletions(true); this.updateCompletions(true);
}.bind(this)) }.bind(this))
@ -77,10 +77,10 @@ var Autocomplete = function() {
this.popup.setFontSize(editor.getFontSize()); this.popup.setFontSize(editor.getFontSize());
var lineHeight = renderer.layerConfig.lineHeight; var lineHeight = renderer.layerConfig.lineHeight;
var pos = renderer.$cursorLayer.getPixelPosition(this.base, true); var pos = renderer.$cursorLayer.getPixelPosition(this.base, true);
pos.left -= this.popup.getTextLeftOffset(); pos.left -= this.popup.getTextLeftOffset();
var rect = editor.container.getBoundingClientRect(); var rect = editor.container.getBoundingClientRect();
pos.top += rect.top - renderer.layerConfig.offset; pos.top += rect.top - renderer.layerConfig.offset;
pos.left += rect.left - editor.renderer.scrollLeft; pos.left += rect.left - editor.renderer.scrollLeft;
@ -101,7 +101,7 @@ var Autocomplete = function() {
if (this.popup && this.popup.isOpen) { if (this.popup && this.popup.isOpen) {
this.gatherCompletionsId = this.gatherCompletionsId + 1; this.gatherCompletionsId = this.gatherCompletionsId + 1;
} }
if (this.popup) if (this.popup)
this.popup.hide(); this.popup.hide();
@ -190,10 +190,10 @@ var Autocomplete = function() {
this.gatherCompletions = function(editor, callback) { this.gatherCompletions = function(editor, callback) {
var session = editor.getSession(); var session = editor.getSession();
var pos = editor.getCursorPosition(); var pos = editor.getCursorPosition();
var line = session.getLine(pos.row); var line = session.getLine(pos.row);
var prefix = util.retrievePrecedingIdentifier(line, pos.column); var prefix = util.retrievePrecedingIdentifier(line, pos.column);
this.base = editor.getCursorPosition(); this.base = editor.getCursorPosition();
this.base.column -= prefix.length; this.base.column -= prefix.length;
@ -216,7 +216,7 @@ var Autocomplete = function() {
this.showPopup = function(editor) { this.showPopup = function(editor) {
if (this.editor) if (this.editor)
this.detach(); this.detach();
this.activated = true; this.activated = true;
this.editor = editor; this.editor = editor;
@ -231,12 +231,11 @@ var Autocomplete = function() {
editor.on("blur", this.blurListener); editor.on("blur", this.blurListener);
editor.on("mousedown", this.mousedownListener); editor.on("mousedown", this.mousedownListener);
editor.on("mousewheel", this.mousewheelListener); editor.on("mousewheel", this.mousewheelListener);
this.updateCompletions(); this.updateCompletions();
}; };
this.updateCompletions = function(keepPopupPosition) { this.updateCompletions = function(keepPopupPosition) {
var that = this;
if (keepPopupPosition && this.base && this.completions) { if (keepPopupPosition && this.base && this.completions) {
var pos = this.editor.getCursorPosition(); var pos = this.editor.getCursorPosition();
var prefix = this.editor.session.getTextRange({start: this.base, end: pos}); var prefix = this.editor.session.getTextRange({start: this.base, end: pos});
@ -262,14 +261,14 @@ var Autocomplete = function() {
}.bind(this); }.bind(this);
// Calcul prefix // Calcul prefix
var session = that.editor.getSession(); var session = this.editor.getSession();
var pos = that.editor.getCursorPosition(); var pos = this.editor.getCursorPosition();
var line = session.getLine(pos.row); var line = session.getLine(pos.row);
var prefix = util.retrievePrecedingIdentifier(line, pos.column); var prefix = util.retrievePrecedingIdentifier(line, pos.column);
// Results matches // Results matches
var matches = results && results.matches; var matches = results && results.matches;
// TODO reenable this when we have proper change tracking // TODO reenable this when we have proper change tracking
// if (matches.length == 1) // if (matches.length == 1)
// return this.insertMatch(matches[0]); // return this.insertMatch(matches[0]);
@ -343,16 +342,16 @@ var FilteredList = function(array, filterText, mutateData) {
matches = matches.sort(function(a, b) { matches = matches.sort(function(a, b) {
return b.exactMatch - a.exactMatch || b.score - a.score; return b.exactMatch - a.exactMatch || b.score - a.score;
}); });
// make unique // make unique
var prev = null; var prev = null;
matches = matches.filter(function(item){ matches = matches.filter(function(item){
var caption = item.value || item.caption || item.snippet; var caption = item.value || item.caption || item.snippet;
if (caption === prev) return false; if (caption === prev) return false;
prev = caption; prev = caption;
return true; return true;
}); });
this.filtered = matches; this.filtered = matches;
}; };
this.filterCompletions = function(items, needle) { this.filterCompletions = function(items, needle) {