2013-02-08 6 views
5

私はemacsの自動補完モードに非常に興奮しています。しかし、私のコードベースは大きく、時にはタイプして、補完を試みるときに、すべての可能な単語を検索してハングします。それは非常に迷惑です。バックグラウンドで自動補完クエリを実行するにはどうすればよいですか?

バックグラウンドでパラレルプロセスで検索を実行する方法があるので、emacsはユーザーの操作に応答します。クエリが終了した時点でポイントが保持されている場合にのみ、自動補完を提案しますか?

キーボード入力は基本プロセスであり、遅延させることはできません。また、自動補完はマシンリソースの残量として機能します。

答えて

3

emacs-jediは、Pythonの自動補完の場合とまったく同じです。 init propertyを使用してバックグラウンドプロセスに要求を送信し、その結果をどこかに格納することができます。 candidateプロパティでは、格納された結果を処理して自動完了に渡すことができます。ここに、ac-sourceの定義があります。詳細はソースをご覧ください。

(ac-define-source jedi-direct 
    '((candidates . jedi:ac-direct-matches) 
    (prefix . jedi:ac-direct-prefix) 
    (init . jedi:complete-request) 
    (requires . -1))) 

emacs-ipython-notebookも同様の手法を使用していますが、私は、Emacs-ジェダイが読みやすいですね。

+0

私が知ったように、それはPython用です。読み込み文字からユニバーサルオートコンプリートを行うための一般的なメカニズムが必要です。タグなどから。 – Necto

+0

おそらく私の答えは誤解を招いていたでしょう。しかし、あなたは技術を使用することができます(initを使用してリクエストを送信するなど)。バックグラウンドプロセスと通信するには、何らかの種類のRPCを使用する必要があります。 emacs-jediと同じように[EPC](https://github.com/kiwanami/emacs-epc)を使用することも可能です。これは汎用RPCであり、Perl、Python、およびelispの実装を備えています。 – tkf

関連する問題