diff --git a/lua/frecency/async_finder.lua b/lua/frecency/async_finder.lua index 7dc2fdd..a087261 100644 --- a/lua/frecency/async_finder.lua +++ b/lua/frecency/async_finder.lua @@ -36,12 +36,12 @@ AsyncFinder.new = function(fs, path, entry_maker, initial_results) if self.closed then break end - local fullpath = vim.fs.joinpath(path, name) + local fullpath = fs:joinpath(path, name) if not seen[fullpath] then seen[fullpath] = true index = index + 1 count = count + 1 - local entry = entry_maker { id = 0, count = 0, path = vim.fs.joinpath(path, name), score = 0 } + local entry = entry_maker { id = 0, count = 0, path = fs:joinpath(path, name), score = 0 } if entry then entry.index = index table.insert(self.entries, entry) diff --git a/lua/frecency/fs.lua b/lua/frecency/fs.lua index 4e96a0d..a0f9df0 100644 --- a/lua/frecency/fs.lua +++ b/lua/frecency/fs.lua @@ -29,6 +29,19 @@ FS.new = function(config) return self end +---This is needed for Neovim v0.9.0. +---@param ... string +---@return string +function FS:joinpath(...) + if vim.fs.joinpath then + return vim.fs.joinpath(...) + end + local function join_paths(...) + return (table.concat({ ... }, "/"):gsub("//+", "/")) + end + return join_paths(...) +end + ---@param path string ---@return boolean function FS:is_valid_path(path) @@ -45,13 +58,13 @@ function FS:scan_dir(path) vim.fs.dir(path, { depth = self.config.scan_depth, skip = function(dirname) - if self:is_ignored(vim.fs.joinpath(path, dirname)) then + if self:is_ignored(self:joinpath(path, dirname)) then return false end end, }) do - local fullpath = vim.fs.joinpath(path, name) + local fullpath = self:joinpath(path, name) if type == "file" and not self:is_ignored(fullpath) and gitignore({ path }, fullpath) then coroutine.yield(name) end diff --git a/lua/frecency/tests/async_finder_spec.lua b/lua/frecency/tests/async_finder_spec.lua index 66634f9..01ac29d 100644 --- a/lua/frecency/tests/async_finder_spec.lua +++ b/lua/frecency/tests/async_finder_spec.lua @@ -28,14 +28,6 @@ local function with_files(files, initial_results, callback) end describe("async_finder", function() - ---@diagnostic disable-next-line: param-type-mismatch - if vim.version.eq(vim.version(), "0.9.0") then - it("skips these tests for v0.9.0", function() - assert.are.same(true, true) - end) - return - end - local function run(async_finder) local count = { process_result = 0, process_complete = 0 } local results = {}