aboutsummaryrefslogtreecommitdiff
path: root/dotfiles/.config/nvim/lua.lua
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles/.config/nvim/lua.lua')
-rw-r--r--dotfiles/.config/nvim/lua.lua80
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