10数年来、タグジャンプを使わずに他人のソースコードを読んで来たが、寄る年波か、突然面倒くさくなったので、emacsでctagsを使うことにした。
インストール
$ sudo apt install exuberant-ctags
設定
emacsでctagsを気持ちよく使うために、ごにょごにょ。
(defun compile-ctags (dir)
"compile ctags for the current project"
(interactive "D[ctags] project root ? ")
(let ((d (expand-file-name dir)))
(cd d)
(compile "ctags -e -R --exclude='*.elc' --exclude='.git'")
(add-to-list 'tags-table-list d)
(setq tags-file-name d) ))
(global-set-key [f5] 'compile-ctags)
(global-set-key (kbd "M-,") (lambda () (interactive) (find-tag last-tag t)))
(global-set-key (kbd "C-M-,") 'find-tag-other-window)
emacs内でTAGSファイルの作成・更新
1. プロジェクト内のファイルを開いているところで、"F5"を押し下げ。
2. ミニバッファに現在のファイルのいるディレクトリパスが表示されるので、プロジェクトのルートに変更。
3. エンターで実行。
※tags-teble-list に無ければ追加。
※tags-file-name は新しく指定したプロジェクトのTAGSに変更
タグジャンプの仕方
※デフォルトのキーマップ使いにくいので適当に
M-. |
find-tag |
最初の定義位置にジャンプ |
M-, |
find-tag(引数付) |
M-. した後に使うと次の同名の関数に飛ぶ |
M-* |
pop-tag-mark |
ジャンプ後、前の位置に戻る(定義ジャンプを繰り替えした場合は、遡って行く) |
C-M-, |
find-tag-other-window |
定義位置に別windowでジャンプ |
C-M-. |
find-tag-regexp |
正規表現で関数を探してジャンプ |
追伸
参考
最終更新:2017年12月22日 01:39