ctagsを入れる
sudo apt install exuberant-ctags -y
pygmentsを入れる
python -m pip install pygments
globalを入れる
sudo apt install global -y
globalのバージョンを確認する
global --version
出力
global - GNU GLOBAL 5.7.1
5以下なら6をビルドする
ここから最新のglobalを落とす
wget http://tamacom.com/global/global-6.6.2.tar.gz #現在
展開
tar zxvf global-6.6.2.tar.gz
ビルド
cd global-6.6.2/
./configure --prefix=/usr/local # 失敗するので実行せず次へ進んでください
出力
...
configure: error: curses library is required but not found.
If you are not going to use gtags-cscope, please try ./configure --disable-gtagscscope
cursesを入れる
sudo apt install libncurses5-dev -y
再ビルド
./configure --prefix=/usr/local
成功したので続ける
make
make install # 失敗するので実行せず次へ進んでください
出力
...
/bin/mkdir: cannot create directory ‘/usr/local/bin/share’: Permission denied
...
sudo必要らしい
sudo make install
成功したっぽいので確認
which gtags
出力
/usr/local/bin/gtags
gtags --version
出力
gtags (GNU GLOBAL) 6.6.2
Copyright (c) 1996-2017 Tama Communications Corporation
License GPLv3+: GNU GPL version 3 or later <http://www.gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
global --version
まだ古いバージョンなら一度削除し、global/global
を/usr/local/bin/global
にコピーする。
gtagsにpygmentsを呼び出す設定をする
設定ファイルであるglobal.confがビルドしたディレクトリにある
それを~/.globalrc
にコピーする
cp -a gtags.conf ~/.globalrc
編集する
vim ~/.globalrc
defaultでビルトインパーサでパースできる言語のコードはビルトインパーサでパースし、そうでなかった言語のコードはpygmentsでパースするように設定する
編集前
default:\
:tc=native:
編集後
default:\
:tc=native:tc=pygments:
ビルトインパーサの設定を変更し、.hファイルをcではなくcppとしてパースするようにする( 参考: https://qiita.com/ochachalton/items/aa245cdcec0078823462 )
編集前
gtags:\
:tc=common:\
:tc=builtin-parser:
builtin-parser:\
:langmap=c\:.c.h,yacc\:.y,asm\:.s.S,java\:.java,cpp\:.c++.cc.hh.cpp.cxx.hxx.hpp.C.H,php\:.php.php3.phtml:
編集後
gtags:\
:tc=common:\
:tc=builtin-parser:
builtin-parser:\
:langmap=c\:.c,yacc\:.y,asm\:.s.S,java\:.java,cpp\:.c++.cc.hh.cpp.cxx.hxx.hpp.C.H.h,php\:.php.php3.phtml:
vimプラグインを入れる
hook_addのところは適宜
[[plugins]]
repo = 'lighttiger2505/gtags.vim'
hook_add = '''
" Options
let g:Gtags_Auto_Map = 0
let g:Gtags_OpenQuickfixWindow = 1
" Keymap
nnoremap <C-j> :GtagsCursor<CR>
nnoremap <C-r> :<C-u>exe("Gtags -r ".expand('<cword>'))<CR>
'''