mason-lspconfig.nvim

わかる人には既に色々見透かされているとは思ってますが、そんなものは気にせず、ど真ん中をぶっちぎります❗

mason-lspconfig.nvimのお通りだー❗

mason-lspconfig bridges mason.nvim with the lspconfig plugin - making it easier to use both plugins together.

mason-lspconfigmason.nvimlspconfig プラグインを橋渡しし、両プラグインを一緒に使うことを容易にするものです。

:help mason-lspconfig.nvim

なんだかとってもややこしいですね😑

This ain't song for the broken-hearted

心に傷を負った者のために これを歌うわけじゃない

Requirements

:h mason-lspconfig-requirements

  • neovim >= 0.11.0
  • mason.nvim >= 2.0.0
  • nvim-lspconfig >= 2.0.0

mason.nvimneovim 0.10.xにも対応していますが、 このmason-lspconfig.nvimは、さらにもう一歩先に進んでいます。

このページの初掲はApr 1, 2023ですが、 ここで示すサンプルコードはこれに対応したものに書き換えているのですが...

まあ、なんか...、隔世の感があるぅぅぅ😼

Install

これはmason.nvimとセットで入れておきましょう。

extensions/mason.lua

use {
  'williamboman/mason.nvim',
  config = function() require 'extensions.mason' end,
+ requires = {
+   'williamboman/mason-lspconfig.nvim',
+ }
}

nvim-lspconfigも呼び出す必要があるので、これもプラスで❗

Config

で、これに関するコンフィグもmason.luaにまとめちゃいます。

extensions/mason.lua

require('mason').setup {
  ui = {
    check_outdated_packages_on_open = false,
    border = 'single',
  },
}

-- ここに追記
require('mason-lspconfig').setup {
  function(server_name)
    vim.lsp.enable(server_name);
  end,
}

これだけです❗マジです。地味ながらとっても重要なやつです。

ドッジボールで言ったらキルアです❗

It's my life!

これが俺の人生だ!

ただこれ...、かけるオーラの比率をほんの少しでも間違えると途端にアウトなので、 だいぶ気をつけて使ってください...。

mason-lspconfig.setup()

                                                     mason-lspconfig.setup()
setup({config})
  Sets up mason with the provided {config} (see |mason-lspconfig-settings|).

  指定された {config} で mason を設定する (mason-lspconfig-settings を参照)。

例えば、それはもうめちゃくちゃ言語プロフェッショナルが扱う場合はmason-lspconfig.nvim自体を使用せず、 個別にやったほうがきっちりできるはずです。

...ただ、そうでもない場合、言語ごとに一個一個の設定をしていかなきゃならないってなると、 mason-lspconfig.nvimが提供してくれるお手軽さが損なわれてしまいます。

Warning

推奨される方法はこれではなくて他にあるので、「使う場合は注意してね」ってことです😉

でも、それではあまりにも勿体ないので、 これを理解した上で使用する分にはいいんじゃないかな〜って思うことにします❗そうします😆

My heart is like an open highway

Like Frankiesaid

I did it my way

俺の心は まるで見通しの良いハイウェイだ

フランキーが歌ったように

俺は 俺の道を行くんだ

For the ones who stood their ground

ここまで来れば、ついにLSPでお話ができます❗がんばったね🤗

This is for the ones who stood their ground

For Tommy and Gina who never backed down

この歌は 信じて立ち向かった者達に捧げる

決して一歩も引かなかった トミーとジーナのために

LspInfo

試しに、適当なluaファイルを開いて

:LspInfo

としてみましょう。

lspinfo

うわっ❗めっちゃお話ししてくれそう🥰

Tip

:LspInfonvim-lspconfigの機能です😉

Signature Help

じゃあ、試しにluaファイルに記述されているrequireにカーソルを持っていって、Ctrl-kとしてみましょう。

Note

nvim-lspconfig.luaにキーマッピングを設定しましたね😌 もしデフォルトから変更している場合は読み替えてください。

Signature Help

めっちゃ教えてくれる😆

Diagnostics

なんか嬉しくなってきたので、次はコードにイタズラをしてみましょう。

Work LS

やーい怒られたぁ🤣

lualine

Diagnositcsに関連して、もう一個やっておきましょう。おもむろにlualine.luaを開いて、こんなのを入れてみましょう。

extensions/lualine.lua

sections = {

-- (中略)

  lualine_c = {
    {
      'diagnostics',
      sources = { 'nvim_diagnostic', 'nvim_lsp' },
      sections = { 'error', 'warn', 'info', 'hint' },
      symbols = { error = ' ', warn = ' ', info = ' ', hint = '' },
    },
  },

-- (中略)

}

ってやってから、またちょっかい出してみると...❓

lualine-diagnostics

lualine上にErrorWarningの数が表示されるようになりましたね❗

It's My Life

だいぶ歩いてきました。

これさえやっておけば、他の言語のLSPを追加したくなった時も "基本的には" masonを操作するだけで良くなります。

結構な達成感じゃないでしょうか☺️

しかし、この章の冒頭にあるロードマップでも示されていましたが、 これはまだ序章にすぎません❗

Success

Better stand tall when they're calling you out

Don't bend, don't break, baby, don't back down

呼ばれたら立ち向かえ

自分を曲げるな、挫けるな、それから、一歩も引くなよ

I just wanna live while I'm alive

It's my life!

今 この瞬間を生きていたい

これが俺の人生だ!