scrollpastend - code editor javascript




Autocompletion pour Ace Editor (2)

AutoCompletion peut être réalisé dans l'éditeur Ace.

Code:

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

Format de fichier Json:

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

Référence / Démo:

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

OK, alors voici l'affaire:

  • J'utilise Ace Editor
  • L'application dans laquelle l'éditeur est intégré est écrite Objective-C / Cocoa
  • J'ai besoin de l'auto-complétion (pour un ensemble donné de mots-clés)

Maintenant, voici la capture:

  • Je sais que AutoCompletion n'est pas encore supporté nativement
  • Je connais des tentatives de la part d'autres utilisateurs ( Codiad IDE , Gherkin , Alloy-UI , etc.), certains utilisant Jquery UI Autocomplete - mais je n'arrive toujours pas à comprendre comment cela pourrait être adapté à une configuration d'As existante
  • Je ne suis toujours pas sûr si je devrais aller pour une solution orientée JS ou simplement utiliser Objective-C / Cocoa pour cela

Toute aide serait plus qu'appréciée.


Pour ajouter Live Auto Completion dans Ace de nos jours: Dans votre HTML, incluez ace / ext-language_tools.js. Le . l'appel ne fonctionne pas encore correctement, donc vous devrez peut-être entrer ctrl-space ou alt-space pour cela, mais la syntaxe standard, comme la fonction d'écriture, va maintenant s'afficher. Alors:

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

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




ace-editor