「emacs/ctags」の編集履歴(バックアップ)一覧はこちら
「emacs/ctags」(2017/12/22 (金) 01:39:53) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
10数年来、タグジャンプを使わずに他人のソースコードを読んで来たが、寄る年波か、突然面倒くさくなったので、emacsでctagsを使うことにした。
*インストール
TAGSファイルの生成に、外部プログラムの[[Exuberant Ctags>>http://ctags.sourceforge.net/]]を使う。41種類の言語に対応。Schemeも対応している。
#highlight(sh){{
$ sudo apt install exuberant-ctags}}
*設定
emacsでctagsを気持ちよく使うために、ごにょごにょ。
#highlight(lisp){{
(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|正規表現で関数を探してジャンプ|
*参考
[[etags の使い方メモ - My Emaps>>http://d.hatena.ne.jp/tama_sh/20110212/1297499584]]
[[Emacs でTAGファイルを使って関数にタグジャンプ: 麦汁三昧>>http://mugijiru.seesaa.net/article/209200614.html]]
10数年来、タグジャンプを使わずに他人のソースコードを読んで来たが、寄る年波か、突然面倒くさくなったので、emacsでctagsを使うことにした。
*インストール
TAGSファイルの生成に、外部プログラムの[[Exuberant Ctags>>http://ctags.sourceforge.net/]]を使う。41種類の言語に対応。Schemeも対応している。
#highlight(sh){{
$ sudo apt install exuberant-ctags}}
*設定
emacsでctagsを気持ちよく使うために、ごにょごにょ。
#highlight(lisp){{
(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|正規表現で関数を探してジャンプ|
*追伸
[[jixiuf/ctags-update: (auto) update TAGS in parent directory using exuberant-ctags>>https://github.com/jixiuf/ctags-update]]を使うかどうするか迷い中。
*参考
[[etags の使い方メモ - My Emaps>>http://d.hatena.ne.jp/tama_sh/20110212/1297499584]]
[[Emacs でTAGファイルを使って関数にタグジャンプ: 麦汁三昧>>http://mugijiru.seesaa.net/article/209200614.html]]