diff --git a/config/nvim/lua/plugins/gitsigns.lua b/config/nvim/lua/plugins/gitsigns.lua index 6d16a2b..165a323 100644 --- a/config/nvim/lua/plugins/gitsigns.lua +++ b/config/nvim/lua/plugins/gitsigns.lua @@ -1,48 +1,49 @@ -local status_ok, gitsigns = pcall(require, "gitsigns") -if not status_ok then - return -end - -gitsigns.setup { +require('gitsigns').setup { signs = { - add = { hl = "GitSignsAdd", text = " ", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" }, - change = { hl = "GitSignsChange", text = " ", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, - delete = { hl = "GitSignsDelete", text = " ", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, - topdelete = { hl = "GitSignsDelete", text = "󱅁 ", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, - changedelete = { hl = "GitSignsChange", text = "󰍷 ", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, + add = { text = '┃' }, + change = { text = '┃' }, + delete = { text = '_' }, + topdelete = { text = '‾' }, + changedelete = { text = '~' }, + untracked = { text = '┆' }, }, - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` - numhl = false, -- Toggle with `:Gitsigns toggle_numhl` - linehl = false, -- Toggle with `:Gitsigns toggle_linehl` - word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` + signs_staged = { + add = { text = '┃' }, + change = { text = '┃' }, + delete = { text = '_' }, + topdelete = { text = '‾' }, + changedelete = { text = '~' }, + untracked = { text = '┆' }, + }, + signs_staged_enable = true, + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + numhl = false, -- Toggle with `:Gitsigns toggle_numhl` + linehl = false, -- Toggle with `:Gitsigns toggle_linehl` + word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` watch_gitdir = { - interval = 1000, - follow_files = true, + follow_files = true }, - attach_to_untracked = true, + auto_attach = true, + attach_to_untracked = false, current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` current_line_blame_opts = { virt_text = true, - virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align' + virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' delay = 1000, ignore_whitespace = false, + virt_text_priority = 100, }, - current_line_blame_formatter_opts = { - relative_time = false, - }, + current_line_blame_formatter = ', - ', sign_priority = 6, update_debounce = 100, status_formatter = nil, -- Use default - max_file_length = 40000, + max_file_length = 40000, -- Disable if file is longer than this (in lines) preview_config = { -- Options passed to nvim_open_win - border = "single", - style = "minimal", - relative = "cursor", + border = 'single', + style = 'minimal', + relative = 'cursor', row = 0, - col = 1, - }, - yadm = { - enable = false, + col = 1 }, } diff --git a/config/nvim/lua/plugins/indentline.lua b/config/nvim/lua/plugins/indentline.lua index 114d6c3..598d050 100644 --- a/config/nvim/lua/plugins/indentline.lua +++ b/config/nvim/lua/plugins/indentline.lua @@ -21,4 +21,9 @@ hooks.register(hooks.type.HIGHLIGHT_SETUP, function() vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#56B6C2" }) end) -require("ibl").setup { indent = { highlight = highlight } } +require("ibl").setup { + indent = { + highlight = highlight, + char = "▏" + } +} diff --git a/config/nvim/lua/plugins/nvim-tree.lua.bak b/config/nvim/lua/plugins/nvim-tree.lua.bak deleted file mode 100644 index d4d813e..0000000 --- a/config/nvim/lua/plugins/nvim-tree.lua.bak +++ /dev/null @@ -1,67 +0,0 @@ -local status_ok, nvim_tree = pcall(require, "nvim-tree") -if not status_ok then - return -end - -local config_status_ok, nvim_tree_config = pcall(require, "nvim-tree.config") -if not config_status_ok then - return -end - -local tree_cb = nvim_tree_config.nvim_tree_callback - -nvim_tree.setup { - update_focused_file = { - enable = true, - update_cwd = true, - }, - renderer = { - root_folder_modifier = ":t", - icons = { - glyphs = { - default = "", - symlink = "", - folder = { - arrow_open = "", - arrow_closed = "", - default = "", - open = "", - empty = "", - empty_open = "", - symlink = "", - symlink_open = "", - }, - git = { - unstaged = "", - staged = "S", - unmerged = "", - renamed = "➜", - untracked = "U", - deleted = "", - ignored = "◌", - }, - }, - }, - }, - diagnostics = { - enable = true, - show_on_dirs = true, - icons = { - hint = "", - info = "", - warning = "", - error = "", - }, - }, - view = { - width = 30, - side = "left", - -- mappings = { - -- list = { - -- { key = { "l", "", "o" }, cb = tree_cb "edit" }, - -- { key = "h", cb = tree_cb "close_node" }, - -- { key = "v", cb = tree_cb "vsplit" }, - -- }, - -- }, - }, -} diff --git a/config/nvim/lua/plugins/whichkey.lua b/config/nvim/lua/plugins/whichkey.lua index 0e410d1..d672585 100644 --- a/config/nvim/lua/plugins/whichkey.lua +++ b/config/nvim/lua/plugins/whichkey.lua @@ -1,20 +1,47 @@ -local status_ok, which_key = pcall(require, "which-key") -if not status_ok then - return -end - -local setup = { +---@class wk.Opts +local defaults = { + ---@type false | "classic" | "modern" | "helix" + preset = "classic", + -- Delay before showing the popup. Can be a number or a function that returns a number. + ---@type number | fun(ctx: { keys: string, mode: string, plugin?: string }):number + delay = function(ctx) + return ctx.plugin and 0 or 200 + end, + ---@param mapping wk.Mapping + filter = function(mapping) + -- example to exclude mappings without a description + -- return mapping.desc and mapping.desc ~= "" + return true + end, + --- You can add any mappings here, or use `require('which-key').add()` later + ---@type wk.Spec + spec = {}, + -- show a warning when issues were detected with your mappings + notify = true, + -- Which-key automatically sets up triggers for your mappings. + -- But you can disable this and setup the triggers manually. + -- Check the docs for more info. + ---@type wk.Spec + triggers = { + { "", mode = "nxsot" }, + }, + -- Start hidden and wait for a key to be pressed before showing the popup + -- Only used by enabled xo mapping modes. + ---@param ctx { mode: string, operator: string } + defer = function(ctx) + return ctx.mode == "V" or ctx.mode == "" + end, plugins = { marks = true, -- shows a list of your marks on ' and ` registers = true, -- shows your registers on " in NORMAL or in INSERT mode + -- the presets plugin, adds help for a bunch of default keybindings in Neovim + -- No actual key bindings are created spelling = { enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions suggestions = 20, -- how many suggestions should be shown in the list? }, - -- the presets plugin, adds help for a bunch of default keybindings in Neovim - -- No actual key bindings are created presets = { - operators = false, -- adds help for operators like d, y, ... and registers them for motion / text object completion + operators = true, -- adds help for operators like d, y, ... motions = true, -- adds help for motions text_objects = true, -- help for text objects triggered after entering an operator windows = true, -- default bindings on @@ -23,165 +50,123 @@ local setup = { g = true, -- bindings for prefixed with g }, }, - -- add operators that will trigger motion and text object completion - -- to enable all native operators, set the preset / operators plugin above - -- operators = { gc = "Comments" }, - key_labels = { - -- override the label used to display some keys. It doesn't effect WK in any other way. - -- For example: - -- [""] = "SPC", - -- [""] = "RET", - -- [""] = "TAB", + ---@type wk.Win.opts + win = { + -- don't allow the popup to overlap with the cursor + no_overlap = true, + -- width = 1, + -- height = { min = 4, max = 25 }, + -- col = 0, + -- row = math.huge, + -- border = "none", + padding = { 1, 2 }, -- extra window padding [top/bottom, right/left] + title = true, + title_pos = "center", + zindex = 1000, + -- Additional vim.wo and vim.bo options + bo = {}, + wo = { + -- winblend = 10, -- value between 0-100 0 for fully opaque and 100 for fully transparent + }, + }, + layout = { + width = { min = 20 }, -- min and max width of the columns + spacing = 3, -- spacing between columns + }, + keys = { + scroll_down = "", -- binding to scroll down inside the popup + scroll_up = "", -- binding to scroll up inside the popup + }, + ---@type (string|wk.Sorter)[] + --- Mappings are sorted using configured sorters and natural sort of the keys + --- Available sorters: + --- * local: buffer-local mappings first + --- * order: order of the items (Used by plugins like marks / registers) + --- * group: groups last + --- * alphanum: alpha-numerical first + --- * mod: special modifier keys last + --- * manual: the order the mappings were added + --- * case: lower-case first + sort = { "local", "order", "group", "alphanum", "mod" }, + ---@type number|fun(node: wk.Node):boolean? + expand = 0, -- expand groups when <= n mappings + -- expand = function(node) + -- return not node.desc -- expand all nodes without a description + -- end, + -- Functions/Lua Patterns for formatting the labels + ---@type table + replace = { + key = { + function(key) + return require("which-key.view").format(key) + end, + -- { "", "SPC" }, + }, + desc = { + { "%(?(.*)%)?", "%1" }, + { "^%+", "" }, + { "<[cC]md>", "" }, + { "<[cC][rR]>", "" }, + { "<[sS]ilent>", "" }, + { "^lua%s+", "" }, + { "^call%s+", "" }, + { "^:%s*", "" }, + }, }, icons = { breadcrumb = "»", -- symbol used in the command line area that shows your active key combo separator = "➜", -- symbol used between a key and it's label group = "+", -- symbol prepended to a group + ellipsis = "…", + -- set to false to disable all mapping icons, + -- both those explicitely added in a mapping + -- and those from rules + mappings = true, + --- See `lua/which-key/icons.lua` for more details + --- Set to `false` to disable keymap icons from rules + ---@type wk.IconRule[]|false + rules = {}, + -- use the highlights from mini.icons + -- When `false`, it will use `WhichKeyIcon` instead + colors = true, + -- used by key format + keys = { + Up = " ", + Down = " ", + Left = " ", + Right = " ", + C = "󰘴 ", + M = "󰘵 ", + D = "󰘳 ", + S = "󰘶 ", + CR = "󰌑 ", + Esc = "󱊷 ", + ScrollWheelDown = "󱕐 ", + ScrollWheelUp = "󱕑 ", + NL = "󰌑 ", + BS = "󰁮", + Space = "󱁐 ", + Tab = "󰌒 ", + F1 = "󱊫", + F2 = "󱊬", + F3 = "󱊭", + F4 = "󱊮", + F5 = "󱊯", + F6 = "󱊰", + F7 = "󱊱", + F8 = "󱊲", + F9 = "󱊳", + F10 = "󱊴", + F11 = "󱊵", + F12 = "󱊶", + }, }, - popup_mappings = { - scroll_down = "", -- binding to scroll down inside the popup - scroll_up = "", -- binding to scroll up inside the popup - }, - window = { - border = "rounded", -- none, single, double, shadow - position = "bottom", -- bottom, top - margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] - padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left] - winblend = 0, - }, - layout = { - height = { min = 4, max = 25 }, -- min and max height of the columns - width = { min = 20, max = 50 }, -- min and max width of the columns - spacing = 3, -- spacing between columns - align = "left", -- align columns left, center or right - }, - ignore_missing = true, -- enable this to hide mappings for which you didn't specify a label - hidden = { "", "", "", "", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate - show_help = true, -- show help message on the command line when the popup is visible - triggers = "auto", -- automatically setup triggers - -- triggers = {""} -- or specify a list manually - triggers_blacklist = { - -- list of mode / prefixes that should never be hooked by WhichKey - -- this is mostly relevant for key maps that start with a native binding - -- most people should not need to change this - i = { "j", "k" }, - v = { "j", "k" }, + show_help = true, -- show a help message in the command line for using WhichKey + show_keys = true, -- show the currently pressed key and its label as a message in the command line + -- disable WhichKey for certain buf types and file types. + disable = { + ft = {}, + bt = {}, }, + debug = false, -- enable wk.log in the current directory } - -local opts = { - mode = "n", -- NORMAL mode - prefix = "", - buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings - silent = true, -- use `silent` when creating keymaps - noremap = true, -- use `noremap` when creating keymaps - nowait = true, -- use `nowait` when creating keymaps -} - -local mappings = { - ["a"] = { "Alpha", "Alpha" }, - ["b"] = { - "lua require('telescope.builtin').buffers(require('telescope.themes').get_dropdown{previewer = false})", - "Buffers", - }, - ["e"] = { "NvimTreeToggle", "Explorer" }, - ["w"] = { "w!", "Save" }, - ["q"] = { "q!", "Quit" }, - ["c"] = { "Bdelete!", "Close Buffer" }, - ["h"] = { "nohlsearch", "No Highlight" }, - ["f"] = { - "lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown{previewer = false})", - "Find files", - }, - ["F"] = { "Telescope live_grep theme=ivy", "Find Text" }, - ["P"] = { "lua require('telescope').extensions.projects.projects()", "Projects" }, - - p = { - name = "Packer", - c = { "PackerCompile", "Compile" }, - i = { "PackerInstall", "Install" }, - s = { "PackerSync", "Sync" }, - S = { "PackerStatus", "Status" }, - u = { "PackerUpdate", "Update" }, - }, - - g = { - name = "Git", - g = { "lua _LAZYGIT_TOGGLE()", "Lazygit" }, - j = { "lua require 'gitsigns'.next_hunk()", "Next Hunk" }, - k = { "lua require 'gitsigns'.prev_hunk()", "Prev Hunk" }, - l = { "lua require 'gitsigns'.blame_line()", "Blame" }, - p = { "lua require 'gitsigns'.preview_hunk()", "Preview Hunk" }, - r = { "lua require 'gitsigns'.reset_hunk()", "Reset Hunk" }, - R = { "lua require 'gitsigns'.reset_buffer()", "Reset Buffer" }, - s = { "lua require 'gitsigns'.stage_hunk()", "Stage Hunk" }, - u = { - "lua require 'gitsigns'.undo_stage_hunk()", - "Undo Stage Hunk", - }, - o = { "Telescope git_status", "Open changed file" }, - b = { "Telescope git_branches", "Checkout branch" }, - c = { "Telescope git_commits", "Checkout commit" }, - d = { - "Gitsigns diffthis HEAD", - "Diff", - }, - }, - - l = { - name = "LSP", - a = { "lua vim.lsp.buf.code_action()", "Code Action" }, - d = { - "Telescope diagnostics bufnr=0", - "Document Diagnostics", - }, - w = { - "Telescope diagnostics", - "Workspace Diagnostics", - }, - f = { "lua vim.lsp.buf.format{async=true}", "Format" }, - i = { "LspInfo", "Info" }, - I = { "LspInstallInfo", "Installer Info" }, - j = { - "lua vim.lsp.diagnostic.goto_next()", - "Next Diagnostic", - }, - k = { - "lua vim.lsp.diagnostic.goto_prev()", - "Prev Diagnostic", - }, - l = { "lua vim.lsp.codelens.run()", "CodeLens Action" }, - q = { "lua vim.diagnostic.setloclist()", "Quickfix" }, - r = { "lua vim.lsp.buf.rename()", "Rename" }, - s = { "Telescope lsp_document_symbols", "Document Symbols" }, - S = { - "Telescope lsp_dynamic_workspace_symbols", - "Workspace Symbols", - }, - }, - s = { - name = "Search", - b = { "Telescope git_branches", "Checkout branch" }, - c = { "Telescope colorscheme", "Colorscheme" }, - h = { "Telescope help_tags", "Find Help" }, - M = { "Telescope man_pages", "Man Pages" }, - r = { "Telescope oldfiles", "Open Recent File" }, - R = { "Telescope registers", "Registers" }, - k = { "Telescope keymaps", "Keymaps" }, - C = { "Telescope commands", "Commands" }, - }, - - t = { - name = "Terminal", - n = { "lua _NODE_TOGGLE()", "Node" }, - u = { "lua _NCDU_TOGGLE()", "NCDU" }, - t = { "lua _HTOP_TOGGLE()", "Htop" }, - p = { "lua _PYTHON_TOGGLE()", "Python" }, - f = { "ToggleTerm direction=float", "Float" }, - h = { "ToggleTerm size=10 direction=horizontal", "Horizontal" }, - v = { "ToggleTerm size=80 direction=vertical", "Vertical" }, - }, -} - -which_key.setup(setup) -which_key.register(mappings, opts)