8

では、取引は次のとおりです。

  • エースエディターを使用しています
  • エディターが統合されているアプリは、Objective-C/Cocoa で書かれています
  • オートコンプリートが必要です (特定のキーワード セットに対して)

さて、ここにキャッチがあります:

  • オートコンプリートがまだネイティブにサポートされていないことは知っています
  • 他の人によるいくつかの試み(例:Codiad IDEGherkinAlloy-UI)、いくつかはJquery UI Autocompleteを利用していることを知っていますが、これを既存の Ace セットアップにどのように適応させることができるかはまだわかりません
  • JS 指向のソリューションを使用するべきか、それとも単に Objective-C/Cocoa を使用するべきかはまだわかりません。

どんな助けでも大歓迎です。

4

3 に答える 3

19

オートコンプリートは ace エディターで実現できます。

コード :

    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 ファイル形式:

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

参照/デモ:

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

于 2013-12-04T08:20:42.573 に答える
5

現在、Ace に Live Auto Completion を追加するには: HTML に ace/ext-language_tools.js を含めます。。call はまだうまく機能しないので、そのために ctrl-space または alt-space を入力する必要があるかもしれませんが、関数の書き込みなどの標準的な構文が表示されるようになりました。それで:

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

ace.require("ace/ext/language_tools");
editor.setOptions({
    enableBasicAutocompletion: true,
    enableSnippets: true,
    enableLiveAutocompletion: true
});
于 2015-02-23T15:36:28.360 に答える
1

オートコンプリートの難しい部分は、後は簡単にできるキーワードを見つけることです。

  1. ポップアップと補完を表示する listView が必要な場合は、Cocoa ベースのポップアップを使用することをお勧めします。
  2. いくつかのフィルタリング機能、単純なstartsWithチェックで十分ですが、崇高のようなより良いフレックスマッチを使用できます
  3. 選択した補完を挿入するための editor.session.replace への簡単な呼び出し

2-3については、オートコンプリートのネイティブ サポートを取得するための作業があるため、特定のユースケースについてhttps://github.com/ajaxorg/ace/issues/110でコメントする必要があります。

于 2013-02-22T21:23:42.067 に答える