2014-11-18 1 views
12

Ich benutze Ace-Editor und ich habe grundlegende Autovervollständigung aktiviert, und ich ziehe Daten von einem anderen Server, um die Vorschläge zu erhalten. Alles funktioniert gut, aber ich möchte die lokalen Vorschläge aus dem Vorschlagsfeld entfernen.ACE-Editor Autovervollständigung entfernen lokale Variablen

Hier ist mein entsprechender Code:

var langTools = ace.require("ace/ext/language_tools"); 
var editor = ace.edit("editor"); 

editor.setTheme("ace/theme/xcode"); 
var TextMode = require("ace/mode/text").Mode; 
editor.getSession().setUseWrapMode(true); 

editor.setOptions({ 
    enableBasicAutocompletion: true, 
}); 

var qtags = { 
getCompletions: function(editor, session, pos, prefix, callback) { 
    $.getJSON(jsonURL, 
    function(tagList) { 
     callback(null, tagList.map(function(qtag) { 
     return {name: qtag.name, value: "#"+qtag.name+"() ", meta: "qtag"} 
     })); 
    }) 
    } 
} 
langTools.addCompleter(qtags); 

Hier ist, wie es aussieht:

Example

ich diese Linie habe versucht, alle Beender zu entfernen, bevor meine qTag completer Zugabe, aber das entfernt die lokalen Variablen nicht

langTools.completers = []; 

Jede Eingabe wäre wünschenswert, ich versuche zu vermeiden, ace/ext/language_tools.js wenn möglich zu modifizieren, aber an dieser Stelle bin ich sogar für diese Option offen.

Antwort

13

Der Trick zu nennen, ist langTools.setCompleters([])voreditor.setOptions({enableBasicAutocompletion: true}); Aufruf verwenden. Vielleicht ist es eine gute Idee, diese Option explizit auf false zu setzen, bevor Sie die Completers setzen oder hinzufügen. Der Quellcode der Sprachwerkzeuge muss nicht geändert werden.

Beispiel:

var langTools = ace.require("ace/ext/language_tools"); 
var editor = ace.edit("editor"); 

editor.setTheme("ace/theme/xcode"); 
var TextMode = require("ace/mode/text").Mode; 
editor.getSession().setUseWrapMode(true); 

var qtags = { 
    getCompletions: function(editor, session, pos, prefix, callback) { 
    $.getJSON(jsonURL, 
     function(tagList) { 
     callback(null, tagList.map(function(qtag) { 
      return {name: qtag.name, value: "#"+qtag.name+"() ", meta: "qtag"} 
     })); 
    }) 
    } 
} 

langTools.setCompleters([qtags]); 

editor.setOptions({ 
    enableBasicAutocompletion: true, 
}); 
+0

Ja, das hat auch früher für mich funktioniert. Vielen Dank –

5

können Sie langTools.setCompleters

langTools = require("ace/ext/language_tools") 
langTools.setCompleters([langTools.snippetCompleter, langTools.textCompleter]) 

oder editor.completers = [langTools.snippetCompleter, langTools.textCompleter, qtags]

+0

Ich habe versucht, aber was ich brauche, ist nur qtags, ohne den Rest von ihnen. In jedem Fall, immer noch mit der Umgehungslösung, indem Sie alles direkt aus dem Ass/Ext/Language_Tools entfernen und später nur noch qtags in meinem eigenen Javascript als Completer hinzufügen. –

+1

nur qtags ist noch einfacher Aufruf 'langTools.setCompleters ([qtags])', beachten Sie, dass Sie v1.1.8 dafür benötigen. –