emacs > ctags

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

インストール

TAGSファイルの生成に、外部プログラムのExuberant Ctagsを使う。41種類の言語に対応。Schemeも対応している。
$ 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