想定する作業環境
作業環境のOSはUbuntu、テキストエディタはvim を想定しています。
作業としてパッケージで導入したファイルを書き換えるという、ちょっと危ない操作をするので、壊れてもいいような環境(仮想環境など)をお使いください。
用語の説明
- GNU GLOBAL
- こちらを参照→GNU GLOBAL を使ったコードリーディング
- Exuberant Ctags
- http://ctags.sourceforge.net/
- Pygments
- http://pygments.org/
- wml-pygments
- https://github.com/CelticMinstrel/wml-pygments
インストール
sudo apt install global exuberant-ctags python-pygments
wml-pygments の組み込み
wml-pygmentsを取ってくる
git clone https://github.com/CelticMinstrel/wml-pygments
(wesnoth.py があればよい)
Python のパージョン確認
python -V
Python 2.7.13
pygmentize(Pygmentsのコマンドラインツール)の動作確認
pygmentize -L lexer
対応しているコンピュータ言語がつらつらと表示される。
wesnoth.py(WMLの構文定義)ファイルをコピー
sudo cp wesnoth.py /usr/lib/python2.7/dist-packages/pygments/lexers
コピー先に移動して
cd /usr/lib/python2.7/dist-packages/pygments/lexers
WMLの構文を組み込む
sudo python ./_mapping.py
確認
pygmentize -L lexer
↓WMLが追加されていることを確認する
* whiley: Whiley (filenames *.whiley) * wml, Wml: WML (filenames *.cfg, *.pbl) * x10, xten: X10 (filenames *.x10)
GNU GLOBALの設定
ひな型を取ってくる
zcat /usr/share/doc/global/examples/gtags.conf.gz > ~/.globalrc
設定ファイル ~/.globalrc を編集
1 デフォルトのパーサーにPygmentsのパーサーを指定する
default:\ :tc=native:
↓
default:\ :tc=native:tc=pygments:
2 Modelica(なんだそれは)の拡張子がgettext の mo と重複するのでコメントアウト
:langmap=Modelica\:.mo:\
↓
# :langmap=Modelica\:.mo:\
3 以下の行を追加(.cfg .pbl をWMLと認識させる)
:langmap=WML\:.cfg.pbl:\
4 これも追加
:gtags_parser=WML\:$pygmentslib:\
使ってみよう
WMLファイル( _main.cfg ) のあるディレクトリに移動して
pygmentize を使う
pygmentizeはPygmentsのコマンドラインツールです。
pygmentize _main.cfg
pygmentize -o m.html _main.cfg
gtags を使う
gtagsはインデックスを作成するコマンドです
gtags -v
(.cfg、.pblのインデックスが作成されるのを確認する)
globalコマンド を使う
global -g キーワード
htags を使う
htagsを使ってもHTML出力ができます
hatags -ganFs
テキストエディタから使う
vim _main.cfg
GNU GLOBAL に対応しているテキストエディタ
- Vim
- Emacs
- Atom https://atom.io/packages/atom-gtags
- gedit https://github.com/utisam/gtagJump
- Notepad++ https://github.com/pnedev/nppgtags
- サクラエディタ https://ja.osdn.net/users/salarm/pf/gtags/wiki/FrontPage
- 秀丸エディタ https://github.com/ohtorii/gtags_for_hidemaru
- xyzzy https://github.com/bulb/gtags-mode/tree/master/site-lisp/gtags
- Sublime Text https://github.com/koko1000ban/SublimeGtags