Работя върху голям C++ проект. Работя с emacs през последните шест месеца. Опитах се да конфигурирам CEDET така, че да мога да навигирам лесно, но открих някои проблеми.
1.- Понякога семантиката не намира някои символи, а понякога не... не знам ясно кои файлове се индексират семантично. Опитах се да използвам EDE (следвайки инструкциите в този документ http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html), но открих и някои проблеми...
- Имам няколко версии (Releases) на един и същ проект, всяка в собствена папка. Как мога да кажа на emacs с кой проект работя?
- Как мога да кажа на ede къде да търси моите заглавни файлове? Мога ли да посоча само основна директория и семантиката ще търси заглавни файлове във всички поддиректории?
2.- Работех с vim+cscope преди известно време и си спомням, че имаше начин за навигиране обратно в стека от символи (Ctrl-t). Има ли нещо подобно в emacs?
P.D.> Някои данни, за да стане въпросът по-ясен.
Имам няколко версии на един и същи проект. Всеки от тях има своя собствена основна директория. Всеки проект има множество модули, всеки от които е в поддиректория. Във всеки модул има заглавен файл.
/home/user/
|
\Release-001
| |
| \makefile
| \ Module-001
| | |
| | \makefile
| | \subdir-001
| | | \header-001.h
| | | \header-002.h
| | \subdir-002
| | | \header-003.h
| \ Module-002
| | |
| | \makefile
| | \subdir-003
| | | \header-004.h
| | | \header-005.h
| | \subdir-004
| | | \header-006.h
|
\Release-002
| |
| \makefile
| \ Module-001
| | |
| | \makefile
| | \subdir-001
| | | \header-001.h
| | | \header-002.h
| | \subdir-002
| | | \header-003.h
| \ Module-002
| | |
| | \makefile
| | \subdir-003
| | | \header-004.h
| | | \header-005.h
| | \subdir-004
| | | \header-006.h
Това е конфигурацията за EDE, която имам в моя .emacs
;; Cedet load commands
(add-to-list 'load-path "~/emacs-dir/cedet/cedet")
(load-file "~/emacs-dir/cedet/cedet/common/cedet.el")
;; EDE: activating mode.
(global-ede-mode t)
;; Projects definition
(ede-cpp-root-project "Release-001"
:name "Release-001"
:file "~/Release-001/makefile"
:include-path '("/"
)
:system-include-path '("~/exp/include")
:spp-table '(("SUSE9" . "")
)
)
(ede-cpp-root-project "Release-002"
:name "Release-002"
:file "~/Release-002/makefile"
:include-path '("/"
)
:system-include-path '("~/exp/include")
:spp-table '(("SUSE9" . "")
)
)
Само да ви уведомя... работя с конзолната версия (-nw) на emacs.