diff options
| author | Attila Tajti <attila.tajti@gmail.com> | 2022-11-30 11:39:18 +0100 |
|---|---|---|
| committer | Stephan Seitz <stephan.seitz@fau.de> | 2022-12-14 17:27:16 +0100 |
| commit | 8b5080b1bfffed50e41de2db481b4866bb30d755 (patch) | |
| tree | 0953d372cb545b6db7da5dd29b658b967ce85669 | |
| parent | julia: update queries to parser change (#3956) (diff) | |
| download | nvim-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.lua | 21 |
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 |
