はじめに
以前からwindows版EmacsでGNU GLOBALを使用させてもらっていました。
最近、C#の勉強しているので以前から存在だけは知っていたPygmentsパーサーを利用してC#のタグを作成できるように作業をしました。
その中で少しハマったところがあったのでメモを残しておきます。
環境
利用環境は以下です。
- Windows10
- Emacs26.1
Emacs for Windowsで公開されている「簡易IME対応(2)版(ファイルサイズ削減・tif画像表示対応・TLS対応)」を使用 - GNU GLOBAL 6.6.3 Window用ビルド(Win32版)
http://adoxa.altervista.org/global/
環境変数には以下が設定されています。
変数 | 値(例) |
---|---|
HOME | D:\emacs |
Path | D:\emacs\bin |
Pythonの実行環境をインストール
まずは、Pygmentsを動かすためにPythonの実行環境をインストールします。
Windows向けPythonも色々なバージョンがあるのでどれを導入したらいいのか迷いましたが
python.orgの64bitインストーラ版を使用しました。
バージョンは「Python 3.7.4 - July 8, 2019」でした。
(EmacsもGNU GLOBALも32bit版ですが、64bitで動作しました。32bit版でも動作します。途中切り分けで両方試しました…)
注意点は
- 「Add Python 3.7 to PATH」のチェックを入れる
- インストール先を「D:\Python\Python37」に変更しました。※必ず変更する必要はなし
- インストール後にOSを再起動する。
OS再起動後のeshell又はDOSプロンプトで「pip --version」と入力して
バージョンが表示さればPythonのインストールはOKです。
$ pip --version
pip 19.1.1 from d:\python\python37\lib\site-packages\pip (python 3.7)
Pygmentsパーサーをインストール
以下のコマンドを実行してPygmentsパーサーをインストールします。
$ pip install Pygments
インストール後にバージョン情報が表示されればOKです。
$ pygmentize -V
Pygments version 2.4.2, (c) 2006-2019 by Georg Brandl.
exuberant ctags 日本語対応をインストール
Emacsのbinフォルダには、既にctags.exeが存在していましたが
このファイルを利用すると以下のエラーが発生しました。
ctags: unrecognized option '--filter'
Try 'ctags --help' for a complete list of options.
以下のサイトからexuberant ctags 日本語対応Win32版(バイナリのみ)をダウンロードしてbinフォルダにコピーしました。
http://hp.vector.co.jp/authors/VA025040/ctags/
gtags.confをコピー
GNU GLOBALに付属の「gtags.conf」をコピーします。
環境変数に以下の値を追加します。値は環境に合わせて変更可能です。
変数 | 値(例) |
---|---|
GTAGSCONF | D:\emacs.emacs.d\gtags.conf |
追加した値と同じパスにgtags.confをコピーしておきます。
動作確認
この時点で動作すると思っていたのですが、C#のタグを作りたいディレクトリで
「gtags --gtagslabel=pygments」コマンドを入力すると以下のエラーが発生しました。
$ gtags --gtagslabel=pygments
python: can't open file 'd:\emacs\bin\../share/gtags/script/pygments_parser.py': [Errno 2] No such file or directory
pygments_parser.pyをコピー
いきなり身に覚えがないディレクトリが出てきて戸惑いましたが
「pygments_parser.py」はGNU GLOBALに付属していたので指定されたフォルダを作成して、そこにコピー。
今回の場合は「D:\emacs\share\gtags\script\pygments_parser.py」
※このディレクトリは誰が指定しているのは謎のまま…
これでエラーが解消され動くようになりました。
gtags.confを修正
最後に、gtagsコマンドに毎回オプションを付けるが億劫なのでgtags.confを編集
ファイルの頭の方にある以下の記述を
default:\
:tc=native:
以下のように書き換え、
default:\
:tc=native:tc=pygments:
これで普段はgtags.exeを使用してC#など追加言語はpygmentsを使用する様になります。
終わりに
上記の手順でgtagsコマンドでPygmentsパーサーを使用したタグが出力されるようになりました。
C#の場合、gtags.exeだけでも一部のタグは出力してくれます。
だたし、シンボルとリファレンスが別れていないので微妙に使いづらかったのでこれが解消されてとりあえずは満足。
参考リンク
https://qiita.com/yoshizow/items/9cc0236ac0249e0638ff
http://cha.la.coocan.jp/doc/gnu_global_with_pygments.html