moonbitもくもく会でNeovimのmoonbit設定を書いたので共有してみる。
実際の設定はここから見れる。
moonbit_lsp.lua:
https://github.com/Comamoca/dotfiles/blob/main/config/nvim/lua/configs/moonbit_lsp.lua
lsp.lua:
lsp.toml(vim):
moonbitのLSPについて
クローズドソースだけどパッケージは公開されている。 Bunでも動くっぽいので自分はBunでインストールした。
https://www.npmjs.com/package/@moonbit/moonbit-lsp
npm install -g @moonbit/moonbit-lspfiletype
まず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=moonbitlspconfig
こんな感じで書く。
普通に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今日のもくもく会は設定まわりで終わってしまったので、ちゃんと構文とかも触っていきたい。