Add auto magic complete (complete while typing)

This commit is contained in:
Aaron O'Mullan 2014-01-27 18:21:42 +01:00
commit 2bf673c41d

View file

@ -34,6 +34,7 @@ define(function(require, exports, module) {
var snippetManager = require("../snippets").snippetManager;
var Autocomplete = require("../autocomplete").Autocomplete;
var config = require("../config");
var util = require("../autocomplete/util");
var textCompleter = require("../autocomplete/text_completer");
var keyWordCompleter = {
@ -114,6 +115,30 @@ var loadSnippetFile = function(id) {
});
};
var onChangeAutocomplete = function(e, editor) {
var session = editor.getSession();
var pos = editor.getCursorPosition();
var line = session.getLine(pos.row);
// Append added text to the line
if(e.data.action === 'insertText') {
line += e.data.text;
pos.column += e.data.text.length;
}
// The prefix to autocomplete for
var prefix = util.retrievePrecedingIdentifier(line, pos.column);
// Only autocomplete if there's a prefix that can be matched
if(prefix !== '') {
Autocomplete.startCommand.exec(editor);
} else if(editor.completer && editor.completer.activated) {
// When the prefix is empty
// close the autocomplete dialog
editor.completer.detach();
}
};
var Editor = require("../editor").Editor;
require("../config").defineOptions(Editor.prototype, "editor", {
enableBasicAutocompletion: {
@ -121,7 +146,11 @@ require("../config").defineOptions(Editor.prototype, "editor", {
if (val) {
this.completers = completers;
this.commands.addCommand(Autocomplete.startCommand);
// On each change automatically trigger the autocomplete
this.on('change', onChangeAutocomplete);
} else {
this.removeListener('change', onChangeAutocomplete);
this.commands.removeCommand(Autocomplete.startCommand);
}
},