From 6721128cc8341b9519a1b46eb8932524613cf7ed Mon Sep 17 00:00:00 2001 From: Evgeni Chasnovski Date: Sat, 2 Aug 2025 14:59:47 +0300 Subject: [PATCH] refactor(pack): use `vim.cmd` methods with structured input --- runtime/lua/vim/pack.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/runtime/lua/vim/pack.lua b/runtime/lua/vim/pack.lua index 78945e3950..7ebd9b21e8 100644 --- a/runtime/lua/vim/pack.lua +++ b/runtime/lua/vim/pack.lua @@ -547,7 +547,7 @@ local function checkout(p, timestamp, skip_same_sha) -- directory or if it is empty. local doc_dir = vim.fs.joinpath(p.path, 'doc') vim.fn.delete(vim.fs.joinpath(doc_dir, 'tags')) - copcall(vim.cmd.helptags, vim.fn.fnameescape(doc_dir)) + copcall(vim.cmd.helptags, { doc_dir, magic = { file = false } }) end --- @param plug_list vim.pack.Plug[] @@ -635,7 +635,8 @@ local function pack_add(plug, load) n_active_plugins = n_active_plugins + 1 active_plugins[plug.path] = { plug = plug, id = n_active_plugins } - vim.cmd.packadd({ plug.spec.name, bang = not load }) + -- NOTE: The `:packadd` specifically seems to not handle spaces in dir name + vim.cmd.packadd({ vim.fn.escape(plug.spec.name, ' '), bang = not load, magic = { file = false } }) -- Execute 'after/' scripts if not during startup (when they will be sourced -- automatically), as `:packadd` only sources plain 'plugin/' files. @@ -645,7 +646,7 @@ local function pack_add(plug, load) local after_paths = vim.fn.glob(plug.path .. '/after/plugin/**/*.{vim,lua}', false, true) --- @param path string vim.tbl_map(function(path) - vim.cmd.source(vim.fn.fnameescape(path)) + vim.cmd.source({ path, magic = { file = false } }) end, after_paths) end end