diff --git a/lua/gp/helper.lua b/lua/gp/helper.lua index b3f1c39c..ab7cae55 100644 --- a/lua/gp/helper.lua +++ b/lua/gp/helper.lua @@ -157,6 +157,10 @@ end ---@param str string # string to check ---@param start string # string to check for _H.starts_with = function(str, start) + if vim.fn.has("win32") then + str = str:gsub("\\", "/") + start = start:gsub("\\", "/") + end return str:sub(1, #start) == start end diff --git a/lua/gp/init.lua b/lua/gp/init.lua index 82ef6190..eec0bda6 100644 --- a/lua/gp/init.lua +++ b/lua/gp/init.lua @@ -404,10 +404,6 @@ end M.not_chat = function(buf, file_name) file_name = vim.fn.resolve(file_name) local chat_dir = vim.fn.resolve(M.config.chat_dir) - if vim.fn.has("win32") == 1 then - file_name = file_name:gsub("\\", "/") - chat_dir = chat_dir:gsub("\\", "/") - end if not M.helpers.starts_with(file_name, chat_dir) then return "resolved file (" .. file_name .. ") not in chat dir (" .. chat_dir .. ")" end @@ -812,7 +808,7 @@ M.cmd.ChatToggle = function(params, system_prompt, agent) if params.range ~= 2 then -- check if last.md chat file exists and open it local last = M.config.chat_dir .. "/last.md" - if vim.fn.filereadable(last) == 1 then + if vim.fn.filereadable(last) == 1 and last ~= vim.fn.resolve(last) then -- resolve symlink last = vim.fn.resolve(last) M.open_buf(last, M.resolve_buf_target(params), M._toggle_kind.chat, true) diff --git a/lua/gp/tasker.lua b/lua/gp/tasker.lua index df630e3c..b0867312 100644 --- a/lua/gp/tasker.lua +++ b/lua/gp/tasker.lua @@ -193,7 +193,7 @@ M.grep_directory = function(buf, directory, pattern, callback) -- strip leading and trailing non alphanumeric characters local re = pattern:gsub("^%W*(.-)%W*$", "%1") - M.run(buf, "grep", { "-irEn", "--null", pattern, directory }, function(c, _, stdout, _) + M.run(buf, "grep", { "-irEn", "--null", "--exclude=last.md", pattern, directory }, function(c, _, stdout, _) local results = {} if c ~= 0 then callback(results, re)