[英]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版本。 它進行代碼分析,因此它將向您顯示結構的有效成員。
(semantic-mode 1)
semantic-analyze-possible-completions
來顯示完成 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.