local colorschemeName = nixCats('colorscheme') if not require('nixCatsUtils').isNixCats then colorschemeName = 'onedark' end -- Could I lazy load on colorscheme with lze? -- sure. But I was going to call vim.cmd.colorscheme() during startup anyway -- this is just an example, feel free to do a better job! vim.cmd.colorscheme(colorschemeName) local ok, notify = pcall(require, "notify") if ok then notify.setup({ on_open = function(win) vim.api.nvim_win_set_config(win, { focusable = false }) end, }) vim.notify = notify vim.keymap.set("n", "", function() notify.dismiss({ silent = true, }) end, { desc = "dismiss notify popup and clear hlsearch" }) end -- NOTE: you can check if you included the category with the thing wherever you want. if nixCats('general.extra') then -- I didnt want to bother with lazy loading this. -- I could put it in opt and put it in a spec anyway -- and then not set any handlers and it would load at startup, -- but why... I guess I could make it load -- after the other lze definitions in the next call using priority value? -- didnt seem necessary. vim.g.loaded_netrwPlugin = 1 require("oil").setup({ default_file_explorer = true, view_options = { show_hidden = true }, columns = { "icon", "permissions", "size", -- "mtime", }, keymaps = { ["g?"] = "actions.show_help", [""] = "actions.select", [""] = "actions.select_vsplit", [""] = "actions.select_split", [""] = "actions.select_tab", [""] = "actions.preview", [""] = "actions.close", [""] = "actions.refresh", ["-"] = "actions.parent", ["_"] = "actions.open_cwd", ["`"] = "actions.cd", ["~"] = "actions.tcd", ["gs"] = "actions.change_sort", ["gx"] = "actions.open_external", ["g."] = "actions.toggle_hidden", ["g\\"] = "actions.toggle_trash", }, }) vim.keymap.set("n", "-", "Oil", { noremap = true, desc = 'Open Parent Directory' }) vim.keymap.set("n", "-", "Oil .", { noremap = true, desc = 'Open nvim root directory' }) end require('lze').load { { import = "myLuaConf.plugins.telescope", }, { import = "myLuaConf.plugins.treesitter", }, { import = "myLuaConf.plugins.completion", }, { "markdown-preview.nvim", -- NOTE: for_cat is a custom handler that just sets enabled value for us, -- based on result of nixCats('cat.name') and allows us to set a different default if we wish -- it is defined in luaUtils template in lua/nixCatsUtils/lzUtils.lua -- you could replace this with enabled = nixCats('cat.name') == true -- if you didnt care to set a different default for when not using nix than the default you already set for_cat = 'general.markdown', cmd = { "MarkdownPreview", "MarkdownPreviewStop", "MarkdownPreviewToggle", }, ft = "markdown", keys = { {"mp", "MarkdownPreview ", mode = {"n"}, noremap = true, desc = "markdown preview"}, {"ms", "MarkdownPreviewStop ", mode = {"n"}, noremap = true, desc = "markdown preview stop"}, {"mt", "MarkdownPreviewToggle ", mode = {"n"}, noremap = true, desc = "markdown preview toggle"}, }, before = function(plugin) vim.g.mkdp_auto_close = 0 end, }, { "undotree", for_cat = 'general.extra', cmd = { "UndotreeToggle", "UndotreeHide", "UndotreeShow", "UndotreeFocus", "UndotreePersistUndo", }, keys = { { "U", "UndotreeToggle", mode = { "n" }, desc = "Undo Tree" }, }, before = function(_) vim.g.undotree_WindowLayout = 1 vim.g.undotree_SplitWidth = 40 end, }, { "comment.nvim", for_cat = 'general.extra', event = "DeferredUIEnter", after = function(plugin) require('Comment').setup() end, }, { "indent-blankline.nvim", for_cat = 'general.extra', event = "DeferredUIEnter", after = function(plugin) require("ibl").setup() end, }, { "nvim-surround", for_cat = 'general.always', event = "DeferredUIEnter", -- keys = "", after = function(plugin) require('nvim-surround').setup() end, }, { "vim-startuptime", for_cat = 'general.extra', cmd = { "StartupTime" }, before = function(_) vim.g.startuptime_event_width = 0 vim.g.startuptime_tries = 10 vim.g.startuptime_exe_path = nixCats.packageBinPath end, }, { "fidget.nvim", for_cat = 'general.extra', event = "DeferredUIEnter", -- keys = "", after = function(plugin) require('fidget').setup({}) end, }, -- { -- "hlargs", -- for_cat = 'general.extra', -- event = "DeferredUIEnter", -- -- keys = "", -- dep_of = { "nvim-lspconfig" }, -- after = function(plugin) -- require('hlargs').setup { -- color = '#32a88f', -- } -- vim.cmd([[hi clear @lsp.type.parameter]]) -- vim.cmd([[hi link @lsp.type.parameter Hlargs]]) -- end, -- }, { "lualine.nvim", for_cat = 'general.always', -- cmd = { "" }, event = "DeferredUIEnter", -- ft = "", -- keys = "", -- colorscheme = "", after = function (plugin) require('lualine').setup({ options = { icons_enabled = false, theme = colorschemeName, component_separators = '|', section_separators = '', }, sections = { lualine_c = { { 'filename', path = 1, status = true, }, }, }, inactive_sections = { lualine_b = { { 'filename', path = 3, status = true, }, }, lualine_x = {'filetype'}, }, tabline = { lualine_a = { 'buffers' }, -- if you use lualine-lsp-progress, I have mine here instead of fidget -- lualine_b = { 'lsp_progress', }, lualine_z = { 'tabs' } }, }) end, }, { "gitsigns.nvim", for_cat = 'general.always', event = "DeferredUIEnter", -- cmd = { "" }, -- ft = "", -- keys = "", -- colorscheme = "", after = function (plugin) require('gitsigns').setup({ -- See `:help gitsigns.txt` signs = { add = { text = '+' }, change = { text = '~' }, delete = { text = '_' }, topdelete = { text = '‾' }, changedelete = { text = '~' }, }, on_attach = function(bufnr) local gs = package.loaded.gitsigns local function map(mode, l, r, opts) opts = opts or {} opts.buffer = bufnr vim.keymap.set(mode, l, r, opts) end -- Navigation map({ 'n', 'v' }, ']c', function() if vim.wo.diff then return ']c' end vim.schedule(function() gs.next_hunk() end) return '' end, { expr = true, desc = 'Jump to next hunk' }) map({ 'n', 'v' }, '[c', function() if vim.wo.diff then return '[c' end vim.schedule(function() gs.prev_hunk() end) return '' end, { expr = true, desc = 'Jump to previous hunk' }) -- Actions -- visual mode map('v', 'hs', function() gs.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'stage git hunk' }) map('v', 'hr', function() gs.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'reset git hunk' }) -- normal mode map('n', 'gs', gs.stage_hunk, { desc = 'git stage hunk' }) map('n', 'gr', gs.reset_hunk, { desc = 'git reset hunk' }) map('n', 'gS', gs.stage_buffer, { desc = 'git Stage buffer' }) map('n', 'gu', gs.undo_stage_hunk, { desc = 'undo stage hunk' }) map('n', 'gR', gs.reset_buffer, { desc = 'git Reset buffer' }) map('n', 'gp', gs.preview_hunk, { desc = 'preview git hunk' }) map('n', 'gb', function() gs.blame_line { full = false } end, { desc = 'git blame line' }) map('n', 'gd', gs.diffthis, { desc = 'git diff against index' }) map('n', 'gD', function() gs.diffthis '~' end, { desc = 'git diff against last commit' }) -- Toggles map('n', 'gtb', gs.toggle_current_line_blame, { desc = 'toggle git blame line' }) map('n', 'gtd', gs.toggle_deleted, { desc = 'toggle git show deleted' }) -- Text object map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk', { desc = 'select git hunk' }) end, }) vim.cmd([[hi GitSignsAdd guifg=#04de21]]) vim.cmd([[hi GitSignsChange guifg=#83fce6]]) vim.cmd([[hi GitSignsDelete guifg=#fa2525]]) end, }, { "which-key.nvim", for_cat = 'general.extra', -- cmd = { "" }, event = "DeferredUIEnter", -- ft = "", -- keys = "", -- colorscheme = "", after = function (plugin) require('which-key').setup({ }) require('which-key').add { { "", group = "buffer commands" }, { "_", hidden = true }, { "c", group = "[c]ode" }, { "c_", hidden = true }, { "d", group = "[d]ocument" }, { "d_", hidden = true }, { "g", group = "[g]it" }, { "g_", hidden = true }, { "m", group = "[m]arkdown" }, { "m_", hidden = true }, { "r", group = "[r]ename" }, { "r_", hidden = true }, { "s", group = "[s]earch" }, { "s_", hidden = true }, { "t", group = "[t]oggles" }, { "t_", hidden = true }, { "w", group = "[w]orkspace" }, { "w_", hidden = true }, } end, }, }