簡體   English   中英

在emacs中設置自動完成模式,以便與C結構一起使用

[英]Set up autocomplete mode in emacs to work well with C structs

我正在努力讓emacs在使用結構時只列出有效的自動完成選項。 例如,請考慮以下結構:

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

SquareType *square;

當我輸入square-> ,我想要彈出一個菜單, 顯示有效的struct成員。

目前,在我的.emacs文件中有以下內容,只有在->之后輸入另一個字符時才會顯示一個彈出菜單。 此外,當前菜單列出了完成選項,這些選項不是我的struct的有效成員。

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

看來你需要的是CEDET /語義。 它已經內置了新的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 ,但它可以滿足您的需求,但我不推薦它。 它的一個問題是, ac-source-semantic只是眾多來源中的一個,所以你的情況下你會得到比3更多的候選人。 第二個問題是語義有點慢,特別是當auto-complete在每次擊鍵后繼續輪詢它時,你會真正感受到響應能力的下降。

我只保留了我ac-sources的基礎知識:

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

當我需要語義完成時,我只是用Co調用它來獲得有效的候選者。

我還維護了一個存儲庫,我在github上添加了語義。如果你想嘗試它,完成函數稱為moo-complete 只需將它綁定到Co並嘗試一下即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM