2013-12-24 5 views
2

Я начинаю немного экспериментировать с использованием emacs в качестве моей разработки, и я столкнулся с небольшими проблемами. Я хочу использовать cscope с семантикой для довольно надежного поиска в моей базе кода. Однако после установки cscope (с apt-get install cscope) и перемещения xscope.el в мой ~/.emacs.d/, мне все еще не удается вызвать некоторые настройки с моим файлом .emacs. Когда я пытаюсь позвонить (semanticdb-enable-cscope-databases), я получаю сообщение об ошибке, что определение функции символа недействительно. Я использую emacs 24.3настройка семантики с помощью cscope

(semantic-mode 1) 

(global-ede-mode 1) 
(require 'semantic/ia) 

;; Semantic 
(global-semantic-idle-completions-mode t) 
(global-semantic-decoration-mode t) 
(global-semantic-highlight-func-mode t) 
(global-semantic-show-unmatched-syntax-mode t) 

;; auto-complete stuff 
(add-to-list 'load-path "~/.emacs.d") 
(require 'auto-complete-config) 
(ac-config-default) 

(add-hook 'c-mode-common-hook '(lambda() 

     ;; ac-omni-completion-sources is made buffer local so 
     ;; you need to add it to a mode hook to activate on 
     ;; whatever buffer you want to use it with. This 
     ;; example uses C mode (as you probably surmised). 

     ;; auto-complete.el expects ac-omni-completion-sources to be 
     ;; a list of cons cells where each cell's car is a regex 
     ;; that describes the syntactical bits you want AutoComplete 
     ;; to be aware of. The cdr of each cell is the source that will 
     ;; supply the completion data. The following tells autocomplete 
     ;; to begin completion when you type in a . or a -> 

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

     ;; ac-sources was also made buffer local in new versions of 
     ;; autocomplete. In my case, I want AutoComplete to use 
     ;; semantic and yasnippet (order matters, if reversed snippets 
     ;; will appear before semantic tag completions). 

      (setq ac-sources '(ac-source-semantic ac-source-yasnippet)) 
)) 

(require 'xcscope) 
(semanticdb-enable-cscope-databases) ;;This is causing problems 

;;C mode 
(require 'cc-mode) 

;;Color theme 
(require 'color-theme) 
(setq color-theme-is-global t) 
(add-to-list 'load-path "/home/bob/.emacs.d/theme/ample-theme/ample-theme.el") 
;;(require 'ample-theme) 
(eval-after-load "color-theme" 
    '(progn 
    (color-theme-initialize) 
    (color-theme-jsc-dark))) 

;;set font 
(set-face-attribute 'default nil :family "Anonymous Pro" :height 140) 

;;line numbers 
(global-linum-mode 1) 
(custom-set-variables '(linum-format (quote "%4d \u2502 "))) 

;;treat .h files at C++ 
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode)) 

;; use F5 as compile 
(global-set-key [(f5)] 'compile) 

;; make compilation window smaller 
(setq compilation-window-height 8) 
+0

'semantic - tag-deep-copy-value' доступно только при загрузке' semantic/scope.el'. Поместите функцию в соответствующие переключатели режима или в 'eval-after-load'. Я не думаю, что установка '.emacs.d' в' load-path' является такой хорошей идеей. Этот каталог предназначен для конфигурации. Я помещал свои файлы личной библиотеки в '~/share/emacs'. – Tobias

+0

@Tobias, спасибо! так что это будет означать, что мне нужно вызвать (требуется «семантика/область») правильно? Я переведу свои пакеты emacs. – foboi1122

+0

@Tobias, я добавил (требуется «семантика/область видимости») в верхней части моего точечного файла, и он все еще не может обнаружить базу данных semanticdb-enable-cscope – foboi1122

ответ

1

Теперь я действительно начинаю писать ответ, чтобы усовершенствовать его со временем. Так до сих пор я получил:

Существует несколько версий cedet.

Emacs 24.3 включает в себя cedet-2.0. Но, по сравнению с приведенной ниже версией базара, она немного устарела. Я считаю, что в этой версии cscope поддерживается как один из инструментов в semantic-symref-tool-alist. Переменная semantic-symref-tool-alist описана в руководстве по эксплуатации. Один попадает туда с ключевыми штрихами C-h i g (semantic-user) Configuring SymRef.

После загрузки semantic/symref можно увидеть значение по умолчанию semantic-symref-tool-alist. Один из ее членов:

((lambda 
    (rootdir) 
    (file-exists-p 
    (expand-file-name "cscope.out" rootdir))) 
    . cscope) 

Я думаю, что это является требуется поддержка cscope в во встроенном в версии Cedet-2.0 и никаких дополнительных включение Cscope (?).


Официальный релиз Cedet-1,1 от https://sourceforge.net/projects/cedet/files/cedet/cedet-1.1.tar.gz/download.

В этой версии функция semanticdb-enable-cscope-databases определен в файле semantic/semanticdb-cscope.el


Базар-версии Cedet является Cedet-2,0. Он доступен через базар в:

bzr checkout bzr://cedet.bzr.sourceforge.net/bzrroot/cedet/code/trunk cedet 

В этой версии функция semanticdb-enable-cscope-databases определяется в cedet/semantic/db-cscope.el.

Этот файл отсутствует в версии cedet, поставляемой с emacs 24.3.


Σ: Это заставляет меня верить, что если вы хотите использовать настройки, вы должны использовать версию базарный Cedet-2.0.

+0

Большое вам спасибо! Мне удалось заставить его работать со встроенным семантическим/symref. Ваше предположение о встроенной поддержке cscope было правильным. – foboi1122