diff --git a/common/.config/nvim/lua/plugins/coding-debugging.lua b/common/.config/nvim/lua/plugins/coding-debugging.lua new file mode 100644 index 0000000..dd18c68 --- /dev/null +++ b/common/.config/nvim/lua/plugins/coding-debugging.lua @@ -0,0 +1,8 @@ +return { + { + "folke/trouble.nvim", + config = function () + require("trouble").setup({}) + end + }, +} diff --git a/common/.config/nvim/lua/plugins/coding-highlighting.lua b/common/.config/nvim/lua/plugins/coding-highlighting.lua index df88ea6..0b6e44f 100644 --- a/common/.config/nvim/lua/plugins/coding-highlighting.lua +++ b/common/.config/nvim/lua/plugins/coding-highlighting.lua @@ -11,9 +11,9 @@ return { incremental_selection = { enable = true, keymaps = { - init_selection = "", - node_incremental = "", - scope_incremental = "", + init_selection = "", + node_incremental = "", + scope_incremental = "", node_decremental = "", } } @@ -24,7 +24,9 @@ return { "lukas-reineke/indent-blankline.nvim", main = "ibl", config = function() - require("ibl").setup({}) + require("ibl").setup({ + indent = { char = "┆" }, + }) end }, -- { "windwp/nvim-autopairs" }, @@ -36,5 +38,3 @@ return { -- end -- }, } - - diff --git a/common/.config/nvim/lua/plugins/coding-lsp.lua b/common/.config/nvim/lua/plugins/coding-lsp.lua index c8a0b1f..497f322 100644 --- a/common/.config/nvim/lua/plugins/coding-lsp.lua +++ b/common/.config/nvim/lua/plugins/coding-lsp.lua @@ -1,10 +1,30 @@ -return { - -- TODO: Configure following plugins in separate files +-- TODO: Autocompletion is a hit and miss. Way too complicated at this point +-- TODO: Try doing LazyVim.nvim instead +return { -- LSP Configuration + { + "neovim/nvim-lspconfig", + lazy = false, + config = function() + local capabilities = require("cmp_nvim_lsp").default_capabilities() + + local lspconfig = require("lspconfig") + lspconfig.tsserver.setup({ + capabilities = capabilities, + }) + lspconfig.html.setup({ + capabilities = capabilities, + }) + lspconfig.lua_ls.setup({ + capabilities = capabilities, + }) + end + }, { -- Provides :Mason command which installs Language Servers "williamboman/mason.nvim", + lazy = false, config = function() require("mason").setup() end @@ -12,105 +32,117 @@ return { { -- Helps to auto install Language Servers by specifying them "williamboman/mason-lspconfig.nvim", + lazy = false, + opts = { + auto_install = true, + }, config = function() - require("mason-lspconfig").setup({ - ensure_installed = { - "lua_ls", "bashls", "cssls", "dockerls", "emmet_ls", "jsonls", "tsserver", "marksman", - "pyre", "rust_analyzer", "sqlls", "taplo" - } + require("mason-lspconfig").setup({}) + end + }, + { + "hrsh7th/nvim-cmp", + lazy = false, + config = function() + local cmp = require("cmp") + require("luasnip.loaders.from_vscode").lazy_load() + + cmp.setup({ + window = { + documentation = cmp.config.window.bordered(), + completion = cmp.config.window.bordered(), + }, + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = true }), + }), + sources = cmp.config.sources( + { + { name = "nvim_lsp" }, + { name = "luasnip" }, + }, + { + { name = "buffer" }, + }), }) end }, { - "neovim/nvim-lspconfig", - config = function() - -- Hook up NVIM with the above installed Language Servers - local lspconfig = require("lspconfig") - lspconfig.lua_ls.setup({}) - lspconfig.bashls.setup({}) - lspconfig.cssls.setup({}) - lspconfig.dockerls.setup({}) - lspconfig.emmet_ls.setup({}) - lspconfig.jsonls.setup({}) - lspconfig.tsserver.setup({}) - lspconfig.marksman.setup({}) - lspconfig.pyre.setup({}) - lspconfig.rust_analyzer.setup({}) - lspconfig.sqlls.setup({}) - lspconfig.taplo.setup({}) - - -- LSP Keybindings - vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) - vim.keymap.set('n', ']d', vim.diagnostic.goto_next) - vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, {}) - vim.keymap.set('n', 'q', vim.diagnostic.setloclist) - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, {}) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {}) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, {}) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, {}) - -- vim.keymap.set('n', '', vim.lsp.buf.signature_help, {}) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, {}) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, {}) - vim.keymap.set('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, {}) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, {}) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, {}) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, {}) - vim.keymap.set('n', 'f', function() - vim.lsp.buf.format { async = true } - end, {}) - end + "hrsh7th/cmp-nvim-lsp", + lazy = false, + config = true, }, - - -- None-ls { + "L3MON4D3/LuaSnip", + version = "v2.*", + lazy = false, + dependencies = { + "rafamadriz/friendly-snippets", + "saadparwaiz1/cmp_luasnip", + }, + }, + { + -- Injects LSP's diagnostics, code actions & formatting + -- None-ls provides methods to add none-LSP sources to provide hooks to NeoVim + -- It also provides helpers to start and capture output of LS-CLI applications "nvimtools/none-ls.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, config = function() local null_ls = require("null-ls") - null_ls.setup({ sources = { - -- TODO: Segement these by language & Install required ones through :Mason - -- null_ls.builtins.formatting.stylua, - -- null_ls.builtins.formatting.beautysh, - -- null_ls.builtins.formatting.csharpier, - -- null_ls.builtins.formatting.jq, - -- null_ls.builtins.formatting.markdownlint_toc, - -- null_ls.builtins.formatting.nginx_beautifier, - -- null_ls.builtins.formatting.pg_format, - -- null_ls.builtins.formatting.prettierd, - -- null_ls.builtins.formatting.protolint, - -- null_ls.builtins.formatting.rustfmt, - -- null_ls.builtins.formatting.shellharden, - -- null_ls.builtins.formatting.shfmt, + -- Hover + null_ls.builtins.hover.dictionary, - -- null_ls.builtins.diagnostics.alex, - -- null_ls.builtins.diagnostics.codespell, - -- null_ls.builtins.diagnostics.eslint_d, - -- null_ls.builtins.diagnostics.jsonlint, - -- null_ls.builtins.diagnostics.luacheck, - -- null_ls.builtins.diagnostics.protolint, - -- null_ls.builtins.diagnostics.shellcheck, - -- null_ls.builtins.diagnostics.stylelint, - -- null_ls.builtins.diagnostics.tidy, - -- null_ls.builtins.diagnostics.tsc, - -- null_ls.builtins.diagnostics.vlint, - -- null_ls.builtins.diagnostics.yamllint, + -- Code Actions + null_ls.builtins.code_actions.eslint_d, + null_ls.builtins.code_actions.refactoring, + null_ls.builtins.code_actions.shellcheck, - -- null_ls.builtins.code_actions.gitsigns, - -- null_ls.builtins.code_actions.eslint_d, - -- null_ls.builtins.code_actions.refactoring, - -- null_ls.builtins.code_actions.shellcheck, + -- Formattings + null_ls.builtins.formatting.prettierd, + null_ls.builtins.formatting.beautysh, + null_ls.builtins.formatting.buf, + null_ls.builtins.formatting.cs, + null_ls.builtins.formatting.jq, + null_ls.builtins.formatting.rustfmt, - -- null_ls.builtins.completion.spell, - -- null_ls.builtins.completion.tags, - -- null_ls.builtins.completion.luasnip, + -- Completions + null_ls.builtins.completion.luasnip, + null_ls.builtins.completion.spell, + + -- Diagnostics + null_ls.builtins.diagnostics.buf, + null_ls.builtins.diagnostics.eslint_d, + null_ls.builtins.diagnostics.jsonlint, + null_ls.builtins.diagnostics.luacheck, + null_ls.builtins.diagnostics.markdownlint, + null_ls.builtins.diagnostics.shellcheck, + null_ls.builtins.diagnostics.stylelint, + null_ls.builtins.diagnostics.tsc, } }) - vim.keymap.set("n", "gf", vim.lsp.buf.format, {}) + vim.keymap.set("n", "K", vim.lsp.buf.hover, {}) + vim.keymap.set("n", "gd", vim.lsp.buf.definition, {}) + vim.keymap.set("n", "gr", vim.lsp.buf.references, {}) + + vim.keymap.set("n", "rr", vim.lsp.buf.rename, {}) + vim.keymap.set("n", "df", vim.lsp.buf.format, {}) + + vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) + vim.keymap.set('n', ']d', vim.diagnostic.goto_next) + vim.keymap.set("n", "da", vim.lsp.buf.code_action, {}) + vim.keymap.set('n', 'do', vim.diagnostic.open_float) + vim.keymap.set('n', 'dq', vim.diagnostic.setloclist) end }, - } diff --git a/common/.config/nvim/lua/plugins/coding-others.lua b/common/.config/nvim/lua/plugins/coding-others.lua new file mode 100644 index 0000000..3e5d4ab --- /dev/null +++ b/common/.config/nvim/lua/plugins/coding-others.lua @@ -0,0 +1,5 @@ +return { + { + "theprimeagen/refactoring.nvim" + }, +}