diff --git a/lua/git-worktree/init.lua b/lua/git-worktree/init.lua index 0fb5295..7f5eefe 100644 --- a/lua/git-worktree/init.lua +++ b/lua/git-worktree/init.lua @@ -152,7 +152,8 @@ local function change_dirs(path) -- vim.loop.chdir(worktree_path) if Path:new(worktree_path):exists() then - local cmd = string.format("%s %s", M._config.change_directory_command, worktree_path) + local escaped_path = string.gsub(worktree_path, "%s", "\\ ") + local cmd = string.format("%s %s", M._config.change_directory_command, escaped_path) status:log().debug("Changing to directory " .. worktree_path) vim.cmd(cmd) current_worktree_path = worktree_path @@ -208,6 +209,13 @@ local function has_worktree(path, cb) data = list_data[1] + if #data > 3 then + data = list_data[1] + for i = 2, #list_data - 2 do + data = data .. ' ' .. list_data[i] + end + end + local start if plenary_path:is_absolute() then start = data == path diff --git a/lua/telescope/_extensions/git_worktree.lua b/lua/telescope/_extensions/git_worktree.lua index 706cd2b..0b12d3b 100644 --- a/lua/telescope/_extensions/git_worktree.lua +++ b/lua/telescope/_extensions/git_worktree.lua @@ -153,12 +153,24 @@ local telescope_git_worktree = function(opts) local parse_line = function(line) local fields = vim.split(string.gsub(line, "%s+", " "), " ") + local entry = { path = fields[1], sha = fields[2], branch = fields[3], } + if #fields > 3 then + local path = fields[1] + for i = 2, #fields - 2 do + path = path .. ' ' .. fields[i] + end + + entry.path = path + entry.sha = fields[#fields - 1] + entry.branch = fields[#fields] + end + if entry.sha ~= "(bare)" then local index = #results + 1 for key, val in pairs(widths) do