Last active
December 19, 2016 20:15
-
-
Save wordijp/ebddbe24404a892615a5c0ef4584cc3d to your computer and use it in GitHub Desktop.
Windows版Vimでも動作するtagsファイル作成コマンド
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| " tagsファイルを.gitディレクトリへ作成する | |
| " NOtE : .gitディレトリが、プロジェクトのルートディレクトリ取得も兼ねている | |
| function! Make_tags_gitdir() | |
| let l:toplevel = system('git rev-parse --show-toplevel') | |
| if v:shell_error | |
| echo 'failed: git dir is not found' | |
| endif | |
| let l:toplevel = substitute(l:toplevel, '[\r\n]', '', 'g') | |
| let l:cache_pwd = '' | |
| redir => l:cache_pwd | |
| silent pwd | |
| redir END | |
| let l:cache_pwd = substitute(l:cache_pwd, '[\r\n]', '', 'g') | |
| let l:opt = '' | |
| if &filetype ==# 'cpp' | |
| let l:opt = l:opt.' --languages=c++' | |
| elseif &filetype !=# '' | |
| let l:opt = l:opt.' --languages='.&filetype | |
| endif | |
| let l:tagfile = l:toplevel.'/.git/tags' | |
| " tags作成 | |
| try | |
| exe 'lcd '.l:toplevel | |
| call system('ctags --tag-relative --recurse --sort=yes --append=no '.l:opt.' -f '.l:tagfile.' '.l:toplevel) " 絶対パスで作成 | |
| echo 'done' | |
| catch | |
| echo 'error:' . v:exception | |
| finally | |
| exe 'lcd '.l:cache_pwd | |
| endtry | |
| endfunction | |
| nnoremap :tgg :call Make_tags_gitdir() | |
| set tags+=.git/tags |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment