perf(lsp): only joinpath for dirs in watchdirs

Doesn't have a huge impact, but showed up in profile output using
`require("jit.p").start("i1", "/tmp/profile")`

before:

    31%  joinpath
    25%  fs.lua:0
    13%  normalize
    13%  skip
     8%  _watchfunc
     5%  gsplit
     3%  spairs

after:

    34%  skip
    29%  fs.lua:0
    12%  joinpath
     7%  normalize
     5%  _watchfunc
     5%  spairs
This commit is contained in:
Mathias Fussenegger 2024-05-12 21:09:06 +02:00 committed by Lewis Russell
parent 8bb67d64e2
commit 2f4792943a

View File

@ -200,11 +200,13 @@ function M.watchdirs(path, opts, callback)
local max_depth = 100
for name, type in vim.fs.dir(path, { depth = max_depth }) do
local filepath = vim.fs.joinpath(path, name)
if type == 'directory' and not skip(filepath, opts) then
local handle = assert(uv.new_fs_event())
handles[filepath] = handle
handle:start(filepath, {}, create_on_change(filepath))
if type == 'directory' then
local filepath = vim.fs.joinpath(path, name)
if not skip(filepath, opts) then
local handle = assert(uv.new_fs_event())
handles[filepath] = handle
handle:start(filepath, {}, create_on_change(filepath))
end
end
end