Files
neovim/runtime/doc
Yochem van Rosmalen dc5d313d66 fix(vim.fs): joinpath() should ignore empty items #38077
Problem:
vim.fs.joinpath treats empty string as a path segment
(it adds a path separator for each empty item):

    print(vim.fs.joinpath('', 'after/lsp', '')) -- '/after/lsp/'
    print(vim.fs.joinpath('', '')) -- '/'

Especially problematic if the empty segment is the first segment, as
that converts the path to an absolute path.

Solution:
Ignore empty (length of 0) path segments.

Benchmark:

    local function test(func)
      local t = vim.uv.hrtime()
      for _ = 1, 100000, 1 do
        func('', 'this/is', 'a/very/long/path', '', 'it', 'really', 'is')
      end
      print(math.floor((vim.uv.hrtime() - t) / 1e6), 'ms')
    end

- with Iter():filter() --> 370 ms
- building new segments table --> 208 ms
- with vim.tbl_filter --> 232 ms
- Instead of gsub split on `/` in all parts --> 1870 ms
2026-02-27 17:45:07 -05:00
..
2026-02-12 13:46:45 +01:00
2026-02-12 13:46:45 +01:00
2026-02-12 13:46:45 +01:00
2024-05-15 23:19:26 +02:00
2026-02-12 13:46:45 +01:00
2025-12-06 20:33:02 -05:00
2025-12-06 20:33:02 -05:00
2023-06-25 17:14:28 +02:00
2025-12-06 20:33:02 -05:00
2026-01-27 17:14:57 -05:00
2025-12-16 13:46:04 -05:00
2026-01-12 03:50:57 +00:00
2025-12-15 13:55:15 -05:00
2026-02-12 13:46:45 +01:00
2025-12-15 13:55:15 -05:00
2026-01-23 09:30:37 +01:00
2026-02-12 13:46:45 +01:00
2025-12-15 13:55:15 -05:00
2025-09-28 20:57:59 -07:00
2025-12-15 13:55:15 -05:00
2025-12-15 13:55:15 -05:00
2025-12-06 20:33:02 -05:00
2025-12-15 13:55:15 -05:00
2026-01-27 17:14:57 -05:00
2026-01-07 08:11:42 +08:00
2025-12-06 20:33:02 -05:00
2025-12-06 20:33:02 -05:00
2025-12-15 13:55:15 -05:00