From e9dad4bb8cbe18416a30cc8cfb75e02246ecab71 Mon Sep 17 00:00:00 2001 From: Luca Matei Pintilie Date: Sat, 17 Sep 2022 22:40:08 +0200 Subject: Add more lsp configs and keybinds --- .config/nvim/lua/keybinds.lua | 39 ++++++++++++++----- .config/nvim/lua/lsp.lua | 88 ++++++++++++++++++++++++++++++++++++++++--- .config/nvim/lua/plugins.lua | 1 + 3 files changed, 113 insertions(+), 15 deletions(-) diff --git a/.config/nvim/lua/keybinds.lua b/.config/nvim/lua/keybinds.lua index c82587d..0846a1c 100644 --- a/.config/nvim/lua/keybinds.lua +++ b/.config/nvim/lua/keybinds.lua @@ -1,7 +1,8 @@ -vim.g.mapleader = " " +local telescope = require('telescope.builtin') +local wk = require("which-key") +local nt_api = require("nvim-tree.api") -vim.api.nvim_set_keymap("n", "n", ":NvimTreeToggle", - { noremap = true; silent = true }) +vim.g.mapleader = " " vim.api.nvim_command("nnoremap :m .+1==") vim.api.nvim_command("nnoremap :m .-2==") @@ -10,14 +11,16 @@ vim.api.nvim_command("inoremap :m .+1==gi") vim.api.nvim_command("vnoremap :m '>+1gv=gv") vim.api.nvim_command("vnoremap :m '<-2gv=gv") -vim.api.nvim_command( - "nnoremap :lua vim.lsp.buf.code_action()") -vim.api.nvim_command("nnoremap , :TroubleToggle") +vim.keymap.set("n", "n", nt_api.tree.toggle) +vim.keymap.set("n", "", vim.lsp.buf.code_action) +vim.keymap.set("n", "K", vim.lsp.buf.hover) +vim.keymap.set("n", "D", vim.lsp.buf.definition) +vim.keymap.set("n", "F", vim.lsp.buf.formatting) -vim.api.nvim_set_keymap("n", "f", ":Telescope find_files", - { noremap = true; silent = true }) -vim.api.nvim_set_keymap("n", "", ":Telescope buffers", - { noremap = true; silent = true }) +vim.keymap.set("n", "f", telescope.find_files) +vim.keymap.set("n", "", telescope.buffers) + +vim.api.nvim_command("nnoremap , :TroubleToggle") vim.keymap.set("n", "[", require("ufo").openAllFolds) vim.keymap.set("n", "]", require("ufo").closeAllFolds) @@ -25,3 +28,19 @@ vim.keymap.set("n", "r", require("renamer").rename) vim.opt.whichwrap = "<,>,h,l,[,]" +wk.register({ + [""] = "Quick Action"; + ["K"] = "Hover"; + ["D"] = "Definition"; + ["F"] = "Format"; + ["f"] = "Find files"; + [""] = "Show buffers"; + [","] = "Show errors"; + ["["] = "Open folds"; + ["]"] = "Close folds"; + ["r"] = "Rename"; + ["n"] = "Show file tree"; +}, { + prefix = ""; +}); + diff --git a/.config/nvim/lua/lsp.lua b/.config/nvim/lua/lsp.lua index 8f728f0..85da5ff 100644 --- a/.config/nvim/lua/lsp.lua +++ b/.config/nvim/lua/lsp.lua @@ -46,8 +46,8 @@ cmp.setup.cmdline(":", { -- Setup lspconfig. local capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp - .protocol - .make_client_capabilities()) + .protocol + .make_client_capabilities()) require("lspconfig")["denols"].setup { capabilities = capabilities } local lspkind = require("lspkind") @@ -66,14 +66,92 @@ cmp.setup { local on_attach = function(client, bufnr) vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") end +--Enable (broadcasting) snippet capability for completion +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true -require("lspconfig")["tsserver"].setup { on_attach = on_attach } -require("lspconfig")["denols"].setup { +local lsputils = require("lspconfig").util + +require("lspconfig").tsserver.setup({ + on_attach = on_attach, + root_dir = lsputils.root_pattern("package.json", "tsconfig.json", "jsconfig.json", ".git") +}) + +require("lspconfig").denols.setup { on_attach = on_attach; - init_options = { enable = true; unstable = true; config = "./deno.jsonc" }; + init_options = { + enable = true; + unstable = true; + config = "./deno.jsonc"; + }; root_dir = vim.loop.cwd; } +require('lspconfig').rust_analyzer.setup({}) + +require('lspconfig').sqls.setup({ + on_attach = function(client, bufnr) + require('sqls').on_attach(client, bufnr) + end +}) + +require'lspconfig'.omnisharp.setup { + cmd = { "omnisharp" }, + + -- Enables support for reading code style, naming convention and analyzer + -- settings from .editorconfig. + enable_editorconfig_support = true, + + -- If true, MSBuild project system will only load projects for files that + -- were opened in the editor. This setting is useful for big C# codebases + -- and allows for faster initialization of code navigation features only + -- for projects that are relevant to code that is being edited. With this + -- setting enabled OmniSharp may load fewer projects and may thus display + -- incomplete reference lists for symbols. + enable_ms_build_load_projects_on_demand = false, + + -- Enables support for roslyn analyzers, code fixes and rulesets. + enable_roslyn_analyzers = false, + + -- Specifies whether 'using' directives should be grouped and sorted during + -- document formatting. + organize_imports_on_format = false, + + -- Enables support for showing unimported types and unimported extension + -- methods in completion lists. When committed, the appropriate using + -- directive will be added at the top of the current file. This option can + -- have a negative impact on initial completion responsiveness, + -- particularly for the first few completion sessions after opening a + -- solution. + enable_import_completion = false, + + -- Specifies whether to include preview versions of the .NET SDK when + -- determining which version to use for project loading. + sdk_include_prereleases = true, + + -- Only run analyzers against open files when 'enableRoslynAnalyzers' is + -- true + analyze_open_documents_only = false, +} + +require('lspconfig').marksman.setup({ + root_dir = vim.loop.cwd; +}) + +require('lspconfig').jsonls.setup({ + capabilities = capabilities, + cmd = { "vscode-json-languageserver", "--stdio" } +}) + +require('lspconfig').html.setup({ + capabilities = capabilities, + cmd = { "vscode-html-languageserver", "--stdio" } +}) + +require('lspconfig').cssls.setup({ + capabilities = capabilities, +}) + vim.diagnostic.config({ virtual_text = true; signs = true; diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua index e7e42db..217a098 100644 --- a/.config/nvim/lua/plugins.lua +++ b/.config/nvim/lua/plugins.lua @@ -53,6 +53,7 @@ local PKGS = { { url = "https://github.com/onsails/lspkind.nvim.git" }; { url = "https://github.com/folke/trouble.nvim.git" }; { url = "https://github.com/folke/lsp-colors.nvim.git" }; + { url = "https://github.com/nanotee/sqls.nvim.git"}; -- Dev container { url = "https://codeberg.org/esensar/nvim-dev-container.git" }; -- cgit v1.2.3