emacs > ctags

「emacs/ctags」の編集履歴(バックアップ)一覧に戻る

emacs/ctags - (2017/12/21 (木) 23:39:01) のソース

10数年来、タグジャンプを使わずに他人のソースコードを読んで来たが、寄る年波か、突然面倒くさくなったので、emacsでctagsを使うことにした。

*インストール
TAGSファイルの生成に、外部プログラムの[[Exuberant Ctags>>http://ctags.sourceforge.net/]]を使う。41種類の言語に対応。Schemeも対応している。
#highlight(sh){{
$ sudo apt install exuberant-ctags}}

*emacs内でTAGSファイルの作成・更新
#highlight(lisp){{
(defun compile-ctags (dir)
  "compile ctags for the current project"
  (interactive "D[ctags] project root ? ")
  (cd dir)
  (compile "ctags -e -R --exclude='*.elc' --exclude='.git'"))
(global-set-key [f5] 'compile-ctags)
(defun find-tag-next () (interactive) (find-tag last-tag t))
(global-set-key (kbd "M-,") 'find-tag-next)
(global-set-key (kbd "C-M-,") 'find-tag-other-window)}}
1. プロジェクト内のファイルを開いているところで、"F5"を押し下げ。
2. ミニバッファに現在のファイルのいるディレクトリパスが表示されるので、プロジェクトのルートに変更。
3. エンターで実行。

*使い方
※デフォルトのキーマップ使いにくいので適当に
|M-.|find-tag|最初の定義位置にジャンプ|
|M-,|find-tag(引数付)|M-. した後に使うと次の同名の関数に飛ぶ|
|M-*|pop-tag-mark|ジャンプ後、前の位置に戻る(定義ジャンプを繰り替えした場合は、遡って行く)|
|C-M-,|find-tag-other-window|定義位置に別windowでジャンプ|
|C-M-.|find-tag-regexp|正規表現で関数を探してジャンプ|