自分の環境がぶっ壊れた時、「あの問題どうやって解決したんだっけ?」って思ってggってもなかなか情報が少なかったので、備忘録も兼ねて書いていきます。
Photo by Markus Spiske on Unsplash
Environment
- macOS 10.14.6
- NVIM v0.4.3
使うプラグイン
LanguageClient-neovim
はVueの補完のために入れたけど……もしかしたらternjsだけで十分かもしれない(そこまでちゃんと検証できてない…あとでやる)
dein.vim
は基本本家様のhelp見れば大抵のことは書いてある。
が、初学者な拙僧はHookまわりがよくわかってなくて、ちょっとトラブったときに作者さんにアドバイスを貰ったときに熟読しました。
あと英語が不得手だったので、Qittaで日本語で説明してくれるページがあったので、とても参考になったとです。
deoplete.nvim
も本家様のhelp見れば大体使い方とかが乗っているのでわかると思います。
なので、上記のプラグインについては端折るぞ!
deoplete-ternjsが動かない時はon_ft指定してみよ
ハマったのは、deoplete-ternjs
。
そう、お前だよ。
一応READMEに一通り書かれてるんですが、書かれてないところでハマったからメモを残しておく。
Tern本家(?)のぷらぎん使ってもいいかな…って思ったけど……ひとまずは動いていたのを直したかったので、動くようになることだけメモ。
deoplete
のtomlは以下の通り。
基本起動時に動かなくてもInsertになったときに動けば良いのでlazyに書いてます。
# ============================================================================ # Complement plugins # ============================================================================ [[plugins]] repo = 'Shougo/deoplete.nvim' on_i = 1 hook_add = ''' let g:deoplete#enable_at_startup = 1 inoremap <expr><tab> pumvisible() ? "\<C-n>" : \ neosnippet#expandable_or_jumpable() ? \ "\<Plug>(neosnippet_expand_or_jump)" : "\<tab>" ''' hook_post_source = ''' call deoplete#custom#option({ \ 'auto_complete_delay': 0, \ 'max_list': 100 \ }) ''' [[plugins]] repo = 'Shougo/neosnippet.vim' depends = [ 'neosnippet-snippets', 'context_filetype.vim' ] on_ft = 'snippet' on_i = 1 hook_add = ''' set completeopt-=preview imap <C-k> <Plug>(neosnippet_expand_or_jump) smap <C-k> <Plug>(neosnippet_expand_or_jump) xmap <C-k> <Plug>(neosnippet_expand_target) if has('conceal') set conceallevel=2 concealcursor=i endif ''' [[plugins]] repo = 'Shougo/neosnippet-snippets' [[plugins]] repo = 'Shougo/context_filetype.vim' [[plugins]] repo ='carlitux/deoplete-ternjs' hook_post_update = ''' call system ('npm install -g tern') ''' hook_add = ''' let g:deoplete#sources#ternjs#filetypes = [ \ 'jsx', \ 'javascript.jsx', \ 'vue', \ ] ''' on_ft = ['javascript'] [[plugins]] repo = 'autozimu/LanguageClient-neovim' rev = 'next' build = 'bash install.sh' hook_post_source = ''' set hidden let g:LanguageClient_serverCommands = { \ 'vue': ['vls'], \ } nnoremap <silent> K :call LanguageClient_textDocument_hover()<CR> nnoremap <silent> gd :call LanguageClient_textDocument_definition()<CR> nnoremap <silent> <F2> :call LanguageClient_textDocument_rename()<CR> ''' [[plugins]] repo = 'fszymanski/deoplete-emoji' depends = 'deoplete.nvim' on_ft = ['markdown', 'gitcommit']
公式には
"Add extra filetypes
let g:deoplete#sources#ternjs#filetypes = [
\ 'jsx', \ 'javascript.jsx', \ 'vue', \ '...' \ ]
って書いてあったりするので、これだけ書けばええんやって思っちゃうんですが、これだけだと動かなかったので、どうも on_ft
も設定してあげたほうが良いみたいです。
どういう理由で?とも思うんですが、 deoplete-emoji
も書かないと補完リストが出てこなかったので、補完系には全部on_ft
を指定するようにしました。
ここには書いてませんが、シンタックスハイライト系のプラグインも全部 on_ft
を指定してます。
もしかしたらdeoplete-ternjs
の問題じゃないのかもしれません。
すまんな……疑うような事を言って。でもメンテが半年前とかになってるので…………もしこの先メンテが年単位とかだったらちょっと使い続けるのは考えちゃうんだぜ(´・ω・`)
最後に備忘録として参考に見てた記事とか貼っておく。
- https://sorededou.com/neovim-problem-with-dein-and-lsp
- https://sorededou.com/neovim-languageclient-neovim
- http://kozo2.hatenablog.com/entry/2013/05/03/235840
- https://github.com/ternjs/tern_for_vim
おまけで、「deopleteが動かなくなってしまって、他のIssueとかdocsとか参考にしてみたけど、python入れ直しても、nvim入れ直しても動かなくてさぁどうしようホントに詰んだぞ…」となり、不得手な英語を駆使して暗黒美無王さんに助けを請うたIssueと、たった一言で解決したというのを晒しておきます。