2014-04-05 66 views
1

有沒有辦法讓輸入「。」後彈出自動完成。或「 - >」?啓用「。」和「 - >」在emacs自動完成

我想這個代碼是

 (add-to-list 'ac-omni-completion-sources 
        (cons "\\." '(ac-source-semantic))) 
     (add-to-list 'ac-omni-completion-sources 
        (cons "->" '(ac-source-semantic))) 

但好像這可能已經過時。

我看到的最接近的是使用奧特亞歷克斯的迴應here

(defun my-c-mode-cedet-hook() 
(local-set-key "." 'semantic-complete-self-insert) 
(local-set-key ">" 'semantic-complete-self-insert)) 
(add-hook 'c-mode-common-hook 'my-c-mode-cedet-hook) 

然而,這總是會彈出另一個框架從語義顯示的建議。如果可能,我希望儘可能使用自動完成的本機彈出窗口,這樣當我嘗試使用「myClass->」引用類的成員函數時,自動完成功能會彈出建議。任何想法,如果這可以完成?

+0

我現在還沒有一個帶有自動完成功能的Emacs來測試,因此需要一定的鹽量。您可以將鍵定義爲「ac-expand」而不是「semantic-complete-self-insert」。 –

+0

@ lilbill39,看起來不像預期的那樣工作。我使用了(全局設置鍵(kbd「。」)'ac-expand),當按「。」時會導致展開。但是,編輯器不會輸入「。」,只會執行ac-expand。 – foboi1122

回答

1

對我的評論有很大的疏漏。我有點不知所措。在具有自動完成功能的Emacs 24.3.1 1.3.1中,我實際上看到了啓用自動完成和語義模式時所需的行爲。也就是說,我一個打字時得到一個自動彈出:

someObj. 
someObj-> 

我說這是一個答案,所以我可以列出一些代碼。如果有幫助,我的自動完成設置的樣子:

(add-to-list 'load-path "<ac-install-dir>") 
(require 'auto-complete-config)` 
(add-to-list 'ac-dictionary-directories "<ac-install-dir>/ac-dict") 
(ac-config-default) 
(defun ac-common-setup() 
    (setq ac-sources (append ac-sources '(ac-source-gtags ac-source-semantic ac-source-semantic-raw)))) 

看來這個變量ac-prefix-definitions支配它們的前綴觸發完井方式。我看到的值是:

((symbol . ac-prefix-symbol) 
(file . ac-prefix-file) 
(valid-file . ac-prefix-valid-file) 
(c-dot . ac-prefix-c-dot) 
(c-dot-ref . ac-prefix-c-dot-ref)) 

ac-prefix-c-dotac-prefix-c-dot-ref似乎是匹配.->其中進行完成的模式。

+0

非常感謝!我一直在尋找解決方案這麼久。看來我需要添加defun ac-common-setup() – foboi1122

+0

@ foboi1122,我很高興聽到它對您有用。 –