diff --git a/lua/custom/plugins/neogit.lua b/lua/custom/plugins/neogit.lua index 8f797264..e6a032d1 100644 --- a/lua/custom/plugins/neogit.lua +++ b/lua/custom/plugins/neogit.lua @@ -6,5 +6,216 @@ return { "sindrets/diffview.nvim", "ibhagwan/fzf-lua", }, - config = true + config = function() + local neogit = require("neogit") + + neogit.setup { + -- Hides the hints at the top of the status buffer + disable_hint = true, + -- Disables changing the buffer highlights based on where the cursor is. + disable_context_highlighting = false, + -- Disables signs for sections/items/hunks + disable_signs = false, + -- Do not ask to confirm the commit - just do it when the buffer is closed. + disable_commit_confirmation = false, + -- Uses `vim.notify` instead of the built-in notification system. + disable_builtin_notifications = false, + -- Changes what mode the Commit Editor starts in. `true` will leave nvim in normal mode, `false` will change nvim to + -- insert mode, and `"auto"` will change nvim to insert mode IF the commit message is empty, otherwise leaving it in + -- normal mode. + disable_insert_on_commit = true, + -- When enabled, will watch the `.git/` directory for changes and refresh the status buffer in response to filesystem + -- events. + filewatcher = { + interval = 1000, + enabled = true, + }, + -- Allows a different telescope sorter. Defaults to 'fuzzy_with_index_bias'. The example below will use the native fzf + -- sorter instead. By default, this function returns `nil`. + telescope_sorter = function() + return require("telescope").extensions.fzf.native_fzf_sorter() + end, + -- Persist the values of switches/options within and across sessions + remember_settings = true, + -- Scope persisted settings on a per-project basis + use_per_project_settings = true, + -- Table of settings to never persist. Uses format "Filetype--cli-value" + ignored_settings = { + "NeogitPushPopup--force-with-lease", + "NeogitPushPopup--force", + "NeogitPullPopup--rebase", + "NeogitCommitPopup--allow-empty", + "NeogitRevertPopup--no-edit", + }, + -- Neogit refreshes its internal state after specific events, which can be expensive depending on the repository size. + -- Disabling `auto_refresh` will make it so you have to manually refresh the status after you open it. + auto_refresh = true, + -- Value used for `--sort` option for `git branch` command + -- By default, branches will be sorted by commit date descending + -- Flag description: https://git-scm.com/docs/git-branch#Documentation/git-branch.txt---sortltkeygt + -- Sorting keys: https://git-scm.com/docs/git-for-each-ref#_options + sort_branches = "-committerdate", + -- Change the default way of opening neogit + kind = "tab", + -- The time after which an output console is shown for slow running commands + console_timeout = 2000, + -- Automatically show console if a command takes more than console_timeout milliseconds + auto_show_console = true, + status = { + recent_commit_count = 10, + }, + commit_editor = { + kind = "split", + }, + commit_select_view = { + kind = "tab", + }, + commit_view = { + kind = "vsplit", + verify_commit = os.execute("which gpg") == 0, -- Can be set to true or false, otherwise we try to find the binary + }, + log_view = { + kind = "tab", + }, + rebase_editor = { + kind = "split", + }, + reflog_view = { + kind = "tab", + }, + merge_editor = { + kind = "split", + }, + preview_buffer = { + kind = "split", + }, + popup = { + kind = "split", + }, + signs = { + -- { CLOSED, OPENED } + item = { "+", "-" }, + section = { "", "" }, + hunk = { "", "" }, + }, + -- Each Integration is auto-detected through plugin presence, however, it can be disabled by setting to `false` + integrations = { + -- If enabled, use telescope for menu selection rather than vim.ui.select. + -- Allows multi-select and some things that vim.ui.select doesn't. + telescope = true, + -- Neogit only provides inline diffs. If you want a more traditional way to look at diffs, you can use `diffview`. + -- The diffview integration enables the diff popup. + -- + -- Requires you to have `sindrets/diffview.nvim` installed. + diffview = true, + + -- If enabled, uses fzf-lua for menu selection. If the telescope integration + -- is also selected then telescope is used instead + -- Requires you to have `ibhagwan/fzf-lua` installed. + fzf_lua = true, + }, + sections = { + -- Reverting/Cherry Picking + sequencer = { + folded = false, + hidden = false, + }, + untracked = { + folded = false, + hidden = false, + }, + unstaged = { + folded = false, + hidden = false, + }, + staged = { + folded = false, + hidden = false, + }, + stashes = { + folded = true, + hidden = false, + }, + unpulled_upstream = { + folded = true, + hidden = false, + }, + unmerged_upstream = { + folded = false, + hidden = false, + }, + unpulled_pushRemote = { + folded = true, + hidden = false, + }, + unmerged_pushRemote = { + folded = false, + hidden = false, + }, + recent = { + folded = true, + hidden = false, + }, + rebase = { + folded = true, + hidden = false, + }, + }, + mappings = { + finder = { + [""] = "Select", + [""] = "Close", + [""] = "Close", + [""] = "Next", + [""] = "Previous", + [""] = "Next", + [""] = "Previous", + [""] = "MultiselectToggleNext", + [""] = "MultiselectTogglePrevious", + [""] = "NOP", + }, + -- Setting any of these to `false` will disable the mapping. + status = { + ["q"] = "Close", + ["I"] = "InitRepo", + ["1"] = "Depth1", + ["2"] = "Depth2", + ["3"] = "Depth3", + ["4"] = "Depth4", + [""] = "Toggle", + ["x"] = "Discard", + ["s"] = "Stage", + ["S"] = "StageUnstaged", + [""] = "StageAll", + ["u"] = "Unstage", + ["U"] = "UnstageStaged", + ["d"] = "DiffAtFile", + ["$"] = "CommandHistory", + ["#"] = "Console", + [""] = "RefreshBuffer", + [""] = "GoToFile", + [""] = "VSplitOpen", + [""] = "SplitOpen", + [""] = "TabOpen", + ["?"] = "HelpPopup", + ["D"] = "DiffPopup", + ["p"] = "PullPopup", + ["r"] = "RebasePopup", + ["m"] = "MergePopup", + ["P"] = "PushPopup", + ["c"] = "CommitPopup", + ["l"] = "LogPopup", + ["v"] = "RevertPopup", + ["Z"] = "StashPopup", + ["A"] = "CherryPickPopup", + ["b"] = "BranchPopup", + ["f"] = "FetchPopup", + ["X"] = "ResetPopup", + ["M"] = "RemotePopup", + ["{"] = "GoToPreviousHunkHeader", + ["}"] = "GoToNextHunkHeader", + }, + }, + } + end }