vim.ui.select = require "popui.ui-overrider" local signError = vim.fn.sign_getdefined("DiagnosticSignError") signError["text"] = "" signError["texthl"] = "DiagnosticSignError" vim.fn.sign_define("DiagnosticSignError", signError) local signWarn = vim.fn.sign_getdefined("DiagnosticSignWarn") signWarn["text"] = "" signWarn["texthl"] = "DiagnosticSignWarn" vim.fn.sign_define("DiagnosticSignWarn", signWarn) local signHint = vim.fn.sign_getdefined("DiagnosticSignHint") signHint["text"] = "" signHint["texthl"] = "DiagnosticSignHint" vim.fn.sign_define("DiagnosticSignHint", signHint) vim.fn.sign_define("DiagnosticSignInfo", signHint) --- Completion Icons require("lspkind").init({}) --- Languages require "lspconfig".html.setup {} require "lspconfig".vimls.setup {} require "lspconfig".yamlls.setup {} local nvim_lsp = require("lspconfig") local on_attach = function(client, bufnr) local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end -- Mappings. local opts = {noremap = true, silent = true} buf_set_keymap("n", "gD", "lua vim.lsp.buf.declaration()", opts) buf_set_keymap("n", "K", "lua vim.lsp.buf.hover()", opts) buf_set_keymap("n", "", "lua vim.lsp.buf.signature_help()", opts) buf_set_keymap("n", "wa", "lua vim.lsp.buf.add_workspace_folder()", opts) buf_set_keymap("n", "wr", "lua vim.lsp.buf.remove_workspace_folder()", opts) buf_set_keymap("n", "wl", "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", opts) -- buf_set_keymap("n", "t", "lua vim.lsp.buf.type_definition()", opts) buf_set_keymap("n", "", "lua vim.lsp.buf.rename()", opts) buf_set_keymap("n", "a", "lua vim.lsp.buf.code_action()", opts) buf_set_keymap("n", "d", "lua vim.lsp.diagnostic.show_line_diagnostics()", opts) buf_set_keymap("n", "[d", "lua vim.lsp.diagnostic.goto_prev()", opts) buf_set_keymap("n", "]d", "lua vim.lsp.diagnostic.goto_next()", opts) buf_set_keymap("n", "q", "lua vim.lsp.diagnostic.set_loclist()", opts) end local capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()) require "lspconfig".jsonls.setup { on_attach = on_attach, flags = { debounce_text_changes = 150 }, settings = { json = require "json-schema" }, capabilities = capabilities } require "lspconfig".tsserver.setup { on_attach = function(client, bufnr) local ts_utils = require("nvim-lsp-ts-utils") ts_utils.setup { -- eslint_bin = "eslint_d", eslint_enable_diagnostics = false } ts_utils.setup_client(client) on_attach(client, bufnr) end, flags = { debounce_text_changes = 300 }, capabilities = capabilities } require "lspconfig".eslint.setup { on_attach = on_attach, handlers = { ["eslint/openDoc"] = function(_, result) if not result then return end print(result.url) return {} end }, capabilities = capabilities } --[[ require "lspconfig".java_language_server.setup { on_attach = on_attach, cmd = {"java-language-server"} } ]] local servers = {"pyright", "bashls", "clangd", "cssls", "texlab", "rust_analyzer"} for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup { on_attach = on_attach, flags = { debounce_text_changes = 150 }, capabilities = capabilities } end