Вот скрипт, который я использую:
#!/usr/bin/bash
echo "Creating list of files to build tags..."
find `pwd` -name '*.c' -o -name '*.h' > cscope_files
echo "Building cscope and ctags databases..."
cscope -bqki cscope_files
ctags -eL cscope_files
> cat cscope_files | wc -l
10700
Для 10700 файлов, которые сопоставимы с вашим проектом, переходы между тегами происходят мгновенно.Как вы могли заметить, это создает базы данных cscope и etags.Я запускаю этот скрипт в верхней части дерева.Также, если это поможет, это привязки клавиш в моем файле .emacs.el.
(defun hide-cscope-buffer ()
"Turn off the display of cscope buffer"
(interactive)
(if (not cscope-display-cscope-buffer)
(progn
(set-variable 'cscope-display-cscope-buffer t)
(message "Turning ON display of cscope results buffer."))
(set-variable 'cscope-display-cscope-buffer nil)
(message "Toggling OFF display of cscope results buffer.")))
(global-set-key [f9] 'cscope-find-this-symbol)
(global-set-key [f10] 'cscope-find-global-definition-no-prompting)
(global-set-key [f11] 'cscope-find-functions-calling-this-function)
(global-set-key [f12] 'cscope-find-this-file)
(global-set-key (kbd "C-t") 'cscope-pop-mark)
(global-set-key (kbd "C-n") 'cscope-next-symbol)
(global-set-key (kbd "C-p") 'cscope-prev-symbol)
(global-set-key (kbd "C-b") 'hide-cscope-buffer)
(global-set-key [S-f7] 'cscope-next-file)
(global-set-key [S-f8] 'cscope-prev-file)
(global-set-key [S-f9] 'cscope-find-this-text-string)
(global-set-key [S-f10] 'cscope-find-global-definition)
(global-set-key [S-f11] 'cscope-find-egrep-pattern)
(global-set-key [S-f12] 'cscope-find-files-including-file)
Я не обычный пользователь emacs.Они использовались мной, когда я пытался переключиться на emacs, но затем вернулись к vim, где я нашел способы делать все то, что я был счастлив делать в emacs.
Обновление: Для файлов с несколькими тегами в иерархии каталогов взгляните на раздел Файлы с несколькими тегами этой статьи .