2010-06-19 4 views
6

저는 CEDET에서 이맥스를 사용하고 코드 완성을 위해 자동 완성을 사용하고 있습니다. 원래는 매번 Emacs를 시작할 때마다 CEDET을로드하도록 설정했습니다.이맥스 : CEDET 사용 및 초기화

그러나 이것은 꽤 오랜 시간이 걸렸으므로 필요한 경우 즉, 내 경우에는 C++ 모드를 입력 할 때로드하는 것이 현명 할 것이라고 생각했습니다.

그래서 나는 C++ 입력 할 때 호출하는 lambda에 원래의 기능을 이동 - 모드 :

; cscope for c(++) programming (finding symbols, etc.) 
(require 'xcscope) 

; C++ stuff 
(add-hook 'c++-mode-hook 
     (lambda() 
     (load-file "/usr/share/emacs/site-lisp/cedet-common/cedet.el") 
     (global-ede-mode 1) ; enable project management system 
     (semantic-load-enable-code-helpers) ; enable prototype help and smart completion 
     (require 'auto-complete-config) 
     (add-to-list 'ac-dictionary-directories "~/elisp/ac-dict") 
     (add-to-list 'ac-sources 'ac-source-semantic) 
     (local-set-key (kbd "C-:") 'semantic-ia-complete-symbol-menu) ; set shortcut for auto completion. 
     (local-set-key (kbd "C-.") 'ac-complete-semantic) 
     (ac-config-default) 
     ) 
    ) 

에 오류가 없습니다, 그러나 나는 다음과 같은 문제가 : 이맥스는 C를 입력하면 ++ - 모드를 처음에 대해 시간이 지나면 코드 완성이 제대로 작동하지 않습니다. 그러나 Emacs가 C++ 모드로 두 번째로 들어가면 모든 것이 잘 작동합니다.

내가 뭘 잘못하고 있는지 아는 사람이 있습니까?

답변

8

CEDET 초기화는 자체 C 및 C++ 모드 후크를 설정합니다. 동일한 후크를 실행하는 동안 후크를 설치하면 실행되지 않고 첫 번째 버퍼가 초기화되지 않습니다.

시동시 CEDET을로드 한 다음 C 모드 후크로 코드 헬퍼를 초기화하십시오. 그런 식으로 C++ 모드는 모드 로컬로 초기화되지만 후크가 실행 된 후에 추가 함수가 설치되어 작동 할 수 있습니다. 나는 그것을 직접 시도하지 않았다.

EDE 모드가 느린 것은 아니라고 생각합니다. 초기화시에도 그렇게하는 것이 좋습니다.

+0

답변 해 주셔서 감사합니다. 그래서 CEDET는 원래의 C++ - mode-hook을 대체합니다, 맞습니까? – phimuemue