fix(windows): treat both backslash and frontslash as path separators (#336)
This commit is contained in:
parent
96f0983e75
commit
3b3a6b23a1
2 changed files with 16 additions and 11 deletions
|
|
@ -4,6 +4,7 @@ local cache = require("oil.cache")
|
||||||
local columns = require("oil.columns")
|
local columns = require("oil.columns")
|
||||||
local config = require("oil.config")
|
local config = require("oil.config")
|
||||||
local constants = require("oil.constants")
|
local constants = require("oil.constants")
|
||||||
|
local fs = require("oil.fs")
|
||||||
local lsp_helpers = require("oil.lsp.helpers")
|
local lsp_helpers = require("oil.lsp.helpers")
|
||||||
local oil = require("oil")
|
local oil = require("oil")
|
||||||
local parser = require("oil.mutator.parser")
|
local parser = require("oil.mutator.parser")
|
||||||
|
|
@ -99,7 +100,8 @@ M.create_actions_from_diffs = function(all_diffs)
|
||||||
table.insert(by_id, diff)
|
table.insert(by_id, diff)
|
||||||
else
|
else
|
||||||
-- Parse nested files like foo/bar/baz
|
-- Parse nested files like foo/bar/baz
|
||||||
local pieces = vim.split(diff.name, "/")
|
local path_sep = fs.is_windows and "[/\\]" or "/"
|
||||||
|
local pieces = vim.split(diff.name, path_sep)
|
||||||
local url = parent_url:gsub("/$", "")
|
local url = parent_url:gsub("/$", "")
|
||||||
for i, v in ipairs(pieces) do
|
for i, v in ipairs(pieces) do
|
||||||
local is_last = i == #pieces
|
local is_last = i == #pieces
|
||||||
|
|
|
||||||
|
|
@ -210,23 +210,26 @@ M.parse = function(bufnr)
|
||||||
end
|
end
|
||||||
local parsed_entry = result.data
|
local parsed_entry = result.data
|
||||||
local entry = result.entry
|
local entry = result.entry
|
||||||
if not parsed_entry.name or parsed_entry.name:match("/") or not entry then
|
|
||||||
local message
|
local err_message
|
||||||
if not parsed_entry.name then
|
if not parsed_entry.name then
|
||||||
message = "No filename found"
|
err_message = "No filename found"
|
||||||
elseif not entry then
|
elseif not entry then
|
||||||
message = "Could not find existing entry (was the ID changed?)"
|
err_message = "Could not find existing entry (was the ID changed?)"
|
||||||
else
|
elseif parsed_entry.name:match("/") or parsed_entry.name:match(fs.sep) then
|
||||||
message = "Filename cannot contain '/'"
|
err_message = "Filename cannot contain path separator"
|
||||||
end
|
end
|
||||||
|
if err_message then
|
||||||
table.insert(errors, {
|
table.insert(errors, {
|
||||||
message = message,
|
message = err_message,
|
||||||
lnum = i - 1,
|
lnum = i - 1,
|
||||||
end_lnum = i,
|
end_lnum = i,
|
||||||
col = 0,
|
col = 0,
|
||||||
})
|
})
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
assert(entry)
|
||||||
|
|
||||||
check_dupe(parsed_entry.name, i)
|
check_dupe(parsed_entry.name, i)
|
||||||
local meta = entry[FIELD_META]
|
local meta = entry[FIELD_META]
|
||||||
if original_entries[parsed_entry.name] == parsed_entry.id then
|
if original_entries[parsed_entry.name] == parsed_entry.id then
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue