diff --git a/.github/README.md b/.github/README.md index 48100ce..8f3ec47 100644 --- a/.github/README.md +++ b/.github/README.md @@ -15,7 +15,7 @@
-[![Neovim Minimum Version](https://img.shields.io/badge/Neovim-0.8.3-blueviolet.svg?style=flat-square&logo=Neovim&color=90E59A&logoColor=white)](https://github.com/neovim/neovim) +[![Neovim Minimum Version](https://img.shields.io/badge/Neovim-0.9.0-blueviolet.svg?style=flat-square&logo=Neovim&color=90E59A&logoColor=white)](https://github.com/neovim/neovim) [![GitHub Issues](https://img.shields.io/github/issues/NvChad/NvChad.svg?style=flat-square&label=Issues&color=d77982)](https://github.com/NvChad/NvChad/issues) [![Discord](https://img.shields.io/discord/869557815780470834?color=738adb&label=Discord&logo=discord&logoColor=white&style=flat-square)](https://discord.gg/gADmkJb9Fb) [![Matrix](https://img.shields.io/badge/Matrix-40aa8b.svg?style=flat-square&logo=Matrix&logoColor=white)](https://matrix.to/#/#nvchad:matrix.org) @@ -37,7 +37,7 @@ - Lazy loading is done 93% of the time meaning that plugins will not be loaded by default, they will be loaded only when required also at specific commands, events etc. This lowers the startuptime and it was like 0.07~ secs tested on an old pentium machine 1.4ghz + 4gb ram & HDD. -- NvChad isnt a framework! Its supposed to be used as a "base" config, so users could tweak the defaults well, can also remove the things they dont like in the default config and build their config on top of it. Users can tweak the entire default config while staying in their custom config (lua/custom dir). This is the control center of the user's config and gitignored so the users can stay update to-date with NvChad's latest config (main branch) while still controlling it with their chadrc (file that controls entire custom dir) +- NvChad isn't a framework! It's supposed to be used as a "base" config, so users can tweak the defaults well, and also remove the things they don't like in the default config and build their config on top of it. Users can tweak the entire default config while staying in their custom config (lua/custom dir). This is the control center of the user's config and gitignored so the users can stay up-to-date with NvChad's latest config (main branch) while still controlling it with their chadrc (file that controls entire custom dir). ## Theme Showcase @@ -88,8 +88,7 @@ A fuzzy file finder, picker, sorter, previewer and much more: - Many beautiful themes, theme toggler by our [base46 plugin](https://github.com/NvChad/base46) - Inbuilt terminal toggling & management with [Nvterm](https://github.com/NvChad/nvterm) -- NvChad updater, hide & unhide terminal buffers with [NvChad extensions](https://github.com/NvChad/extensions) -- Lightweight & performant ui plugin with [NvChad UI](https://github.com/NvChad/ui) It provides statusline modules, tabufline ( tabs + buffer manager) , beautiful cheatsheets and much more! +- Lightweight & performant ui plugin with [NvChad UI](https://github.com/NvChad/ui) It provides statusline modules, tabufline ( tabs + buffer manager) , beautiful cheatsheets, NvChad updater, hide & unhide terminal buffers, theme switcher and much more! - File navigation with [nvim-tree.lua](https://github.com/kyazdani42/nvim-tree.lua) - Beautiful and configurable icons with [nvim-web-devicons](https://github.com/kyazdani42/nvim-web-devicons) - Git diffs and more with [gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim) @@ -113,7 +112,7 @@ A fuzzy file finder, picker, sorter, previewer and much more: If you like NvChad and would like to support & appreciate it via donation then I'll gladly accept it. [![kofi](https://img.shields.io/badge/Ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/siduck) -[![paypal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://paypal.me/siduck76) +[![paypal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://paypal.me/siduck13) [![buymeacoffee](https://img.shields.io/badge/Buy_Me_A_Coffee-FFDD00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/siduck) [![patreon](https://img.shields.io/badge/Patreon-F96854?style=for-the-badge&logo=patreon&logoColor=white)](https://www.patreon.com/siduck) diff --git a/.gitignore b/.gitignore index b513d1c..ea870e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ spell ftplugin +syntax coc-settings.json .luarc.json lazy-lock.json +after +**/.DS_Store diff --git a/.ignore b/.ignore new file mode 100644 index 0000000..42677fb --- /dev/null +++ b/.ignore @@ -0,0 +1 @@ +!/lua/custom/ diff --git a/lua/core/bootstrap.lua b/lua/core/bootstrap.lua index b00fc09..ef19550 100644 --- a/lua/core/bootstrap.lua +++ b/lua/core/bootstrap.lua @@ -1,18 +1,24 @@ local M = {} +local fn = vim.fn M.echo = function(str) vim.cmd "redraw" vim.api.nvim_echo({ { str, "Bold" } }, true, {}) end +local function shell_call(args) + local output = fn.system(args) + assert(vim.v.shell_error == 0, "External call failed with error code: " .. vim.v.shell_error .. "\n" .. output) +end + M.lazy = function(install_path) ------------- base46 --------------- - local lazy_path = vim.fn.stdpath "data" .. "/lazy/base46" + local lazy_path = fn.stdpath "data" .. "/lazy/base46" M.echo " Compiling base46 theme to bytecode ..." local base46_repo = "https://github.com/NvChad/base46" - vim.fn.system { "git", "clone", "--depth", "1", "-b", "v2.0", base46_repo, lazy_path } + shell_call { "git", "clone", "--depth", "1", "-b", "v2.0", base46_repo, lazy_path } vim.opt.rtp:prepend(lazy_path) require("base46").compile() @@ -20,32 +26,26 @@ M.lazy = function(install_path) --------- lazy.nvim --------------- M.echo " Installing lazy.nvim & plugins ..." local repo = "https://github.com/folke/lazy.nvim.git" - vim.fn.system { "git", "clone", "--filter=blob:none", "--branch=stable", repo, install_path } + shell_call { "git", "clone", "--filter=blob:none", "--branch=stable", repo, install_path } vim.opt.rtp:prepend(install_path) -- install plugins require "plugins" - -- mason packages & show post_boostrap screen - require "nvchad.post_bootstrap"() + -- mason packages & show post_bootstrap screen + require "nvchad.post_install"() end M.gen_chadrc_template = function() - if not vim.api.nvim_get_runtime_file("lua/custom/chadrc.lua", false)[1] then - local path = vim.fn.stdpath "config" .. "/lua/custom/" - local input = vim.fn.input "Do you want to install example custom config? (y/N) : " + local path = fn.stdpath "config" .. "/lua/custom" - -- clone example_config repo - if input == "y" then - M.echo "cloning example custom config repo ..." - vim.fn.system { "git", "clone", "--depth", "1", "https://github.com/NvChad/example_config", path } - vim.fn.delete(path .. ".git", "rf") - else - -- use very minimal chadrc - vim.fn.mkdir(path, "p") + if fn.isdirectory(path) ~= 1 then + -- use very minimal chadrc + fn.mkdir(path, "p") - local file = io.open(path .. "chadrc.lua", "w") - file:write "---@type ChadrcConfig \n local M = {}\n M.ui = {theme = 'onedark'}\n return M" + local file = io.open(path .. "/chadrc.lua", "w") + if file then + file:write "---@type ChadrcConfig\nlocal M = {}\n\nM.ui = { theme = 'onedark' }\n\nreturn M" file:close() end end diff --git a/lua/core/default_config.lua b/lua/core/default_config.lua index 0f2b957..9e6ecfa 100644 --- a/lua/core/default_config.lua +++ b/lua/core/default_config.lua @@ -90,6 +90,6 @@ M.plugins = "" -- path i.e "custom.plugins", so make custom/plugins.lua file M.lazy_nvim = require "plugins.configs.lazy_nvim" -- config for lazy.nvim startup options -M.mappings = {} +M.mappings = require "core.mappings" return M diff --git a/lua/core/init.lua b/lua/core/init.lua index 194d0ba..43d4211 100644 --- a/lua/core/init.lua +++ b/lua/core/init.lua @@ -59,8 +59,8 @@ for _, provider in ipairs { "node", "perl", "python3", "ruby" } do end -- add binaries installed by mason.nvim to path -local is_windows = vim.loop.os_uname().sysname == "Windows_NT" -vim.env.PATH = vim.env.PATH .. (is_windows and ";" or ":") .. vim.fn.stdpath "data" .. "/mason/bin" +local is_windows = vim.fn.has("win32") ~= 0 +vim.env.PATH = vim.fn.stdpath "data" .. "/mason/bin" .. (is_windows and ";" or ":") .. vim.env.PATH -------------------------------------- autocmds ------------------------------------------ local autocmd = vim.api.nvim_create_autocmd @@ -74,11 +74,10 @@ autocmd("FileType", { }) -- reload some chadrc options on-save -vim.api.nvim_create_autocmd("BufWritePost", { - pattern = vim.tbl_map( - vim.fs.normalize, - vim.fn.glob(vim.fn.stdpath "config" .. "/lua/custom/**/*.lua", true, true, true) - ), +autocmd("BufWritePost", { + pattern = vim.tbl_map(function(path) + return vim.fs.normalize(vim.loop.fs_realpath(path)) + end, vim.fn.glob(vim.fn.stdpath "config" .. "/lua/custom/**/*.lua", true, true, true)), group = vim.api.nvim_create_augroup("ReloadNvChad", {}), callback = function(opts) @@ -97,17 +96,49 @@ vim.api.nvim_create_autocmd("BufWritePost", { vim.g.transparency = true -- statusline - require("plenary.reload").reload_module("nvchad_ui.statusline." .. config.ui.statusline.theme) - vim.opt.statusline = "%!v:lua.require('nvchad_ui.statusline." .. config.ui.statusline.theme .. "').run()" + require("plenary.reload").reload_module("nvchad.statusline." .. config.ui.statusline.theme) + vim.opt.statusline = "%!v:lua.require('nvchad.statusline." .. config.ui.statusline.theme .. "').run()" + + -- tabufline + if config.ui.tabufline.enabled then + require("plenary.reload").reload_module "nvchad.tabufline.modules" + vim.opt.tabline = "%!v:lua.require('nvchad.tabufline.modules').run()" + end require("base46").load_all_highlights() -- vim.cmd("redraw!") end, }) +-- user event that loads after UIEnter + only if file buf is there +vim.api.nvim_create_autocmd({ "UIEnter", "BufReadPost", "BufNewFile" }, { + group = vim.api.nvim_create_augroup("NvFilePost", { clear = true }), + callback = function(args) + local file = vim.api.nvim_buf_get_name(args.buf) + local buftype = vim.api.nvim_buf_get_option(args.buf, "buftype") + + if not vim.g.ui_entered and args.event == "UIEnter" then + vim.g.ui_entered = true + end + + if file ~= "" and buftype ~= "nofile" and vim.g.ui_entered then + vim.api.nvim_exec_autocmds("User", { pattern = "FilePost", modeline = false }) + vim.api.nvim_del_augroup_by_name "NvFilePost" + + vim.schedule(function() + vim.api.nvim_exec_autocmds("FileType", {}) + + if vim.g.editorconfig then + require("editorconfig").config(args.buf) + end + end, 0) + end + end, +}) + -------------------------------------- commands ------------------------------------------ local new_cmd = vim.api.nvim_create_user_command new_cmd("NvChadUpdate", function() - require "nvchad.update"() + require "nvchad.updater"() end, {}) diff --git a/lua/core/mappings.lua b/lua/core/mappings.lua index 8d41649..e9036cc 100644 --- a/lua/core/mappings.lua +++ b/lua/core/mappings.lua @@ -18,6 +18,7 @@ M.general = { n = { ["n"] = { ":noh ", "Clear highlights" }, ["rr"] = { ":source $MYVIMRC", "Reload config file" }, + [""] = { " noh ", "Clear highlights" }, -- switch between windows [""] = { "h", "Window left" }, [""] = { "l", "Window right" }, @@ -61,6 +62,13 @@ M.general = { -- new buffer -- ["b"] = { " enew ", "New buffer" }, -- ["ch"] = { " NvCheatsheet ", "Mapping cheatsheet" }, + + ["fm"] = { + function() + vim.lsp.buf.format { async = true } + end, + "LSP formatting", + }, }, t = { @@ -70,6 +78,8 @@ M.general = { v = { -- [""] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } }, -- [""] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } }, + ["<"] = { ""] = { ">gv", "Indent line" }, }, x = { @@ -147,14 +157,14 @@ M.tabufline = { -- cycle through buffers [""] = { function() - require("nvchad_ui.tabufline").tabuflineNext() + require("nvchad.tabufline").tabuflineNext() end, "Goto next buffer", }, [""] = { function() - require("nvchad_ui.tabufline").tabuflinePrev() + require("nvchad.tabufline").tabuflinePrev() end, "Goto prev buffer", }, @@ -162,7 +172,7 @@ M.tabufline = { -- close buffer + hide terminal buffer ["x"] = { function() - require("nvchad_ui.tabufline").close_buffer() + require("nvchad.tabufline").close_buffer() end, "Close buffer", }, @@ -240,7 +250,7 @@ M.lspconfig = { ["ra"] = { function() - require("nvchad_ui.renamer").open() + require("nvchad.renamer").open() end, "LSP rename", }, @@ -259,7 +269,7 @@ M.lspconfig = { "LSP references", }, - ["f"] = { + ["lf"] = { function() vim.diagnostic.open_float { border = "rounded" } end, @@ -268,14 +278,14 @@ M.lspconfig = { ["[d"] = { function() - vim.diagnostic.goto_prev({ float = { border = "rounded" }}) + vim.diagnostic.goto_prev { float = { border = "rounded" } } end, "Goto prev", }, ["]d"] = { function() - vim.diagnostic.goto_next({ float = { border = "rounded" }}) + vim.diagnostic.goto_next { float = { border = "rounded" } } end, "Goto next", }, @@ -287,13 +297,6 @@ M.lspconfig = { -- "Diagnostic setloclist", -- }, - ["fm"] = { - function() - vim.lsp.buf.format { async = true } - end, - "LSP formatting", - }, - ["wa"] = { function() vim.lsp.buf.add_workspace_folder() @@ -315,6 +318,15 @@ M.lspconfig = { "List workspace folders", }, }, + + v = { + ["ca"] = { + function() + vim.lsp.buf.code_action() + end, + "LSP code action", + }, + }, } M.nvimtree = { diff --git a/lua/core/utils.lua b/lua/core/utils.lua index 4c44dc6..8b2a03d 100644 --- a/lua/core/utils.lua +++ b/lua/core/utils.lua @@ -8,11 +8,11 @@ M.load_config = function() if chadrc_path then local chadrc = dofile(chadrc_path) - config.mappings = M.remove_disabled_keys(chadrc.mappings, require "core.mappings") + config.mappings = M.remove_disabled_keys(chadrc.mappings, config.mappings) config = merge_tb("force", config, chadrc) + config.mappings.disabled = nil end - config.mappings.disabled = nil return config end diff --git a/lua/plugins/configs/cmp.lua b/lua/plugins/configs/cmp.lua index 32e0129..444da73 100644 --- a/lua/plugins/configs/cmp.lua +++ b/lua/plugins/configs/cmp.lua @@ -15,7 +15,7 @@ local formatting_style = { fields = field_arrangement[cmp_style] or { "abbr", "kind", "menu" }, format = function(_, item) - local icons = require("nvchad_ui.icons").lspkind + local icons = require "nvchad.icons.lspkind" local icon = (cmp_ui.icons and icons[item.kind]) or "" if cmp_style == "atom" or cmp_style == "atom_colored" then @@ -52,7 +52,7 @@ local options = { window = { completion = { side_padding = (cmp_style ~= "atom" and cmp_style ~= "atom_colored") and 1 or 0, - winhighlight = "Normal:CmpPmenu,CursorLine:CmpSel,Search:PmenuSel", + winhighlight = "Normal:CmpPmenu,CursorLine:CmpSel,Search:None", scrollbar = false, }, documentation = { @@ -76,8 +76,8 @@ local options = { [""] = cmp.mapping.complete(), [""] = cmp.mapping.close(), [""] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = false, + behavior = cmp.ConfirmBehavior.Insert, + select = true, }, [""] = cmp.mapping(function(fallback) if cmp.visible() then diff --git a/lua/plugins/configs/lspconfig.lua b/lua/plugins/configs/lspconfig.lua index fbce3a8..37685e3 100644 --- a/lua/plugins/configs/lspconfig.lua +++ b/lua/plugins/configs/lspconfig.lua @@ -1,22 +1,21 @@ dofile(vim.g.base46_cache .. "lsp") -require "nvchad_ui.lsp" +require "nvchad.lsp" local M = {} local utils = require "core.utils" -- export on_attach & capabilities for custom lspconfigs - M.on_attach = function(client, bufnr) - client.server_capabilities.documentFormattingProvider = false - client.server_capabilities.documentRangeFormattingProvider = false - utils.load_mappings("lspconfig", { buffer = bufnr }) if client.server_capabilities.signatureHelpProvider then - require("nvchad_ui.signature").setup(client) + require("nvchad.signature").setup(client) end +end - if not utils.load_config().ui.lsp_semantic_tokens then +-- disable semantic tokens +M.on_init = function(client, _) + if not utils.load_config().ui.lsp_semantic_tokens and client.supports_method "textDocument/semanticTokens" then client.server_capabilities.semanticTokensProvider = nil end end @@ -42,6 +41,7 @@ M.capabilities.textDocument.completion.completionItem = { } require("lspconfig").lua_ls.setup { + on_init = M.on_init, on_attach = M.on_attach, capabilities = M.capabilities, @@ -54,7 +54,7 @@ require("lspconfig").lua_ls.setup { library = { [vim.fn.expand "$VIMRUNTIME/lua"] = true, [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true, - [vim.fn.stdpath "data" .. "/lazy/extensions/nvchad_types"] = true, + [vim.fn.stdpath "data" .. "/lazy/ui/nvchad_types"] = true, [vim.fn.stdpath "data" .. "/lazy/lazy.nvim/lua/lazy"] = true, }, maxPreload = 100000, diff --git a/lua/plugins/configs/others.lua b/lua/plugins/configs/others.lua index 8775517..dafd5a4 100644 --- a/lua/plugins/configs/others.lua +++ b/lua/plugins/configs/others.lua @@ -51,12 +51,12 @@ end M.gitsigns = { signs = { - add = { hl = "DiffAdd", text = "│", numhl = "GitSignsAddNr" }, - change = { hl = "DiffChange", text = "│", numhl = "GitSignsChangeNr" }, - delete = { hl = "DiffDelete", text = "󰍵", numhl = "GitSignsDeleteNr" }, - topdelete = { hl = "DiffDelete", text = "‾", numhl = "GitSignsDeleteNr" }, - changedelete = { hl = "DiffChangeDelete", text = "~", numhl = "GitSignsChangeNr" }, - untracked = { hl = "GitSignsAdd", text = "│", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" }, + add = { text = "│" }, + change = { text = "│" }, + delete = { text = "󰍵" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + untracked = { text = "│" }, }, on_attach = function(bufnr) utils.load_mappings("gitsigns", { buffer = bufnr }) diff --git a/lua/plugins/configs/treesitter.lua b/lua/plugins/configs/treesitter.lua index b21b55d..897c4e3 100644 --- a/lua/plugins/configs/treesitter.lua +++ b/lua/plugins/configs/treesitter.lua @@ -1,5 +1,5 @@ local options = { - ensure_installed = { "lua" }, + ensure_installed = { "lua", "vim", "vimdoc" }, highlight = { enable = true, diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua index 3417571..d8285fc 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -30,9 +30,6 @@ local default_plugins = { {"nvim-telescope/telescope-fzf-native.nvim", build="make"}, - -- nvchad plugins - { "NvChad/extensions", branch = "v2.0" }, - { "NvChad/base46", branch = "v2.0", @@ -45,13 +42,10 @@ local default_plugins = { "NvChad/ui", branch = "v2.0", lazy = false, - config = function() - require "nvchad_ui" - end, }, { - "NvChad/nvterm", + "zbirenbaum/nvterm", init = function() require("core.utils").load_mappings "nvterm" end, @@ -63,9 +57,7 @@ local default_plugins = { { "NvChad/nvim-colorizer.lua", - init = function() - require("core.utils").lazy_load "nvim-colorizer.lua" - end, + event = "User FilePost", config = function(_, opts) require("colorizer").setup(opts) @@ -79,7 +71,7 @@ local default_plugins = { { "nvim-tree/nvim-web-devicons", opts = function() - return { override = require("nvchad_ui.icons").devicons } + return { override = require "nvchad.icons.devicons" } end, config = function(_, opts) dofile(vim.g.base46_cache .. "devicons") @@ -93,6 +85,7 @@ local default_plugins = { init = function() require("core.utils").lazy_load "indent-blankline.nvim" end, + event = "User FilePost", opts = function() return require("plugins.configs.others").blankline end, @@ -105,9 +98,7 @@ local default_plugins = { { "nvim-treesitter/nvim-treesitter", - init = function() - require("core.utils").lazy_load "nvim-treesitter" - end, + event = { "BufReadPost", "BufNewFile" }, cmd = { "TSInstall", "TSBufEnable", "TSBufDisable", "TSModuleInfo" }, build = ":TSUpdate", opts = function() @@ -132,22 +123,7 @@ local default_plugins = { -- git stuff { "lewis6991/gitsigns.nvim", - ft = { "gitcommit", "diff" }, - init = function() - -- load gitsigns only when a git file is opened - vim.api.nvim_create_autocmd({ "BufRead" }, { - group = vim.api.nvim_create_augroup("GitSignsLazyLoad", { clear = true }), - callback = function() - vim.fn.system("git -C " .. '"' .. vim.fn.expand "%:p:h" .. '"' .. " rev-parse") - if vim.v.shell_error == 0 then - vim.api.nvim_del_augroup_by_name "GitSignsLazyLoad" - vim.schedule(function() - require("lazy").load { plugins = { "gitsigns.nvim" } } - end) - end - end, - }) - end, + event = "User FilePost", opts = function() return require("plugins.configs.others").gitsigns end, @@ -160,7 +136,7 @@ local default_plugins = { -- lsp stuff { "williamboman/mason.nvim", - cmd = { "Mason", "MasonInstall", "MasonInstallAll", "MasonUninstall", "MasonUninstallAll", "MasonLog" }, + cmd = { "Mason", "MasonInstall", "MasonInstallAll", "MasonUpdate" }, opts = function() return require "plugins.configs.mason" end, @@ -170,7 +146,9 @@ local default_plugins = { -- custom nvchad cmd to install all mason binaries listed vim.api.nvim_create_user_command("MasonInstallAll", function() - vim.cmd("MasonInstall " .. table.concat(opts.ensure_installed, " ")) + if opts.ensure_installed and #opts.ensure_installed > 0 then + vim.cmd("MasonInstall " .. table.concat(opts.ensure_installed, " ")) + end end, {}) vim.g.mason_binaries_list = opts.ensure_installed @@ -179,9 +157,7 @@ local default_plugins = { { "neovim/nvim-lspconfig", - init = function() - require("core.utils").lazy_load "nvim-lspconfig" - end, + event = "User FilePost", config = function() require "plugins.configs.lspconfig" end, @@ -237,12 +213,19 @@ local default_plugins = { { "numToStr/Comment.nvim", - keys = { "gcc", "gbc" }, + keys = { + { "gcc", mode = "n", desc = "Comment toggle current line" }, + { "gc", mode = { "n", "o" }, desc = "Comment toggle linewise" }, + { "gc", mode = "x", desc = "Comment toggle linewise (visual)" }, + { "gbc", mode = "n", desc = "Comment toggle current block" }, + { "gb", mode = { "n", "o" }, desc = "Comment toggle blockwise" }, + { "gb", mode = "x", desc = "Comment toggle blockwise (visual)" }, + }, init = function() require("core.utils").load_mappings "comment" end, - config = function() - require("Comment").setup() + config = function(_, opts) + require("Comment").setup(opts) end, }, @@ -360,12 +343,12 @@ local default_plugins = { config = function(_, opts) dofile(vim.g.base46_cache .. "nvimtree") require("nvim-tree").setup(opts) - vim.g.nvimtree_side = opts.view.side end, }, { "nvim-telescope/telescope.nvim", + dependencies = { "nvim-treesitter/nvim-treesitter" }, cmd = "Telescope", init = function() require("core.utils").load_mappings "telescope" @@ -389,10 +372,11 @@ local default_plugins = { { "folke/which-key.nvim", lazy=false, - keys = { "", '"', "'", "`", "c", "v" }, + keys = { "", "", "", '"', "'", "`", "c", "v", "g" }, init = function() require("core.utils").load_mappings "whichkey" end, + cmd = "WhichKey", config = function(_, opts) dofile(vim.g.base46_cache .. "whichkey") require("which-key").setup(opts)