NeogitOrg / neogit

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

Telescope integration not working #1186

Closed elC0mpa closed 6 months ago

elC0mpa commented 6 months ago

Description

I have the following configuration for neogit in my config:

  "NeogitOrg/neogit",
  dependencies = {
    "nvim-lua/plenary.nvim",         -- required
        "sindrets/diffview.nvim",        -- optional - Diff integration
        "nvim-telescope/telescope.nvim", -- optional
  },
  opts = {
    disable_signs = true,
    graph_style = "unicode",
  },
}```

As I have read, it looks like Telescope integration shuld be automatically detected
Is there any way I could know if it is really integrated?
For me it doesn't looks like it is using telescope 

![image](https://github.com/NeogitOrg/neogit/assets/53531665/d12351cc-51f4-4705-bda8-a66af6f16254)
This is the way I select the different branches in my project
Also, could you provide a better documentation related to this?
Maybe I can specify if I can want to use telescope for some things and not for others

### Neovim version

NVIM v0.9.5
Build type: RelWithDebInfo
LuaJIT 2.1.1692716794

### Operating system and version

Fedora 39

### Steps to reproduce

Jus open neovim and open neogit and try to select some branches
I think definitely it is not using telescope

### Expected behavior

A better looking way to select the branches 

### Actual behavior

Neogit is not using telescope, at least thats what I think

### Minimal config

```Lua
-- 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({
    disable_signs = true,
    graph_style = "unicode",
}) -- For instance, setup Neogit
CKolkey commented 6 months ago

Thats working fine, it's just not using your telescope config - it's using ours. We do some custom stuff under the hood to get the different kinds of pickers to work, and I never bothered to expose the layout config.

What documentation do you feel is missing? I'm definitely not going to make this an opt in on a per case basis, that would be way too much of a pain. The choices are telescope, fzf-lua, or vim.ui.select if those are not available.

dudicoco commented 6 months ago

@CKolkey I've also ran into this issue, it seems to me that the telescope integration is working when I set integrations.telescope = false: Screenshot 2024-02-25 at 12 24 09

With telescope=true: Screenshot 2024-02-25 at 12 23 18

CKolkey commented 6 months ago

@dudicoco, the top image is showing vim.ui.select because you set integrations.telescope = false. If you overloaded that function with something else (telescope, for example), then it's showing telescope how you configured it. Note, it won't have all the functionality that the built-in telescope picker has, like multiple file selection, but it'll work just fine in most cases.

The bottom picture is showing the telescope picker that I configured. This has some extra goodies and lets me have more control over the UX.

Hope that clears things up.

dudicoco commented 6 months ago

thanks @CKolkey, turns out https://github.com/stevearc/dressing.nvim is setting vim.ui.select to use telescope.