From 509288ef3de6419bf72c43781a1fe921420cf8ac Mon Sep 17 00:00:00 2001 From: JINNOUCHI Yasushi Date: Thu, 10 Aug 2023 18:40:02 +0900 Subject: [PATCH] fix: add fs.joinpath to work in v0.9.0 (#118) * test: work tests for async_finder I noticed these tests do not work because of vim.fs.joinpath lacking. I will enable these tests and fix the bug. * feat: implement vim.fs.joinpath to work in v0.9.0 --- lua/frecency/async_finder.lua | 4 ++-- lua/frecency/fs.lua | 17 +++++++++++++++-- lua/frecency/tests/async_finder_spec.lua | 8 -------- 3 files changed, 17 insertions(+), 12 deletions(-) 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 = {}