2013-02-22 20 views
7

OK, quindi ecco l'affare:Completamento automatico per Ace Editor

  • sto usando Ace Editor
  • L'applicazione l'editor è integrato, è scritto Objective-C/Cocoa
  • ho bisogno completamento automatico (per un determinato insieme di parole chiave)

Ora, qui sta il trucco:

  • so completamento automatico non è ancora supportato nativamente
  • So di alcuni tentativi da altri (ad esempio Codiad IDE, Gherkin, Alloy-UI), un po 'facendo uso di Jquery UI Autocomplete - ma ancora non riesco a capire come questo potrebbe essere adattato per una configurazione asso esistente
  • Non sono ancora sicuro se devo andare per una soluzione di JS-oriented o semplicemente utilizzare Objective-C/Cocoa per quello

Qualsiasi aiuto sarebbe più che apprezzato.

+0

possibile duplicato di [Completamento automatico in ACE Editor] (http://stackoverflow.com/questions/13545433/autocompletion-in-ace-editor) – endorama

risposta

17

completamento automatico può essere raggiunto in editor di asso ..

Codice:

var editor = ace.edit('editor'); 
    editor.setTheme("ace/theme/eclipse"); 
    editor.getSession().setMode("ace/mode/java"); 
    editor.setShowInvisibles(true); 
    editor.setDisplayIndentGuides(true); 
    editor.getSession().setUseWrapMode(true);  
    var jsonUrl = "JSON/Components/proce.json"; 
    //the url where the json file with the suggestions is present 
    var langTools = ace.require("ace/ext/language_tools"); 
    editor.setOptions({enableBasicAutocompletion: true}); 
    var rhymeCompleter = { 
     getCompletions: function(editor, session, pos, prefix, callback) { 
      if (prefix.length === 0) { callback(null, []); return } 
      $.getJSON(jsonUrl, function(wordList) { 
       callback(null, wordList.map(function(ea) {   
        return {name: ea.word, value: ea.word, meta: "optional text"} 
       })); 
      }) 
     } 
    } 

    langTools.addCompleter(rhymeCompleter); 

JSON formato di file:

[ {"word":"hello"}, 
    {"word":"good morning"}, 
    {"word":"suggestions"}, 
    {"word":"auto suggest"}, 
    {"word":"try this"}] 

Riferimento/Demo:

http://plnkr.co/edit/6MVntVmXYUbjR0DI82Cr?p=preview

0

La parte difficile del completamento automatico è capire le parole chiave, il resto è facile da fare.

  1. è necessario un popup e listView per visualizzare i completamenti, potrebbe essere essere meglio utilizzare popup basato su Cocoa.
  2. qualche funzione di filtro, semplice controllo startsWith farà, ma è possibile utilizzare più bello partita flex come sublime
  3. chiamata banale editor.session.replace per inserire completamento selezionato

per 2-3 voi dovrebbe commentare allo https://github.com/ajaxorg/ace/issues/110 sul tuo specifico caso d'uso poiché c'è un lavoro per ottenere il supporto nativo per AutoCompletion.

2

Per aggiungere diretta Auto Completamento di Ace al giorno d'oggi: nel codice HTML comprendono ACE/ext-language_tools.js. Il. la chiamata non funziona ancora bene, quindi potresti dover inserire ctrl-space o alt-space per quello, ma ora verranno mostrati argomenti di sintassi standard come la funzione di scrittura. Poi:

var editor = ace.edit("editor"); 

ace.require("ace/ext/language_tools"); 
editor.setOptions({ 
    enableBasicAutocompletion: true, 
    enableSnippets: true, 
    enableLiveAutocompletion: true 
}); 
+0

non ha funzionato per me quando incorporato in un involucro dell'applicazione. Ho dovuto usare 'editor.setOptions (" enableBasicAutocompletion ", true);'. Penso che sia un bug nell'interfaccia proxy wrapper dell'applicazione e non in Ace. –

Problemi correlati