😊

null-ls.nvimがアーカイブされちゃったので移行先としてefm-langserver(+nvim-lsp)を検討してみる)

2023/09/08に公開

この記事はVim駅伝 の2023年9月8日の記事です。

本来は2023年9月1日に公開予定だったのですが、その直前に高熱でぶっ倒れました(結果的にコロナでした)。

はじめに

2023年7月10日、全てのNeovimmerにとって悲しいお知らせがありました。
超大手のNeovimプラグインであるnull-lsのアーカイブ化が発表されました。

https://github.com/jose-elias-alvarez/null-ls.nvim/issues/1621

I’ve been struggling to find the time and energy to maintain null-ls, especially since I no longer use Neovim as my primary editor.

作者のjose-elias-alvarez氏、Neovim使わなくなっちゃったんですね...

「今までお世話になりました」という感謝の気持ちを抱きつつ、今後の移行先を検討しています。
その中で移行先の候補の一つである efm-langserverをせっかくの機会なので触ってみたよ、という備忘録です。
(コロナ明けで記事を書く体力が無さすぎた...)

https://github.com/mattn/efm-langserver

efm-langserverを触ってみる

今回の目標は、efm-langserver経由で以下の2つのツールを使えるようにすることです。
luacheckがLinter、styluaがFormatterですね。

https://github.com/mpeterv/luacheck
https://github.com/JohnnyMorganz/StyLua

まずはインストール

私はgo installでインストールしてます。
mason.nvimMason(またはMasonInstall)コマンドでインストールしてもいいと思います。

go install efm-langserver

Neovim(nvim-lsp)の設定を書く

私の場合はこんな感じで書いてます(要改良)。

local lspconfig = require("nvim-lspconfig")
lspconfig.efm.setup({
  init_options = {
    documentFormatting = true,
    documentRangeFormatting = true,
  },
  settings = {
    rootMarkers = {
      ".git/",
    },
    languages = {
      lua = {
        {
          formatCommand = "stylua --color Never --config-path ~/.config/.stylua.toml -",
        },
        {
          lintCommand = "luacheck --no-color --quiet --config ~/.config/.luacheckrc -",
          lintFormats = { "%f:%l:%c: %m" },
        },
      },
    },
  },
  filetypes = {
    "lua",
  },
})

終わりに

  • 必要最低限の移行はできた...かな?
  • 今回はluacheckstyluaの設定はどちらも~/.config下に置いた物を使っているけど、プロジェクトローカルなものを使えるようにしようとするなら工夫が必要かも?

Discussion