diff --git a/lazy-lock.json b/lazy-lock.json index 8486134..aece157 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,6 +1,7 @@ { "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, "FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" }, + "LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" }, "cmp-npm": { "branch": "main", "commit": "2337f109f51a09297596dd6b538b70ccba92b4e4" }, @@ -8,53 +9,58 @@ "cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" }, "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "crates.nvim": { "branch": "main", "commit": "c3fd47391de6999f4c939af89494d08443f71916" }, + "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, + "crates.nvim": { "branch": "main", "commit": "d1be10c1fcf4adb1eed2f2f510176db035efc68d" }, + "cspell.nvim": { "branch": "main", "commit": "508b64a23bd8f9473c59d083a92712486f6f138d" }, "editorconfig-vim": { "branch": "master", "commit": "8b7da79e9daee7a3f3a8d4fe29886b9756305aff" }, "fastaction.nvim": { "branch": "master", "commit": "89c64a4906df97e766208640f6e80a96d5e4abb4" }, "fidget.nvim": { "branch": "main", "commit": "d855eed8a06531a7e8fd0684889b2943f373c469" }, "formatter.nvim": { "branch": "master", "commit": "ad246d34ce7a32f752071ed81b09b94e6b127fad" }, - "gitsigns.nvim": { "branch": "main", "commit": "f4928ba14eb6c667786ac7d69927f6aee6719f1e" }, + "gitsigns.nvim": { "branch": "main", "commit": "f074844b60f9e151970fbcdbeb8a2cd52b6ef25a" }, "heirline.nvim": { "branch": "master", "commit": "0d797435e54645a5f98bad7ad6046aac1ef95c1e" }, - "lazy.nvim": { "branch": "main", "commit": "d731a6b005fd239e85e555bd57362382f6c1e461" }, + "lazy.nvim": { "branch": "main", "commit": "077102c5bfc578693f12377846d427f49bc50076" }, "lightspeed.nvim": { "branch": "main", "commit": "fcc72d8a4d5f4ebba62d8a3a0660f88f1b5c3b05" }, "lsp_signature.nvim": { "branch": "master", "commit": "a38da0a61c172bb59e34befc12efe48359884793" }, - "lspkind-nvim": { "branch": "master", "commit": "1735dd5a5054c1fb7feaf8e8658dbab925f4f0cf" }, + "lspkind-nvim": { "branch": "master", "commit": "cff4ae321a91ee3473a92ea1a8c637e3a9510aec" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "ba9c2f0b93deb48d0a99ae0e8d8dd36f7cc286d6" }, + "mason-null-ls.nvim": { "branch": "main", "commit": "de19726de7260c68d94691afb057fa73d3cc53e7" }, + "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, "mkdir.nvim": { "branch": "main", "commit": "c55d1dee4f099528a1853b28bb28caa802eba217" }, "monokai.nvim": { "branch": "master", "commit": "c295909d53c7577af7eece5ae83855384dd900a6" }, "neo-tree.nvim": { "branch": "main", "commit": "206241e451c12f78969ff5ae53af45616ffc9b72" }, "neotest": { "branch": "master", "commit": "32ff2ac21135a372a42b38ae131e531e64833bd3" }, "neotest-jest": { "branch": "main", "commit": "514fd4eae7da15fd409133086bb8e029b65ac43f" }, - "neotest-zig": { "branch": "main", "commit": "7cc48ba642a6acb96f377054cc4439c6a135fb5d" }, + "neotest-zig": { "branch": "main", "commit": "b3e6246c07d3d4f06075f33aea896affd25f0de9" }, + "none-ls.nvim": { "branch": "main", "commit": "cfa65d86e21eeb60544d5e823f6db43941322a53" }, "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, - "null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" }, - "nvim-autopairs": { "branch": "master", "commit": "78a4507bb9ffc9b00f11ae0ac48243d00cb9194d" }, + "nvim-autopairs": { "branch": "master", "commit": "e38c5d837e755ce186ae51d2c48e1b387c4425c6" }, "nvim-cmp": { "branch": "main", "commit": "d818fd0624205b34e14888358037fb6f5dc51234" }, "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, - "nvim-dap": { "branch": "master", "commit": "6f79b822997f2e8a789c6034e147d42bc6706770" }, + "nvim-dap": { "branch": "master", "commit": "bc03b83c94d0375145ff5ac6a6dcf28c1241e06f" }, "nvim-dap-ui": { "branch": "master", "commit": "a5606bc5958db86f8d92803bea7400ee26a8d7e4" }, - "nvim-lspconfig": { "branch": "master", "commit": "01e08d4bf1c35e5126b2ad5209725e4c552289ab" }, + "nvim-lspconfig": { "branch": "master", "commit": "fdc44768a09a65140aa00c92872a5381ad486485" }, "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" }, - "nvim-treesitter": { "branch": "master", "commit": "3076b9a98a130a3601a41c5e3def1ffb8b796367" }, - "nvim-ts-autotag": { "branch": "main", "commit": "1624866a1379fc1861797f0ed05899a9c1d2ff61" }, + "nvim-treesitter": { "branch": "master", "commit": "65310b64eee19a6e74e1b6f607a9f46f751290fe" }, + "nvim-ts-autotag": { "branch": "main", "commit": "dc5e1687ab76ee02e0f11c5ce137f530b36e98b3" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "6b5f95aa4d24f2c629a74f2c935c702b08dbde62" }, "nvim-vtsls": { "branch": "main", "commit": "45c6dfea9f83a126e9bfc5dd63430562b3f8af16" }, - "nvim-web-devicons": { "branch": "master", "commit": "c0cfc1738361b5da1cd0a962dd6f774cc444f856" }, + "nvim-web-devicons": { "branch": "master", "commit": "5be6c4e685618b99c3210a69375b38a1202369b4" }, "nvim-window-picker": { "branch": "main", "commit": "41cfaa428577c53552200a404ae9b3a0b5719706" }, "omnisharp-vim": { "branch": "master", "commit": "f9c5d3e3375e8b5688a4506e813cb21bdc7329b1" }, "packer.nvim": { "branch": "master", "commit": "ea0cc3c59f67c440c5ff0bbe4fb9420f4350b9a3" }, - "plantuml-syntax": { "branch": "master", "commit": "1592944444513c208ab5a087397ba987932af750" }, + "plantuml-syntax": { "branch": "master", "commit": "8fb95a3ae4354ca2322ef24803d8960fce519eb0" }, "playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" }, "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" }, "popfix": { "branch": "master", "commit": "bf3cc436df63cd535350d5ef1b951c91554d4b01" }, "popui.nvim": { "branch": "master", "commit": "4d903e46fdb5eef25fa79ef1b598f5340a2674b0" }, "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" }, "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, - "statuscol.nvim": { "branch": "main", "commit": "d6f7f5437c5404d958b88bb73e0721b1c0e09223" }, - "supermaven-nvim": { "branch": "main", "commit": "c8c05aff5f6925568a6973b94578c73382c80f0e" }, + "statuscol.nvim": { "branch": "main", "commit": "93d8bcda516fc86e11c03f9ef577bae9a72fba0e" }, + "supermaven-nvim": { "branch": "main", "commit": "d71257f431e190d9236d7f30da4c2d659389e91f" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, - "telescope.nvim": { "branch": "master", "commit": "bfcc7d5c6f12209139f175e6123a7b7de6d9c18a" }, + "telescope.nvim": { "branch": "master", "commit": "10b8a82b042caf50b78e619d92caf0910211973d" }, "template-string.nvim": { "branch": "main", "commit": "419bfb2e4d5f0e6ddd0d4435f85b69da0d88d524" }, - "todo-comments.nvim": { "branch": "main", "commit": "96fee098a90e7c09c9811aa7df71d773ba8b9b53" }, + "todo-comments.nvim": { "branch": "main", "commit": "8f45f353dc3649cb9b44cecda96827ea88128584" }, "typescript.nvim": { "branch": "main", "commit": "4de85ef699d7e6010528dcfbddc2ed4c2c421467" }, "vim-caddyfile": { "branch": "master", "commit": "24fe0720551883e407cb70ae1d7c03f162d1d5a0" }, "vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" } diff --git a/lua/plugins.lua b/lua/plugins.lua index b0677ca..23824f7 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -16,6 +16,27 @@ if not vim.loop.fs_stat(lazypath) then end vim.opt.rtp:prepend(lazypath) +local quick_prompts = { + ["Code actions"] = true +} +local selectX = function(n) + return function(bufnr) + local a = require("telescope.actions") + local s = require("telescope.actions.state") + local picker_name = s.get_current_picker(bufnr).prompt_title + if not quick_prompts[picker_name] then + -- Disable quick prompts to not press by accident + -- TODO: Still type the number + return + end + a.move_to_top(bufnr) + for _ = 1, n - 1 do + a.move_selection_next(bufnr) + end + a.select_default(bufnr) + end +end + require("lazy").setup( { "wbthomason/packer.nvim", @@ -47,24 +68,6 @@ require("lazy").setup( "windwp/nvim-autopairs" } }, - { - "Chaitanyabsprip/fastaction.nvim", - ---@type FastActionConfig - opts = { - popup = { - dismiss_keys = {"j", "k", "", "q", ""}, - border = "rounded", - hide_cursor = true, - highlight = { - divider = "FloatBorder", - key = "MoreMsg", - title = "Title", - window = "NormalFloat" - }, - title = "Select one of:" - } - } - }, { "numToStr/Comment.nvim", after = "nvim-ts-context-commentstring", @@ -89,14 +92,19 @@ require("lazy").setup( require "plugins/lsp" end, dependencies = { - "jose-elias-alvarez/null-ls.nvim", + "nvimtools/none-ls.nvim", + "davidmh/cspell.nvim", "RishabhRD/popfix", "onsails/lspkind-nvim", "ray-x/lsp_signature.nvim", "jose-elias-alvarez/typescript.nvim", "hood/popui.nvim", "OmniSharp/omnisharp-vim", - "yioneko/nvim-vtsls" + "yioneko/nvim-vtsls", + "williamboman/mason.nvim", + "williamboman/mason-lspconfig.nvim", + "neovim/nvim-lspconfig", + "jay-babu/mason-null-ls.nvim" } }, { @@ -118,6 +126,25 @@ require("lazy").setup( ["ui-select"] = { require("telescope.themes").get_dropdown(dropdown_configs) } + }, + defaults = { + mappings = { + i = { + [""] = "close", + ["n"] = {require("telescope.actions").move_selection_next, type = "action"}, + ["1"] = {selectX(1), type = "action"}, + ["2"] = {selectX(2), type = "action"}, + ["3"] = {selectX(3), type = "action"}, + ["4"] = {selectX(4), type = "action"}, + ["5"] = {selectX(5), type = "action"}, + ["6"] = {selectX(6), type = "action"}, + ["7"] = {selectX(7), type = "action"}, + ["8"] = {selectX(8), type = "action"}, + ["9"] = {selectX(9), type = "action"}, + ["0"] = {selectX(10), type = "action"} + }, + n = {} + } } } require("telescope").load_extension("ui-select") @@ -163,9 +190,15 @@ require("lazy").setup( "hrsh7th/cmp-nvim-lua", "hrsh7th/cmp-emoji", "David-Kunz/cmp-npm", - "hrsh7th/cmp-nvim-lsp-signature-help" + "hrsh7th/cmp-nvim-lsp-signature-help", + "saadparwaiz1/cmp_luasnip" } }, + { + "L3MON4D3/LuaSnip", + version = "v2.*", + build = "make install_jsregexp" + }, { "saecki/crates.nvim", event = {"BufRead Cargo.toml"}, diff --git a/lua/plugins/cmp.lua b/lua/plugins/cmp.lua index e60d0e4..51dc726 100644 --- a/lua/plugins/cmp.lua +++ b/lua/plugins/cmp.lua @@ -41,7 +41,7 @@ options = { }, snippet = { expand = function(args) - -- require "luasnip".lsp_expand(args.body) + require "luasnip".lsp_expand(args.body) end }, formatting = { @@ -85,7 +85,7 @@ options = { sources = { {name = "nvim_lsp"}, {name = "path"}, - -- {name = "luasnip"}, + {name = "luasnip"}, {name = "nvim_lua"}, -- {name = "buffer"}, {name = "emoji"}, diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 9262a44..938b2de 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -7,18 +7,59 @@ vim.fn.sign_define("DiagnosticSignHint", {text = " ", texthl = "DiagnosticSig vim.fn.sign_define("DapBreakpoint", {text = " ", texthl = "DiagnosticSignError"}) vim.fn.sign_define("DapStopped", {text = " ", texthl = "DiagnosticSignInfo"}) -vim.ui.select = require "popui.ui-overrider" +-- vim.ui.select = require "popui.ui-overrider" vim.ui.input = require "popui.input-overrider" +-- common servers +local common_servers = { + "pyright", + "bashls", + "clangd", + "cssls", + "texlab", + "prismals", + "solidity", + "zls", + -- "gleam", + "intelephense", + "vtsls", + "lua_ls", + "html", + "vimls", + "yamlls" +} +local extra_servers = { + "vtsls", + "eslint", + "jsonls", + "omnisharp", + "rust_analyzer" +} + +-- Ensure that required tools are installed +require("mason").setup() +require("mason-lspconfig").setup( + { + ensure_installed = vim.tbl_extend("force", common_servers, extra_servers) + } +) +require("mason-null-ls").setup( + { + ensure_installed = {"cspell"} + } +) + --- Completion Icons require("lspkind").init({}) --- Null-LS +local cspell = require("cspell") require("null-ls").setup( { sources = { - require("null-ls").builtins.diagnostics.cspell.with( + cspell.code_actions, + cspell.diagnostics.with( { diagnostics_postprocess = function(diagnostic) diagnostic.severity = vim.diagnostic.severity["WARN"] @@ -41,22 +82,6 @@ require("null-ls").setup( -- ) --- Languages -require "lspconfig".html.setup {} -require "lspconfig".vimls.setup {} -require "lspconfig".yamlls.setup { - settings = { - yaml = { - keyOrdering = false, - schemas = { - ["https://raw.githubusercontent.com/instrumenta/kubernetes-json-schema/master/master/all.json"] = "/*.k8s.yaml", - ["https://raw.githubusercontent.com/instrumenta/kubernetes-json-schema/master/master/all.json"] = "/*.k8s.yml", - ["https://raw.githubusercontent.com/instrumenta/kubernetes-json-schema/master/master/all.json"] = "k8s/*.yaml", - ["https://raw.githubusercontent.com/instrumenta/kubernetes-json-schema/master/master/all.json"] = "k8s/*.yml" - } - } - } -} - local nvim_lsp = require("lspconfig") local function codeAction() @@ -78,11 +103,11 @@ vim.api.nvim_set_keymap("n", "wl", "lua print(vim.inspect(vim.lsp.bu -- buf_set_keymap("n", "t", "lua vim.lsp.buf.type_definition()", opts) vim.api.nvim_set_keymap("n", "", "lua vim.lsp.buf.rename()", opts) -- vim.api.nvim_set_keymap("n", "a", "CodeActionMenu", opts) --- vim.keymap.set("n", "a", codeAction, opts) --- vim.keymap.set("v", "a", codeAction, opts) +vim.keymap.set("n", "a", codeAction, opts) +vim.keymap.set("v", "a", codeAction, opts) -vim.keymap.set("n", "a", 'lua require("fastaction").code_action()', {buffer = bufnr}) -vim.keymap.set("v", "a", "lua require('fastaction').range_code_action()", {buffer = bufnr}) +-- vim.keymap.set("n", "a", 'lua require("fastaction").code_action()', {buffer = bufnr}) +-- vim.keymap.set("v", "a", "lua require('fastaction').range_code_action()", {buffer = bufnr}) vim.api.nvim_set_keymap("n", "d", "lua vim.diagnostic.open_float()", opts) vim.api.nvim_set_keymap("n", "[d", "lua vim.diagnostic.goto_prev()", opts) @@ -109,38 +134,7 @@ require "lspconfig".jsonls.setup { 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.configs").vtsls = require("vtsls").lspconfig --- require("typescript").setup( --- { --- disable_commands = false, -- prevent the plugin from creating Vim commands --- debug = false, -- enable debug logging for commands --- go_to_source_definition = { --- fallback = true -- fall back to standard LSP definition on failure --- }, --- server = { --- -- pass options to lspconfig's setup method --- on_attach = on_attach, --- capabilities = capabilities --- } --- } --- ) require "lspconfig".eslint.setup { on_attach = on_attach, @@ -168,21 +162,7 @@ require "lspconfig".eslint.setup { on_attach = on_attach, cmd = {"java-language-server"} } ]] -local servers = { - "pyright", - "bashls", - "clangd", - "cssls", - "texlab", - "prismals", - "solidity", - "zls", - "gleam", - "intelephense", - "sourcekit", - "vtsls" -} -for _, lsp in ipairs(servers) do +for _, lsp in ipairs(common_servers) do nvim_lsp[lsp].setup { on_attach = on_attach, flags = { @@ -305,26 +285,3 @@ nvim_lsp.rust_analyzer.setup { } } } - --- Godot - --- vim.api.nvim_create_autocmd( --- "FileType", --- { --- -- This handler will fire when the buffer's 'filetype' is "python" --- pattern = "gd", --- callback = function(ev) --- vim.lsp.start( --- { --- name = "Godot C# Language Server", --- cmd = vim.lsp.rpc.connect("127.0.0.1", 6008), --- -- Set the "root directory" to the parent directory of the file in the --- -- current buffer (`ev.buf`) that contains either a "setup.py" or a --- -- "pyproject.toml" file. Files that share a root directory will reuse --- -- the connection to the same LSP server. --- root_dir = vim.fs.root(ev.buf, {".git"}) --- } --- ) --- end --- } --- )