Help us understand the problem. What is going on with this article?

NeovimでScalaのオムニ補完を行う

More than 1 year has passed since last update.

ふとNeovimでdeoplete.nvimを利用したScalaのオムニ補完をしたくなったので備忘録です。
思ったより簡単にできました。

インストール

Pythonのパッケージをインストール

$ pip3 install pynvim
$ pip3 install websocket-client sexpdata

Neovimのプラグインをインストール

SBTの設定

plugins.sbt

~/.sbt/1.0/plugins/plugins.sbtファイルに以下を記述する。

addSbtPlugin("org.ensime" % "sbt-ensime" % "2.5.1")

~/.sbt/1.0/plugins.sbtではなく、~/.sbt/1.0/plugins/plugins.sbtです。ここ間違えやすいかも。

global.sbt

~/.sbt/1.0/global.sbtファイルに以下を記述する。

serverConnectionType := ConnectionType.Tcp
serverPort := 4273

serverPortNeoVimの設定ファイルで変更可能です。

Neovimの設定

Neovimの設定ファイルに以下を追記。

let g:ale_completion_enabled = 1

※ dein.vimを使用した設定の一例

[[plugins]]
repo = 'Shougo/deoplete.nvim'
on_event = 'InsertEnter'
hook_source = '''
    call deoplete#custom#option('sources', {
        \ 'scala': ['buffer', 'dictionary', 'file', 'member', 'omni', 'tag'],
        \})

    call deoplete#custom#var('omni', 'input_patterns', {
        \ 'scala': [
        \     '[^. *\t]\.\w*',
        \     '[:\[,] ?\w*',
        \     '^import .*'
        \   ]
        \})

    call deoplete#enable()
'''

[[plugins]]
repo = 'ensime/ensime-vim'

[[plugins]]
repo = 'w0rp/ale'
on_ft = 'scala'
hook_source = '''
    let g:ale_completion_enabled = 1
'''
depends = [
    'ensime-vim'
]

ENSIMEの設定

使用するプロジェクトのSBTで以下を実行する。

$ sbt ensimeConfig
$ sbt ensimeConfigProject

.gitignoreに、.ensimeファイルと.ensime_cache/ディレクトリを除外することを記述しておくといいです。

以上です

以後、Scalaのソースコードを編集し、保存後にコンパイルすると、オムニ補完ができます。
sbt ~compileでソースコードの保存時に自動的にコンパイルするようにしておくと便利です。

コンパイルを行わなくても、少し時間をおけば補完できるようになります。

nabezokodaikon
力まずに備忘録をつけていこうと思ってます〜
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした