概要
aleとasyncomplete.vimを使って、TypeScriptの入力補完を行うための設定について記載します。
前提
- プラグインの管理はdein.vimで行っています。
- tsserverを使用するため、typescriptがプロジェクトローカルまたはグローバルにインストールされている必要があります。
依存関係
必要になるまでaleを有効化したくないため、on_cmd
にコマンドを列挙しています。
各プラグインの設定はhook_source
で行っています。
[[plugins]]
repo = 'dense-analysis/ale'
on_cmd = ['ALELint', 'ALEToggle', 'ALEEnable', 'ALEToggleBuffer', 'ALEEnableBuffer']
hook_source = '''
let g:ale_linters_explicit = 1 " 必要なlinterのみ有効化したいため
let g:ale_linters = {
\ 'typescript': ['tsserver']
\ }
'''
depends = 'asyncomplete.vim'
[[plugins]]
repo = 'prabirshrestha/asyncomplete.vim'
on_func = 'asyncomplete#enable_for_buffer'
hook_source = '''
let g:asyncomplete_enable_for_all = 0 " TypeScriptファイルの編集時のみ使用したいため
set completeopt+=preview
autocmd User asyncomplete_setup call asyncomplete#register_source(asyncomplete#sources#ale#get_source_options({
\ 'priority': 10
\ }))
'''
vimrc
下記の設定をvimrcに記載します。
設定後、vimrc等必要なファイルの再読み込みを行うと、入力補完が効くようになると思います。
" .tsファイルを開いたときに、aleとasyncomplete.vimを有効化しています。
function! s:typescript() abort
ALEEnable
call asyncomplete#enable_for_buffer()
map <buffer> <C-]> <Plug>(ale_go_to_definition)
imap <buffer> <C-Space> <Plug>(asyncomplete_force_refresh)
endfunction
augroup TypeScript
autocmd!
autocmd FileType typescript call s:typescript()
augroup END
参考
以下を参考にさせていただきました。
https://qiita.com/hokorobi/items/b4be36253262373fbefc
https://github.com/dense-analysis/ale/pull/2627