nvim(lsp): configure diagnostics and pyright
Prithu Goswami pg@prithu.dev
Sat, 10 Sep 2022 15:59:35 +0530
3 files changed,
84 insertions(+),
2 deletions(-)
M
config/nvim/init.lua
→
config/nvim/init.lua
@@ -99,7 +99,7 @@ -- Instead of true it can also be a list of languages
additional_vim_regex_highlighting = true, }, indent = { - enable = true, + enable = false, disable = {"hcl"} } }
M
config/nvim/lua/lsp/init.lua
→
config/nvim/lua/lsp/init.lua
@@ -3,5 +3,86 @@ if not status_ok then
return end +local signs = { + { name = "DiagnosticSignError", text = "" }, + { name = "DiagnosticSignWarn", text = "" }, + { name = "DiagnosticSignHint", text = "" }, + { name = "DiagnosticSignInfo", text = "" }, +} -lspconfig.pyright.setup{} +for _, sign in ipairs(signs) do + vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) +end + +local config = { + virtual_text = false, + signs = { + active = signs, + }, + update_in_insert = true, + underline = true, + severity_sort = true, + float = { + focusable = false, + style = "minimal", + border = "none", + -- max_width = 80, + source = "always", + header = "", + prefix = "", + }, +} + +vim.diagnostic.config(config) +vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { + border = "rounded", +}) +local capabilities = vim.lsp.protocol.make_client_capabilities() +local status_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") +if not status_ok then + return +end +capabilities = cmp_nvim_lsp.update_capabilities(capabilities) + +local opts = { noremap=true, silent=true } +vim.keymap.set('n', 'gl', vim.diagnostic.open_float, opts) +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) +vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, opts) + +local on_attach = function(client, bufnr) + -- Enable completion triggered by <c-x><c-o> + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + -- See `:help vim.lsp.*` for documentation on any of the below functions + local bufopts = { noremap=true, silent=true, buffer=bufnr } + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) + vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts) + vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts) + vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts) + vim.keymap.set('n', '<space>wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, bufopts) + vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts) + vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts) + vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) + vim.keymap.set('n', '<space>f', vim.lsp.buf.formatting, bufopts) +end + + +lspconfig.pyright.setup{ + capabilities = capabilities, + on_attach = on_attach, + settings = { + python = { + analysis = { + typeCheckingMode = "off" + } + } + } +}
M
home/.bashrc
→
home/.bashrc
@@ -108,6 +108,7 @@ alias tse="timesheetctl e"
# generate a qrcode from contents of clipboard alias qrclip="xsel -ob | qrencode -o - | feh --force-aliasing -Z -" alias b="buku --suggest" +alias lncli="lncli -n testnet" #alias ls='ls'