From c0173b2956b7b18d5a62d8611b406d5157e245ae Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Wed, 22 Jan 2025 21:24:56 -0600 Subject: [PATCH] feat: add auto pairs, rainbow, and indent guides --- lazy-lock.json | 16 +++-- lua/plugins/completions.lua | 14 +++- lua/plugins/debugging.lua | 46 +++++++------ lua/plugins/treesitter.lua | 130 ++++++++++++++++++++++++------------ 4 files changed, 138 insertions(+), 68 deletions(-) diff --git a/lazy-lock.json b/lazy-lock.json index 524c742..3d9b57d 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -7,6 +7,7 @@ "copilot.vim": { "branch": "release", "commit": "87038123804796ca7af20d1b71c3428d858a9124" }, "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, "github-theme": { "branch": "main", "commit": "c106c9472154d6b2c74b74565616b877ae8ed31d" }, + "indent-blankline.nvim": { "branch": "master", "commit": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78" }, "lazy.nvim": { "branch": "main", "commit": "d8f26efd456190241afd1b0f5235fe6fdba13d4a" }, "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "e942edf5c85b6a2ab74059ea566cac5b3e1514a4" }, @@ -19,19 +20,22 @@ "neotest-playwright": { "branch": "master", "commit": "6266945039dac27a354de33d2f2a66e75485d5e9" }, "neotest-python": { "branch": "master", "commit": "a2861ab3c9a0bf75a56b11835c2bfc8270f5be7e" }, "neotest-vitest": { "branch": "main", "commit": "3e338b77700853f725856c37ff5a3cf9295bffae" }, - "none-ls.nvim": { "branch": "main", "commit": "af318216b744f2fe2d5afa6febb01f455ae61d6c" }, + "none-ls.nvim": { "branch": "main", "commit": "ed8f80849ef1ad31c2f74679fafdef7801091247" }, "nuget.nvim": { "branch": "main", "commit": "ce137d6503e96657d133b48946f8739c8600834b" }, "nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" }, + "nvim-autopairs": { "branch": "master", "commit": "3d02855468f94bf435db41b661b58ec4f48a06b7" }, "nvim-cmp": { "branch": "main", "commit": "8c82d0bd31299dbff7f8e780f5e06d2283de9678" }, "nvim-dap": { "branch": "master", "commit": "99807078c5089ed30e0547aa4b52c5867933f426" }, - "nvim-dap-ui": { "branch": "master", "commit": "727c032a8f63899baccb42a1c26f27687e62fc5e" }, - "nvim-lspconfig": { "branch": "master", "commit": "339ccc81e08793c3af9b83882a6ebd90c9cc0d3b" }, - "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" }, - "nvim-treesitter": { "branch": "master", "commit": "5da195ac3dfafd08d8b10756d975f0e01e1d563a" }, + "nvim-dap-ui": { "branch": "master", "commit": "0d5c37a43bc039c42a0a9bf801e53f77adf06a24" }, + "nvim-lspconfig": { "branch": "master", "commit": "d1871c84b218931cc758dbbde1fec8e90c6d465c" }, + "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, + "nvim-treesitter": { "branch": "master", "commit": "07bd1b53bf465e42d53253b48b7437892d6c45e8" }, + "nvim-treesitter-context": { "branch": "master", "commit": "bece284c5322ddf6946fa4bdc383a2bc033269d7" }, "nvim-web-devicons": { "branch": "master", "commit": "aafa5c187a15701a7299a392b907ec15d9a7075f" }, "omnisharp-extended-lsp.nvim": { "branch": "main", "commit": "ec1a2431f8872f650a85ed71c24f0715df2e49c2" }, - "onedarkpro.nvim": { "branch": "main", "commit": "0feb5f55dd777352f2dddd7478dd13d050864ee3" }, + "onedarkpro.nvim": { "branch": "main", "commit": "44775f8206ee43b692e7f3dc894ddc47996ee523" }, "plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" }, + "rainbow-delimiters.nvim": { "branch": "master", "commit": "85b80abaa09cbbc039e3095b2f515b3cf8cadd11" }, "telescope-themes": { "branch": "main", "commit": "9b7c368b83b82b53c0a6e9e977f8329e5f1fe269" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, diff --git a/lua/plugins/completions.lua b/lua/plugins/completions.lua index 9643d10..aeec1d6 100644 --- a/lua/plugins/completions.lua +++ b/lua/plugins/completions.lua @@ -1,4 +1,11 @@ return { + { + "windwp/nvim-autopairs", + event = "InsertEnter", + config = function() + require("nvim-autopairs").setup() + end, + }, { "hrsh7th/cmp-nvim-lsp", }, @@ -15,6 +22,9 @@ return { local luasnip = require("luasnip") local cmp = require("cmp") + local cmp_autopairs = require("nvim-autopairs.completion.cmp") + cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) + require("luasnip.loaders.from_vscode").lazy_load() cmp.setup({ @@ -44,7 +54,7 @@ return { else fallback() end - end, {}), + end, { "i", "s" }), [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() @@ -53,7 +63,7 @@ return { else fallback() end - end, {}), + end, { "i", "s" }), }), sources = cmp.config.sources({ { name = "nvim_lsp" }, diff --git a/lua/plugins/debugging.lua b/lua/plugins/debugging.lua index 46a412a..0cc2032 100644 --- a/lua/plugins/debugging.lua +++ b/lua/plugins/debugging.lua @@ -20,24 +20,24 @@ return { }, } - for _, language in ipairs({ "typescript", "javascript" }) do - dap.configurations[language] = { - { - type = "pwa-node", - request = "launch", - name = "Launch file", - program = "${file}", - cwd = "${workspaceFolder}", - }, - { - type = "pwa-node", - request = "attach", - name = "Attach", - processId = require('dap.utils').pick_process, - cwd = "${workspaceFolder}", - } - } - end + for _, language in ipairs({ "typescript", "javascript" }) do + dap.configurations[language] = { + { + type = "pwa-node", + request = "launch", + name = "Launch file", + program = "${file}", + cwd = "${workspaceFolder}", + }, + { + type = "pwa-node", + request = "attach", + name = "Attach", + processId = require("dap.utils").pick_process, + cwd = "${workspaceFolder}", + }, + } + end dap.configurations.javascript = { { @@ -80,6 +80,14 @@ return { end vim.keymap.set("n", "dt", dap.toggle_breakpoint, { desc = "Toggle breakpoint" }) - vim.keymap.set("n", "dc", dap.continue, { desc = "Continue" }) + + local continue = function() + if vim.fn.filereadable(".vscode/launch.json") then + require("dap.ext.vscode").load_launchjs() + end + dap.continue() + end + + vim.keymap.set("n", "dc", continue, { desc = "Continue" }) end, } diff --git a/lua/plugins/treesitter.lua b/lua/plugins/treesitter.lua index e4d67c8..a710bcb 100644 --- a/lua/plugins/treesitter.lua +++ b/lua/plugins/treesitter.lua @@ -1,44 +1,92 @@ return { - "nvim-treesitter/nvim-treesitter", - build = ":TSUpdate", - config = function() - local config = require("nvim-treesitter.configs") + { + "nvim-treesitter/nvim-treesitter-context", + config = function() + require("treesitter-context").setup() + end, + }, + { + "hiphish/rainbow-delimiters.nvim", + config = function() + require("rainbow-delimiters.setup").setup() + end, + }, + { + "lukas-reineke/indent-blankline.nvim", + main = "ibl", + config = function() - config.setup({ - auto_install = true, - ensure_installed = { - "bash", - "css", - "html", - "javascript", - "json", - "lua", - "python", - "typescript", - "tsx", - "vue", - "yaml", - "c_sharp", - "rust", - "csv", - "dockerfile", - "editorconfig", - "json", - "jsdoc", - "jsonc", - "markdown", - "markdown_inline", - "nginx", - "proto", - "sql", - "toml", - "ssh_config", - "xml", - }, - indent = { enabled = true }, - highlight = { - enabled = true, - }, - }) - end, + local highlight = { + "RainbowRed", + "RainbowYellow", + "RainbowBlue", + "RainbowOrange", + "RainbowGreen", + "RainbowViolet", + "RainbowCyan", + } + + local hooks = require("ibl.hooks") + + hooks.register(hooks.type.HIGHLIGHT_SETUP, function() + vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#E06C75" }) + vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#E5C07B" }) + vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#61AFEF" }) + vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#D19A66" }) + vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#98C379" }) + vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C678DD" }) + vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#56B6C2" }) + end) + + vim.g.rainbow_delimiters = { highlight = highlight } + + require("ibl").setup({ scope = { highlight = highlight } }) + + hooks.register(hooks.type.SCOPE_HIGHLIGHT, hooks.builtin.scope_highlight_from_extmark) + end, + }, + { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + config = function() + local config = require("nvim-treesitter.configs") + + config.setup({ + auto_install = true, + ensure_installed = { + "bash", + "css", + "html", + "javascript", + "json", + "lua", + "python", + "typescript", + "tsx", + "vue", + "yaml", + "c_sharp", + "rust", + "csv", + "dockerfile", + "editorconfig", + "json", + "jsdoc", + "jsonc", + "markdown", + "markdown_inline", + "nginx", + "proto", + "sql", + "toml", + "ssh_config", + "xml", + }, + indent = { enabled = true }, + highlight = { + enabled = true, + }, + }) + end, + }, }