ThePrimeagen / git-worktree.nvim

702 stars 121 forks source link

Getting error with telescope git_worktrees() #112

Open globule655 opened 10 months ago

globule655 commented 10 months ago

Hi there ! When using the command lua require('telescope').extensions.git_worktree.git_worktrees() I get the following error :

E5108: Error executing lua ...l/share/nvim/lazy/telescope.nvim/lua/telescope/utils.lua:206: attempt to index field 'layout' (a nil value) stack traceback: ...l/share/nvim/lazy/telescope.nvim/lua/telescope/utils.lua:206: in function 'calc_result_length' ...l/share/nvim/lazy/telescope.nvim/lua/telescope/utils.lua:265: in function 'transform_path' ...worktree.nvim/lua/telescope/_extensions/git_worktree.lua:166: in function 'parse_line' ...worktree.nvim/lua/telescope/_extensions/git_worktree.lua:179: in function 'git_worktrees' [string ":lua"]:1: in main chunk

The command lua require('telescope').extensions.git_worktree.create_git_worktree() works just fine.

Tried on windows wsl (ubuntu 22.04), neovim v0.9.2 Release.

Here is my config (kept it barebones). Lazy plugins config:

{ "ThePrimeagen/git-worktree.nvim", config = function() require("telescope").load_extension("git_worktree") end, },

init.lua for mappings (give the same result as executing lua function in command mode) :

`vim.keymap.set("n", "gw", function () require('telescope').extensions.git_worktree.git_worktrees() end, { desc = "Telescope switch & delete worktrees"})

vim.keymap.set("n", "gc", function () require('telescope').extensions.git_worktree.create_git_worktree() end, { desc = "Telescope create worktree"}) `

Thank you very much for the help

EDIT:

I made the test under my home Linux laptop (Fedora 38) and the same thing happens. Aslo tested under plain windows and there the Telescope window does open correctly. However, there is an error every time I try to switch to a worktree saying the directory doesn't exist.

When trying to create a worktree under windows via the telescope extension, the path looks like c:\users\globule\Documents\myawesomegitrepo\c:\users\globule\Documents\myawesomegitrepo\mybranch which leads to an error but it still creates the folder. However, when trying to switch between workspaces created via the telescope extension, I get the error "The workspace doesn't exist, please create it first c:\users\globule\Documents\myawesomegitrepo"

SimonNyvall commented 10 months ago

You can make your own fork of the repo and apply a quick fix that @aaronhallaert found. In the file lua/telescope/_extensions/git_worktree.lua comment out line 165 to 171, but leave out line 170

                -- if key == 'path' then
                --     local new_path = utils.transform_path(opts, entry[key])
                --     local path_len = strings.strdisplaywidth(new_path or "")
                --     widths[key] = math.max(val, path_len)
                -- else
                    widths[key] = math.max(val, strings.strdisplaywidth(entry[key] or ""))
                -- end

And then use your own fork in vim until this repo gets a PR.

mschreil commented 9 months ago

I ran into the same issue, the fork from @nooproblem fixed it for me. :pray:

Are there any attempts to add this fix to this repo as well?

globule655 commented 9 months ago

Late reply from me but thank you very much for your help.

I found a quick fix by removing path_display = { "truncate" }, in the telescope configuration and didn't think about this anymore after that. I will try @SimonNyvall's fix though 👍 Thanks again !

polarmutex commented 9 months ago

I am now maintaining the repo, I think it is fixed on my fork. I am working on a v2 to improve this plugin.

https://github.com/polarmutex/git-worktree.nvim

mschreil commented 9 months ago

Just tested it with your fork @polarmutex Unfortunately, got the same issue again when calling require('telescope').extensions.git_worktree.git_worktrees()

E5108: Error executing lua: ...l/share/nvim/lazy/telescope.nvim/lua/telescope/utils.lua:206: attempt to index field 'layout' (a nil value)                                                  
stack traceback:                                                                                                                                                                            
        ...l/share/nvim/lazy/telescope.nvim/lua/telescope/utils.lua:206: in function 'calc_result_length'                                                                                   
        ...l/share/nvim/lazy/telescope.nvim/lua/telescope/utils.lua:265: in function 'transform_path'                                                                                       
        ...worktree.nvim/lua/telescope/_extensions/git_worktree.lua:166: in function 'parse_line'                                                                                           
        ...worktree.nvim/lua/telescope/_extensions/git_worktree.lua:179: in function 'git_worktrees'                                                                                        
        /home/msc/.config/nvim/lua/custom/mappings.lua:54: in function </home/msc/.config/nvim/lua/custom/mappings.lua:53> 

Also checked my telescope settings and I have path_display = { "truncate" }, . Is it required to remove this, as @globule655 suggested?

polarmutex commented 9 months ago

I will look into it today

polarmutex commented 9 months ago

with that option, I do see errors (I can look into this later). removing that option I see the telescope window pop up

paulkre commented 8 months ago

I would really like to keep path_display = { "truncate" }. Can somebody please fix this?

qustavo commented 6 months ago

Can confirm, removing path_display = { "truncate" } fixed the issue

epilande commented 5 months ago

I would really like to keep path_display = { "truncate" }.

You can customize path_display configuration when calling a specific extension like git_worktree.git_worktrees().

I have the following mapping which overrides my default path_display = { "truncate" }:

{
  "<leader>gws",
  function()
    require("telescope").extensions.git_worktree.git_worktrees({
      path_display = {},
    })
  end,
  desc = "Manage Worktrees",
},
awerebea commented 4 months ago

Hi all, It's broken again after a recent update to the telescope repository (the specific commit that introduced the incompatibility is 10d57f38f538cd6c22330a2a4b74efe132ff35b5, discovered it by git bisect)

Telescope message:

[telescope] [WARN  11:13:17] /home/user/.local/share/nvim/lazy/telescope.nvim/lua/telescope/pickers.lua:669: Finder failed with msg:  ...lazy/telescope.nvim/lua/telescope/pickers/highlights.lua:33: Invalid 'hl_group': Expected Lua string
awerebea commented 4 months ago

The PR that fixes this has been created.