diff options
Diffstat (limited to 'dotfiles/.config/nvim/lua.lua')
-rw-r--r-- | dotfiles/.config/nvim/lua.lua | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/dotfiles/.config/nvim/lua.lua b/dotfiles/.config/nvim/lua.lua new file mode 100644 index 0000000..5473841 --- /dev/null +++ b/dotfiles/.config/nvim/lua.lua @@ -0,0 +1,80 @@ +-- LSP configuration + +local lspconfig = require('lspconfig') + +local on_attach = function(client, _) + client.request = require('lspfuzzy').wrap_request(client.request) +end +vim.lsp.config('*', {on_attach = on_attach}) + +lspconfig.clangd.setup{ + filetypes = { "c", "cpp", "objc", "objcpp", "ch" }, + on_attach = on_attach, +} +lspconfig.gopls.setup{on_attach = on_attach} +lspconfig.pylsp.setup{on_attach = on_attach} +lspconfig.rust_analyzer.setup{on_attach = on_attach} +lspconfig.quick_lint_js.setup{on_attach = on_attach} +lspconfig.zls.setup{on_attach = on_attach} +require('lspfuzzy').setup{} + +if vim.fn.has('nvim-0.9') then + -- XXX: neovim's built-in C et al treesitter parsers are better, although + -- not ideal either. + require('nvim-treesitter.configs').setup{ + ensure_installed = { "go", "proto", "rust", "python", "lua", "comment", "zig" }, + highlight = { enable = true, disable = { "c", "cpp", "vim", "make" } }, + } +end + +local lsp_icons = { + Class = " ", + Color = " ", + Constant = " ", + Constructor = " ", + Enum = " ", + EnumMember = " ", + Field = " ", + File = " ", + Folder = " ", + Function = "ƒ ", + Interface = "", + Keyword = " ", + Method = "∫ ", + Module = " ", + Property = " ", + Snippet = " ", + Struct = " ", + Text = " ", + Unit = " ", + Value = " ", + Variable = " ", +} + + +function lsp_icons_setup() + local kinds = vim.lsp.protocol.CompletionItemKind + for i, kind in ipairs(kinds) do + kinds[i] = lsp_icons[kind] or kind + end +end + +lsp_icons_setup() + +if vim.fn.has('nvim-0.11') then + vim.diagnostic.config({ + signs = { + text = { + [vim.diagnostic.severity.ERROR] = '', + [vim.diagnostic.severity.WARN] = '', + [vim.diagnostic.severity.INFO] = '', + [vim.diagnostic.severity.HINT] = '', + }, + } + }) +else + vim.fn.sign_define('DiagnosticSignError', { text = '', texthl = 'DiagnosticSignError' }) + vim.fn.sign_define('DiagnosticSignWarn', { text = '', texthl = 'DiagnosticSignWarn' }) + vim.fn.sign_define('DiagnosticSignInfo', { text = '', texthl = 'DiagnosticSignInfo' }) + vim.fn.sign_define('DiagnosticSignHint', { text = '', texthl = 'DiagnosticSignHint' }) +end |