aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAttila Tajti <attila.tajti@gmail.com>2022-11-30 11:39:18 +0100
committerStephan Seitz <stephan.seitz@fau.de>2022-12-14 17:27:16 +0100
commit8b5080b1bfffed50e41de2db481b4866bb30d755 (patch)
tree0953d372cb545b6db7da5dd29b658b967ce85669
parentjulia: update queries to parser change (#3956) (diff)
downloadnvim-treesitter-8b5080b1bfffed50e41de2db481b4866bb30d755.tar
nvim-treesitter-8b5080b1bfffed50e41de2db481b4866bb30d755.tar.gz
nvim-treesitter-8b5080b1bfffed50e41de2db481b4866bb30d755.tar.bz2
nvim-treesitter-8b5080b1bfffed50e41de2db481b4866bb30d755.tar.lz
nvim-treesitter-8b5080b1bfffed50e41de2db481b4866bb30d755.tar.xz
nvim-treesitter-8b5080b1bfffed50e41de2db481b4866bb30d755.tar.zst
nvim-treesitter-8b5080b1bfffed50e41de2db481b4866bb30d755.zip
shell: respect shellslash option on Windows
Always use backlashes as path separators in commands when they are used in cmd.exe. Fixes #2844 #1965
-rw-r--r--lua/nvim-treesitter/shell_command_selectors.lua21
1 files changed, 16 insertions, 5 deletions
diff --git a/lua/nvim-treesitter/shell_command_selectors.lua b/lua/nvim-treesitter/shell_command_selectors.lua
index 59bbb0e41..fd53bbee8 100644
--- a/lua/nvim-treesitter/shell_command_selectors.lua
+++ b/lua/nvim-treesitter/shell_command_selectors.lua
@@ -1,6 +1,17 @@
local fn = vim.fn
local utils = require "nvim-treesitter.utils"
+-- Convert path for cmd.exe on Windows.
+-- This is needed when vim.opt.shellslash is in use.
+local function cmdpath(p)
+ if vim.opt.shellslash:get() then
+ local r = p:gsub("/", "\\")
+ return r
+ else
+ return p
+ end
+end
+
local M = {}
function M.select_mkdir_cmd(directory, cwd, info_msg)
@@ -8,7 +19,7 @@ function M.select_mkdir_cmd(directory, cwd, info_msg)
return {
cmd = "cmd",
opts = {
- args = { "/C", "mkdir", directory },
+ args = { "/C", "mkdir", cmdpath(directory) },
cwd = cwd,
},
info = info_msg,
@@ -32,7 +43,7 @@ function M.select_rm_file_cmd(file, info_msg)
return {
cmd = "cmd",
opts = {
- args = { "/C", "if", "exist", file, "del", file },
+ args = { "/C", "if", "exist", cmdpath(file), "del", cmdpath(file) },
},
info = info_msg,
err = "Could not delete " .. file,
@@ -135,7 +146,7 @@ function M.select_install_rm_cmd(cache_folder, project_name)
return {
cmd = "cmd",
opts = {
- args = { "/C", "if", "exist", dir, "rmdir", "/s", "/q", dir },
+ args = { "/C", "if", "exist", cmdpath(dir), "rmdir", "/s", "/q", cmdpath(dir) },
},
}
else
@@ -153,7 +164,7 @@ function M.select_mv_cmd(from, to, cwd)
return {
cmd = "cmd",
opts = {
- args = { "/C", "move", "/Y", from, to },
+ args = { "/C", "move", "/Y", cmdpath(from), cmdpath(to) },
cwd = cwd,
},
}
@@ -261,7 +272,7 @@ end
function M.make_directory_change_for_command(dir, command)
if fn.has "win32" == 1 then
- return string.format("pushd %s & %s & popd", dir, command)
+ return string.format("pushd %s & %s & popd", cmdpath(dir), command)
else
return string.format("cd %s;\n %s", dir, command)
end