はじめに
最近、仕事でgoのコードを読む必要が出てきた。
コードを読む時はemacs+gtags
を使用しているが、デフォルトではgoは対応していない。
ここにPygments
とexuberant-ctags
を使ってgtagsの対応言語を増やす方法が紹介されてたので試してみる。
作業環境
作業環境はUbuntu 18.04。
Pygmentsのインストール
Pygmentsはpythonのパッケージで、pipでインストールできる。
$ sudo pip install Pygments
exuberant-ctagsのインストール
Pygmentsの効果を最大限に活かすためにはctagsが必要なのでインストールする。
$ sudo apt-get install exuberant-ctags
aptのgtagsをアンインストール
インストールしたpythonパッケージとの連携を有効にするには自分でビルドする必要があるので、 Ubuntu標準のパッケージでGNU Global(gtags)をインストールしている場合はアンインストールする。
$ sudo apt purge global
GNU Global(gtags)をビルド
次のコマンドでソースをダウンロードしてconfigureスクリプトを実行する。
$ wget http://tamacom.com/global/global-6.6.3.tar.gz $ tar xvf global-6.6.3.tar.gz $ cd global-6.6.3 $ ./configure
exuberant-ctagsが有効になっている場合は./configure
で次の行が表示されている。
checking for exuberant ctags program... using /usr/bin/ctags
Pygmentsが有効になっている場合は./configure
で次の行が表示されている。
config.status: creating plugin-factory/Makefile config.status: creating plugin-factory/pygments_parser.py
次にmakeを実行してビルド、インストールする。
$ make -j $(nproc) $ sudo make install
設定ファイル
設定ファイルを/etc
の下にコピーする。
$ sudo cp /usr/local/share/gtags/gtags.conf /etc/
実行
$ gtags --gtagslabel=pygments
もしくは環境変数に設定する。
$ export GTAGSLABEL=pygments $ gtags
まとめ
設定ファイルのコピーを忘れるとgtagsコマンド実行時にタグファイルは作成されるが、 ほぼジャンプできないので注意が必要。
go意外にも対応言語が増えるので、普段からGNU Globalを使用している人にとっては便利。