mason-lspconfig.nvim

This ain’t a song for the broken-hearted

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

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

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

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

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

:help mason-lspconfig.nvim

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

No silent prayer for faith-departed

信じるものを失った者への 静かな祈りでもない

Requirements

:h mason-lspconfig-requirements

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

mason.nvimはneovim 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も呼び出す必要があるので、これもプラスで❗

And I ain’t gonna be just a face in the crowd

You’re gonna hear my voice when I shout it out loud

そして 俺はただ群衆の中の ほんのひとつ なんてものにはならない

俺が声を上げれば お前はその声を聞くことになる

Config

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

extensions/mason.lua

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

+require('mason-lspconfig').setup()

これだけです❗マジです。

地味ながらとっても重要なやつです。

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

It’s my life!

it’s now or never

これは 俺の人生だ!

今やるしかない

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

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

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

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

But I ain’t gonna live forever

I just wanna live while I’m alive

俺だって 永遠に生きるわけじゃない

命のある限り 生きたいだけだ

For the ones who stood their ground

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

(It’s my life) My heart is like an open highway

俺の心は どこまでも見通しの良いハイウェイのようだ

LspInfo

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

:LspInfo

としてみましょう。

lspinfo

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

Tip

:LspInfoはnvim-lspconfigの機能です😉

Like Frankiesaid, I did it my way

フランキーが歌ったように 俺は俺の道を歩いて来た

Signature Help

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

Note

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

Signature Help

めっちゃ教えてくれる😆

Diagnostics

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

Work LS

やーい怒られたぁ🤣

I just wanna live while I’m alive

命のある限りは ただ生き抜きたいんだ

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上にErrorやWarningの数が表示されるようになりましたね❗

It’s My Life

だいぶ歩いてきました。

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

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

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

Success

It’s my life

これが 俺の人生だ

This is for the ones who stood their ground

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

For Tommy and Gina who never backed down

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

Tomorrow’s gettin’ harder, make no mistake

明日はもっと厳しくなる、間違いない

Luck ain’t even lucky, gotta make your own breaks

運なんてものは 幸不幸ではなく、自分で拓かなきゃいけないことなんだ

It’s my life!

And it’s now or never

これは 俺の人生だ

今やるしかない

But I ain’t gonna live forever

俺だって 永遠に生きるわけじゃない

I just wanna live while I’m alive

命のある限り 生きたいだけだ

(It’s my life) My heart is like an open highway

俺の心は どこまでも見通しの良いハイウェイのようだ

Like Frankie said, I did it my way

フランキーが歌ったように 俺は俺の道を歩いて来た

I just wanna live while I’m alive

命のある限りは ただ生き抜きたい

'Cause it's my life

これが 俺の人生だからだ

Better stand tall when they’re callin’ you out

挑まれたのなら 正面から立ち向かえ

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

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