2010-06-19 6 views
6

Tôi đang sử dụng Emacs với CEDET và tự động hoàn tất để hoàn tất mã. Ban đầu tôi thiết lập CEDET để nó tải tại Emacs khởi động mọi lúc.Emacs: Sử dụng và khởi tạo CEDET

Tuy nhiên, điều này mất khá nhiều thời gian, vì vậy tôi nghĩ sẽ rất thông minh khi tải nó nếu cần, tức là - trong trường hợp của tôi - khi vào chế độ C++ -.

Vì vậy, tôi chuyển chức năng ban đầu vào một lambda đó được gọi là khi vào C++ - chế độ:

; 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) 
     ) 
    ) 

Không có lỗi, nhưng tôi có vấn đề sau đây: Khi Emacs vào C++ - chế độ cho người đầu tiên thời gian, hoàn thành mã không hoạt động đúng. Nhưng nếu Emacs vào chế độ C++ - lần thứ hai, mọi thứ hoạt động tốt.

Có ai biết tôi đang làm gì sai không?

Trả lời

8

CEDET khởi tạo bộ móc chế độ C và C++ của riêng nó. Nếu nó cài đặt nó móc trong khi nó đang chạy cùng một móc, sau đó nó sẽ không chạy, và bộ đệm đầu tiên của bạn sẽ không có khởi tạo.

Những gì bạn có thể làm là nạp CEDET khi khởi động, nhưng sau đó khởi động trình trợ giúp mã trong móc chế độ C. Bằng cách đó, chế độ C++ sẽ khởi tạo với chế độ cục bộ, nhưng các chức năng bổ sung sẽ được cài đặt sau khi hook chạy, do đó có thể hoạt động. Tôi đã không thử nó.

Tôi nghĩ chế độ EDE không chạy chậm, vì vậy có thể bạn cũng nên làm điều đó ở thời gian init.

+0

Cảm ơn bạn đã trả lời. Vì vậy, CEDET thay thế bản gốc C++ - chế độ móc, phải không? – phimuemue