みつきんのメモ

組み込みエンジニアです。Interface誌で「My オリジナルLinuxの作り方」連載中

GNU Global(gtags)の対応言語を増やしてみる

はじめに

最近、仕事でgoのコードを読む必要が出てきた。

コードを読む時はemacs+gtagsを使用しているが、デフォルトではgoは対応していない。

ここPygmentsexuberant-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を使用している人にとっては便利。

参考