NeogitOrg / neogit

An interactive and powerful Git interface for Neovim, inspired by Magit
MIT License
3.64k stars 218 forks source link

No way to manually open console #1303

Closed sefidel closed 1 month ago

sefidel commented 1 month ago

Description

The default mapping for opening console does not work, and manually creating a keybind also fails.

Neovim version

NVIM v0.10.0-dev-ca735c7 Build type: Release LuaJIT 2.1.1693350652

Operating system and version

NixOS 24.05 (Uakari)

Steps to reproduce

  1. nvim -nu minimal.lua
  2. Open Neogit (:Neogit)
  3. Press #
  4. Neovim's default keymap gets triggered instead of opening console as specified in the docs

Expected behavior

# to open the console

Actual behavior

neovim's default behaviour.

NOTE: it seems like the ability to manually open console has been completely removed, manually setting a keymap for Console throws the following error:

====Neogit Configuration Errors====                                                                                                 
Neogit has NOT been setup!                                                                                                          
You have a misconfiguration in your Neogit setup!                                                                                   
Validate that your configuration passed to `require("neogit").setup()` is valid!                                                    
------------------------------------                                                                                                
Config value: `mappings.status['C']` had error -> Expected a valid status command, got 'Console'. Valid status commands: { false, "D
epth1", "ShowRefs", "UnstageStaged", "Depth3", "YankSelected", "Untrack", "StageUnstaged", "StageAll", "GoToFile", "CommandHistory",
 "Depth2", "RefreshBuffer", "SplitOpen", "InitRepo", "GoToNextHunkHeader", "Stage", "Close", "TabOpen", "GoToPreviousHunkHeader", "D
epth4", "OpenOrScrollDown", "Discard", "Toggle", "OpenOrScrollUp", "Unstage", "VSplitOpen" }       

I would like this feature back as I have auto_show_console set to false.

Minimal config

-- NOTE: See the end of this file if you are reporting an issue, etc. Ignore all the "scary" functions up top, those are
-- used for setup and other operations.
local M = {}

local base_root_path = vim.fn.fnamemodify(debug.getinfo(1, "S").source:sub(2), ":p:h") .. "/.min"
function M.root(path)
  return base_root_path .. "/" .. (path or "")
end

function M.load_plugin(plugin_name, plugin_url)
  local package_root = M.root("plugins/")
  local install_destination = package_root .. plugin_name
  vim.opt.runtimepath:append(install_destination)

  if not vim.loop.fs_stat(package_root) then
    vim.fn.mkdir(package_root, "p")
  end

  if not vim.loop.fs_stat(install_destination) then
    print(string.format("> Downloading plugin '%s' to '%s'", plugin_name, install_destination))
    vim.fn.system({
      "git",
      "clone",
      "--depth=1",
      plugin_url,
      install_destination,
    })
    if vim.v.shell_error > 0 then
      error(string.format("> Failed to clone plugin: '%s' in '%s'!", plugin_name, install_destination),
        vim.log.levels.ERROR)
    end
  end
end

---@alias PluginName string The plugin name, will be used as part of the git clone destination
---@alias PluginUrl string The git url at which a plugin is located, can be a path. See https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols for details
---@alias MinPlugins table<PluginName, PluginUrl>

---Do the initial setup. Downloads plugins, ensures the minimal init does not pollute the filesystem by keeping
---everything self contained to the CWD of the minimal init file. Run prior to running tests, reproducing issues, etc.
---@param plugins? table<PluginName, PluginUrl>
function M.setup(plugins)
  vim.opt.packpath = {}                      -- Empty the package path so we use only the plugins specified
  vim.opt.runtimepath:append(M.root(".min")) -- Ensure the runtime detects the root min dir

  -- Install required plugins
  if plugins ~= nil then
    for plugin_name, plugin_url in pairs(plugins) do
      M.load_plugin(plugin_name, plugin_url)
    end
  end

  vim.env.XDG_CONFIG_HOME = M.root("xdg/config")
  vim.env.XDG_DATA_HOME = M.root("xdg/data")
  vim.env.XDG_STATE_HOME = M.root("xdg/state")
  vim.env.XDG_CACHE_HOME = M.root("xdg/cache")

  -- NOTE: Cleanup the xdg cache on exit so new runs of the minimal init doesn't share any previous state, e.g. shada
  vim.api.nvim_create_autocmd("VimLeave", {
    callback = function()
      vim.fn.system({
        "rm",
        "-r",
        "-f",
        M.root("xdg")
      })
    end
  })
end

-- NOTE: If you have additional plugins you need to install to reproduce your issue, include them in the plugins
-- table within the setup call below.
M.setup({
  plenary = "https://github.com/nvim-lua/plenary.nvim.git",
  telescope = "https://github.com/nvim-telescope/telescope.nvim",
  diffview = "https://github.com/sindrets/diffview.nvim",
  neogit = "https://github.com/NeogitOrg/neogit"
})
-- WARN: Do all plugin setup, test runs, reproductions, etc. AFTER calling setup with a list of plugins!
-- Basically, do all that stuff AFTER this line.
require("neogit").setup({}) -- For instance, setup Neogit
sefidel commented 1 month ago

Looks like this is caused by https://github.com/NeogitOrg/neogit/commit/5033eb3e768215b9ebf566c048f7ee4042912bba, so maybe a doc change would be sufficient.

EDIT: auto_show_console would also have to be removed, as there's no way to manually open them.

ptn commented 1 month ago

I would actually like the console back, I was getting an error yesterday that simply said "there was an error" and I had no way to inspect it.

CKolkey commented 1 month ago

You can see every command run in the git history console, which is mapped to $

CKolkey commented 1 month ago

Docs have been updated - and auto_show_console is still useful for people if they want to never see it.

sefidel commented 1 month ago

auto_show_console is still useful for people if they want to never see it.

I’m being pretty pedantic here, but could we rename the option to show_console to make it more clear?