3

構造体を操作するときに有効なオートコンプリートオプションのみをリストするようにemacsを取得しようとしています。たとえば、次の構造体を考えてみましょう。

typedef struct      
{  
    int length, width, area;  
} SquareType;

SquareType *square;

と入力すると、有効な構造体メンバーのみsquare->を表示するメニューがポップアップ表示されます。

現在、.emacs ファイルに次のように記述している場合、.emacs の後に別の文字を入力した場合にのみポップアップ メニューが表示されます->。また、現在のメニューには、構造体の有効なメンバーではない補完オプションがリストされています。

(require 'yasnippet)  
(require 'auto-complete-config)  
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")  
(ac-config-default)  
4

1 に答える 1

2

必要なのは CEDET/semantic のようです。新しいバージョンの Emacs にはすでに組み込まれています。コード分​​析を行うため、構造体の有効なメンバーが表示されます。

  1. セマンティックを有効にする(semantic-mode 1)
  2. 呼び出しsemantic-analyze-possible-completionsて完了を表示する
  3. emacs -qこれを Emacs 24.3.1でテストしました - 動作します。

他にもsemantic-ia-complete-symbol、興味のある機能がたくさんあります。

auto-complete-mode機能はありますがac-source-semantic、あなたが求めていることを実行しますが、お勧めしません。それに関する1つの問題は、それがac-source-semantic多くのソースの1つにすぎないため、ケースの3つよりも多くの候補が得られることです. 2 つ目の問題は、セマンティックが少し遅くなることです。特に、auto-complete キー ストロークのたびにポーリングし続けると、応答性が大幅に低下します。

私は自分の基本だけを保持していますac-sources

(ac-source-abbrev ac-source-dictionary ac-source-words-in-same-mode-buffers)

そして、セマンティック補完が必要な場合は、それを呼び出してC-o 有効な候補のみを取得します。

セマンティックに追加したリポジトリも githubで管理しています。 試してみたい場合は、完了関数が呼び出されmoo-completeます。バインドしてC-o試してみてください。

于 2013-07-20T16:08:27.847 に答える