🎃

NeoVimでprisma-language-serverを使用する手順

2024/08/20に公開

株式会社トリドリのfujitani soraです。
NeoVim環境でPrismaのLSP適用とハイライト設定まで行う手順を解説します。
短めです。簡潔とも言えます。

prisma-language-server

.prismaファイルの言語サポートを受けるためにprisma-language-serverをインストールします。
Mason経由かnpm経由を選んでください。(自分はLSPをまとめて管理したいのでMasonから)

:MasonInstall prisma-language-server
npm install -g @prisma/language-server

.prismaファイルのload後に:LspInfoを実行してLSP情報を確認し、起動していればOK

syntax highlight

テキストが白だけだとやる気が出ないので、nvim_create_autocmdでハイライトを設定していきます。

  • 下記は自分の設定です。色を変えたい場合はnvim_set_hlのカラーコードを変更してください。
vim.api.nvim_create_autocmd("FileType", {
  pattern = "prisma",
  callback = function()
    vim.api.nvim_set_hl(0, 'SignColumn', { bg = 'NONE' })
    vim.api.nvim_set_hl(0, 'LineNr', { fg = '#777777', bg = 'NONE', bold = false })
    vim.api.nvim_set_hl(0, 'Normal', { fg = '#EEFFFF', bold = false })
    vim.api.nvim_set_hl(0, 'Search', { fg = '#FF99FF', bold = false })
    vim.api.nvim_set_hl(0, 'Keyword', { fg = '#66CCFF', bold = false })
    vim.api.nvim_set_hl(0, 'Function', { fg = '#46EEFF', bold = false })
    vim.api.nvim_set_hl(0, 'Identifier', { fg = '#0099FF', bold = false, undercurl = false})
    vim.api.nvim_set_hl(0, 'Statement', { fg = '#0099FF', bold = false, undercurl = false})
    vim.api.nvim_set_hl(0, 'String', { fg = '#EEFFFF', bold = false })
    vim.api.nvim_set_hl(0, 'Type', { fg = '#33CCFF', bold = false, undercurl = false})
    vim.api.nvim_set_hl(0, 'Special', { fg = '#CC99FF', bold = false })
    vim.api.nvim_set_hl(0, 'Directory', { fg = '#11FFFF', bold = false })
    vim.api.nvim_set_hl(0, 'DiagnosticUnderlineError', { sp = '#FFFAFA', undercurl = true })
    vim.api.nvim_set_hl(0, 'Symbol', { fg = '#FF3333', undercurl = false })
    vim.api.nvim_set_hl(0, 'Symbol', { fg = '#FF3333', undercurl = false })
    vim.api.nvim_set_hl(0, 'Character', { fg = '#FF3333', undercurl = false })
    vim.api.nvim_set_hl(0, 'Statement', { fg = '#0099CC', bold = false, undercurl = false })
    vim.api.nvim_set_hl(0, 'Variable', { fg = '#008080', bold = false, undercurl = false })
    vim.api.nvim_set_hl(0, 'Constant', { fg = '#339999', bold = false, undercurl = false })
  end,
})

補完とハイライトが効いていい感じです。
vim.lsp.buf.definitionを使用したDefinitionJumpも可能です。

toridori tech blog

Discussion