2014-11-18 23 views
12

Sto utilizzando l'editor di ace e ho attivato basicautocompletion e sto recuperando i dati da un altro server per ottenere i suggerimenti. Tutto funziona bene, ma voglio rimuovere i suggerimenti locali dalla casella dei suggerimenti.Completamento automatico dell'editor ACE rimuovere le variabili locali

Ecco il mio codice rilevante:

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); 

Ecco come sembra:

Example

Ho provato questa linea per rimuovere tutti hanno completato prima di aggiungere il mio qTag completer, ma che non rimuove le variabili locali

langTools.completers = []; 

Qualsiasi input sarebbe apprezzato, sto cercando di evitare di dover modificare ace/ext/language_tools.js se possibile, ma a questo punto sono aperto anche a quell'opzione.

risposta

13

Il trucco è quello di chiamare langTools.setCompleters([])prima chiamare editor.setOptions({enableBasicAutocompletion: true});. Potrebbe essere una buona idea impostare questa opzione esplicita su false prima di impostare o aggiungere i Completamenti. Non è necessario modificare il codice sorgente di language_tools.

Esempio:

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

Sì, questo ha funzionato anche per me prima. Grazie –

5

è possibile utilizzare langTools.setCompleters

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

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

+0

Ho provato questo, ma quello che mi serve è solo qtags, senza il resto di loro. In ogni caso, si sta ancora utilizzando la soluzione alternativa rimuovendo tutto direttamente da asso/ext/language_tools e aggiungendo in seguito solo qtags nel mio javascript come completamento. –

+1

solo qtags è ancora più semplice chiamare 'langTools.setCompleters ([qtags])', nota che hai bisogno di v1.1.8 perché funzioni. –

Problemi correlati