# LSを起動するための設定とか色々してくれる [[plugins]] repo = 'neovim/nvim-lspconfig' on_event = 'FileType' hooks_file = '$DEIN_CONFIG_DIR/nvim-lspconfig.lua' # lua language serverにneovimのlua apiの情報を渡してくれる [[plugins]] repo = 'folke/neodev.nvim' on_source = 'nvim-lspconfig' lua_source = ''' require('neodev').setup { library = { enabled = true, runtime = true, types = true, plugins = true, }, setup_jsonls = true, lspconfig = true, } ''' # neovimで使う関連ツール(LS/formatter/linter)をインストールする [[plugins]] repo = 'williamboman/mason.nvim' on_cmd = ['Mason', 'MasonInstall'] lua_source = ''' -- ~/.cache/nvim/ が存在しないとエラーになる local cache_dir = vim.fn.stdpath 'cache' if 0 == vim.fn.isdirectory(cache_dir) then os.execute(('mkdir %s'):format(cache_dir)) end require('mason').setup() ''' # mason.nvimとnvim-lspconfigの仲を取り持ってくれるらしい # なんで必要なのかあんま説明できない [[plugins]] repo = 'williamboman/mason-lspconfig.nvim' depends = 'mason.nvim' on_source = 'nvim-lspconfig' lua_source = ''' require('mason-lspconfig').setup() ''' # LSのプログレスを格好良く表示してくれる [[plugins]] repo = 'j-hui/fidget.nvim' on_event = 'LspAttach' lua_source = ''' require('fidget').setup {} ''' # formatterとかlinterをneovimのLS用インターフェースを介して実行するやつ [[plugins]] repo = 'jose-elias-alvarez/null-ls.nvim' depends = 'plenary.nvim' on_event = ['BufReadPost', 'BufNewFile'] lua_source = ''' local null_ls = require 'null-ls' null_ls.setup { sources = { null_ls.builtins.formatting.stylua, null_ls.builtins.formatting.csharpier, null_ls.builtins.diagnostics.shellcheck.with { extra_args = function(params) return params.ft == 'PKGBUILD' and { '--excluded', 'SC2148,SC2034,SC2154,SC2155,SC2164' } or {} end, extra_filetypes = { 'PKGBUILD' } }, null_ls.builtins.diagnostics.markdownlint, }, } ''' # 使ってない変数を暗くハイライトしてくれる [[plugins]] repo = 'zbirenbaum/neodim' on_event = 'LspAttach' lua_source = ''' require('neodim').setup { alpha = 0.75, blend_color = '#000000', update_in_insert = { enable = true, delay = 100, }, hide = { virtual_text = true, signs = true, underline = true, }, } ''' # winbarに class->function->if みたいな現在のカーソル位置のコンテキストを表示する [[plugins]] repo = 'SmiteshP/nvim-navic' lua_add = ''' vim.api.nvim_create_autocmd('LspAttach', { group = 'VimRc', callback = function(ctx) local client = vim.lsp.get_client_by_id(ctx.data.client_id) if client.server_capabilities.documentSymbolProvider then require('nvim-navic').attach(client, ctx.buf) end end, }) '''