moonbitもくもく会でNeovimのmoonbit設定を書いたので共有してみる。
実際の設定はここから見れる。
moonbit_lsp.lua:
lsp.lua:
lsp.toml(vim):
moonbitのLSPについて
クローズドソースだけどパッケージは公開されている。 Bunでも動くっぽいので自分はBunでインストールした。
npm install -g @moonbit/moonbit-lsp
filetype
まずmoonbitのファイルを認識させるためにfiletypeを設定する。
Neovim(lua)だとこんな感じ。
vim.api.nvim_create_autocmd("BufRead", {
pattern = "*.mbt",
command = "set filetype=moonbit",
})
VimとNeovim(Vim script)だとこんな感じ。
autocmd BufRead *.mbt set filetype=moonbit
lspconfig
こんな感じで書く。
普通にmoonbit-lsp
コマンドを実行しているだけ。
local util = require 'lspconfig.util'
return {
default_config = {
cmd = { 'moonbit-lsp' },
filetypes = { "moonbit" },
root_dir = util.root_pattern 'moon.mod.json',
},
docs = {
description = [[
The moonbit language server.
]],
},
}
local server_config = require('lspconfig.configs')
server_config.moonbit = require "configs/moonbit_lsp"
lspconfig.moonbit.setup({})
試してはないけど1ファイルでも動かせると思う。
local server_config = require('lspconfig.configs')
local util = require 'lspconfig.util'
server_config.moonbit = {
default_config = {
cmd = { 'moonbit-lsp' },
filetypes = { "moonbit" },
root_dir = util.root_pattern 'moon.mod.json',
},
docs = {
description = [[
The moonbit language server.
]],
},
}
lspconfig.moonbit.setup({})
quickrun
tempfile: '%{tempname()}.mbt'
はなくても動くかもしれないけど動作確認はしていない。
let g:quickrun_config = {
\ "moonbit" : #{
\ type: 'moonbit/run',
\ },
\ 'moonbit/run': #{
\ cmdopt: 'run',
\ command: 'moon',
\ tempfile: '%{tempname()}.mbt',
\ },
}
vim-lsp
ついでにvim-lspでもやってみた。
こっちはよくサーバー追加してたので簡単だった。
if executable('moonbit-lsp')
au User lsp_setup call lsp#register_server({
\ 'name': 'moonbit',
\ 'cmd': ["moonbit-lsp" ],
\ 'allowlist': ['moonbit'],
\ })
endif
今日のもくもく会は設定まわりで終わってしまったので、ちゃんと構文とかも触っていきたい。