# LSP plugins # Core plugins {{{ [[plugins]] # nvim-lspconfig repo = 'neovim/nvim-lspconfig' depends = 'neodev.nvim' [[plugins]] # mason.nvim repo = 'williamboman/mason.nvim' lua_source = ''' -- <% ./dein_toml/mason.lua require("mason").setup({ ui = { border = "single", icons = { package_installed = "", package_pending = "", package_uninstalled = "✗ ", }, }, }) -- %> ''' [[plugins]] # mason-lspconfig.nvim repo = 'williamboman/mason-lspconfig.nvim' depends = ['nvim-lspconfig', 'mason.nvim', 'lspsaga.nvim'] on_ft = ['lua', 'php', 'python', 'toml', 'markdown', 'vim', 'yaml', 'dockerfile', 'sh'] hook_add = ''' " LSP keybinds nnoremap k Lspsaga hover_doc nnoremap K Lspsaga lsp_finder nnoremap r Lspsaga rename nnoremap o Lspsaga outline nnoremap c Lspsaga code_action nnoremap h lua vim.lsp.buf.signature_help() nnoremap f lua vim.lsp.buf.format() nnoremap i lua vim.lsp.buf.implementation nnoremap d Lspsaga peek_definition nnoremap D lua vim.lsp.buf.declaration() nnoremap e Lspsaga show_line_diagnostics nnoremap E Lspsaga show_cursor_diagnostics nnoremap q Lspsaga show_buf_diagnostics nnoremap [d Lspsaga diagnostic_jump_prev nnoremap ]d Lspsaga diagnostic_jump_next ''' lua_source = ''' -- <% ./dein_toml/lspconfig.lua local mason_lspconfig = require("mason-lspconfig") local lspconfig = require("lspconfig") --local keymap = vim.keymap.set local lsp = vim.lsp -- nvim lsp api. --local diag = vim.diagnostic -- nvim diagnostic api. mason_lspconfig.setup({ ensure_installed = { "lua_ls", "intelephense", "pyright", "yamlls", "bashls", }, automatic_installation = true, }) mason_lspconfig.setup_handlers({ function(server_name) local lsp_options = {} local capabilities = lsp.protocol.make_client_capabilities() capabilities.textDocument.completion.completionItem.snippetSupport = true if server_name == "lua_ls" then lsp_options.capabilities = capabilities end lspconfig[server_name].setup(lsp_options) end, }) -- %> ''' # }}} # Support plugins {{{ [[plugins]] # lspsaga.nvim repo = 'glepnir/lspsaga.nvim' lua_source = ''' -- <% ./dein_toml/lspsaga.lua require("lspsaga").setup({ ui = { theme = "round", border = "single", }, finder = { edit = { "o", "" }, vsplit = "v", split = "s", tabe = "t", quit = { "q", "" }, }, definition = { edit = "o", vsplit = "v", split = "s", tabe = "t", quit = "q", close = "", }, code_action = { num_shortcut = true, keys = { quit = "q", exec = "", }, }, lightbulb = { enable = true, enable_in_insert = false, sign = true, sign_priority = 40, virtual_text = false, }, rename = { quit = "q", exec = "", in_select = false, }, outline = { win_position = "right", win_with = "", win_width = 30, show_detail = true, auto_preview = false, auto_refresh = true, auto_close = true, custom_sort = nil, keys = { jump = "o", expand_collaspe = "u", quit = "q", }, }, symbol_in_winbar = { enable = true, separator = " ", hide_keyword = true, show_file = false, folder_level = 2, }, }) -- %> ''' [[plugins]] # denops-popup-preview.vim repo = 'matsui54/denops-popup-preview.vim' on_event = 'LspAttach' hook_source = ''' call popup_preview#enable() ''' [[plugins]] # denops-signature_help repo = 'matsui54/denops-signature_help' on_event = 'LspAttach' hook_source = ''' call signature_help#enable() ''' [[plugins]] # fidget.nvim repo = 'j-hui/fidget.nvim' on_event = 'LspAttach' lua_source = ''' -- <% ./dein_toml/fidget.lua require("fidget").setup({ text = { spinner = "dots", }, window = { border = "single", relative = "editor", }, sources = { ["null-ls"] = { ignore = true, }, }, }) -- %> ''' [[plugins]] # neodev.nvim repo = 'folke/neodev.nvim' lua_source = ''' require("neodev").setup({}) ''' # }}} # null_ls {{{ [[plugins]] # plenary.nvim(null-ls depends of this plugin) repo = 'nvim-lua/plenary.nvim' [[plugins]] # null-ls.nvim repo = 'jose-elias-alvarez/null-ls.nvim' depends = 'plenary.nvim' lua_source = ''' -- <% ./dein_toml/null_ls.lua local null_ls = require("null-ls") local code_actions = null_ls.builtins.code_actions local completion = null_ls.builtins.completion local diagnostics = null_ls.builtins.diagnostics local formatting = null_ls.builtins.formatting --local hover = null_ls.builtins.hover local sources = { code_actions.gitsigns, completion.vsnip, formatting.stylua, formatting.taplo, formatting.yamlfmt, formatting.textlint.with({ filetypes = { "markdown" }, prefer_local = "node_modules/.bin", }), diagnostics.yamllint, diagnostics.hadolint, diagnostics.textlint.with({ filetypes = { "markdown" }, prefer_local = "node_modules/.bin", }), } null_ls.setup({ border = "single", diagnostics_format = "[#{c}] #{m} (#{s})", sources = sources, }) -- %> ''' [[plugins]] # mason-null-ls.nvim repo = 'jay-babu/mason-null-ls.nvim' depends = 'null-ls.nvim' on_source = 'mason-lspconfig.nvim' lua_source = ''' -- <% ./dein_toml/mason_null_ls.lua require("mason-null-ls").setup({ ensure_installed = nil, automatic_installation = { exclude = { "textlint", }, }, automatic_setup = false, }) -- %> ''' # }}}