fix: silent handling when buffer has no oil adapter (#573)
This commit is contained in:
parent
975a77cce3
commit
d7c61c7084
8 changed files with 23 additions and 31 deletions
|
|
@ -530,7 +530,7 @@ M.render_action = function(action)
|
|||
return string.format("DELETE %s", short_path)
|
||||
end
|
||||
elseif action.type == "move" or action.type == "copy" then
|
||||
local dest_adapter = config.get_adapter_by_scheme(action.dest_url)
|
||||
local dest_adapter = assert(config.get_adapter_by_scheme(action.dest_url))
|
||||
if dest_adapter == M then
|
||||
local _, src_path = util.parse_url(action.src_url)
|
||||
assert(src_path)
|
||||
|
|
@ -623,7 +623,7 @@ M.perform_action = function(action, cb)
|
|||
fs.recursive_delete(action.entry_type, path, cb)
|
||||
end
|
||||
elseif action.type == "move" then
|
||||
local dest_adapter = config.get_adapter_by_scheme(action.dest_url)
|
||||
local dest_adapter = assert(config.get_adapter_by_scheme(action.dest_url))
|
||||
if dest_adapter == M then
|
||||
local _, src_path = util.parse_url(action.src_url)
|
||||
assert(src_path)
|
||||
|
|
@ -641,7 +641,7 @@ M.perform_action = function(action, cb)
|
|||
cb("files adapter doesn't support cross-adapter move")
|
||||
end
|
||||
elseif action.type == "copy" then
|
||||
local dest_adapter = config.get_adapter_by_scheme(action.dest_url)
|
||||
local dest_adapter = assert(config.get_adapter_by_scheme(action.dest_url))
|
||||
if dest_adapter == M then
|
||||
local _, src_path = util.parse_url(action.src_url)
|
||||
assert(src_path)
|
||||
|
|
|
|||
|
|
@ -303,8 +303,8 @@ M.perform_action = function(action, cb)
|
|||
local conn = get_connection(action.url)
|
||||
conn:rm(res.path, cb)
|
||||
elseif action.type == "move" then
|
||||
local src_adapter = config.get_adapter_by_scheme(action.src_url)
|
||||
local dest_adapter = config.get_adapter_by_scheme(action.dest_url)
|
||||
local src_adapter = assert(config.get_adapter_by_scheme(action.src_url))
|
||||
local dest_adapter = assert(config.get_adapter_by_scheme(action.dest_url))
|
||||
if src_adapter == M and dest_adapter == M then
|
||||
local src_res = M.parse_url(action.src_url)
|
||||
local dest_res = M.parse_url(action.dest_url)
|
||||
|
|
@ -324,8 +324,8 @@ M.perform_action = function(action, cb)
|
|||
cb("We should never attempt to move across adapters")
|
||||
end
|
||||
elseif action.type == "copy" then
|
||||
local src_adapter = config.get_adapter_by_scheme(action.src_url)
|
||||
local dest_adapter = config.get_adapter_by_scheme(action.dest_url)
|
||||
local src_adapter = assert(config.get_adapter_by_scheme(action.src_url))
|
||||
local dest_adapter = assert(config.get_adapter_by_scheme(action.dest_url))
|
||||
if src_adapter == M and dest_adapter == M then
|
||||
local src_res = M.parse_url(action.src_url)
|
||||
local dest_res = M.parse_url(action.dest_url)
|
||||
|
|
|
|||
|
|
@ -464,10 +464,6 @@ M.get_adapter_by_scheme = function(scheme)
|
|||
if adapter == nil then
|
||||
local name = M.adapters[scheme]
|
||||
if not name then
|
||||
vim.notify(
|
||||
string.format("Could not find oil adapter for scheme '%s'", scheme),
|
||||
vim.log.levels.ERROR
|
||||
)
|
||||
return nil
|
||||
end
|
||||
local ok
|
||||
|
|
@ -478,7 +474,6 @@ M.get_adapter_by_scheme = function(scheme)
|
|||
else
|
||||
M._adapter_by_scheme[scheme] = false
|
||||
adapter = false
|
||||
vim.notify(string.format("Could not find oil adapter '%s'", name), vim.log.levels.ERROR)
|
||||
end
|
||||
end
|
||||
if adapter then
|
||||
|
|
|
|||
|
|
@ -224,7 +224,7 @@ M.get_buffer_parent_url = function(bufname, use_oil_parent)
|
|||
if not use_oil_parent then
|
||||
return bufname
|
||||
end
|
||||
local adapter = config.get_adapter_by_scheme(scheme)
|
||||
local adapter = assert(config.get_adapter_by_scheme(scheme))
|
||||
local parent_url
|
||||
if adapter and adapter.get_parent then
|
||||
local adapter_scheme = config.adapter_to_scheme[adapter.name]
|
||||
|
|
@ -1253,8 +1253,7 @@ M.setup = function(opts)
|
|||
end)
|
||||
vim.cmd.doautocmd({ args = { "BufWritePost", params.file }, mods = { silent = true } })
|
||||
else
|
||||
local adapter = config.get_adapter_by_scheme(bufname)
|
||||
assert(adapter)
|
||||
local adapter = assert(config.get_adapter_by_scheme(bufname))
|
||||
adapter.write_file(params.buf)
|
||||
end
|
||||
end,
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ M.create_actions_from_diffs = function(all_diffs)
|
|||
end
|
||||
end
|
||||
for bufnr, diffs in pairs(all_diffs) do
|
||||
local adapter = util.get_adapter(bufnr)
|
||||
local adapter = util.get_adapter(bufnr, true)
|
||||
if not adapter then
|
||||
error("Missing adapter")
|
||||
end
|
||||
|
|
@ -519,7 +519,7 @@ M.try_write_changes = function(confirm, cb)
|
|||
if vim.bo[bufnr].modified then
|
||||
local diffs, errors = parser.parse(bufnr)
|
||||
all_diffs[bufnr] = diffs
|
||||
local adapter = assert(util.get_adapter(bufnr))
|
||||
local adapter = assert(util.get_adapter(bufnr, true))
|
||||
if adapter.filter_error then
|
||||
errors = vim.tbl_filter(adapter.filter_error, errors)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ M.parse = function(bufnr)
|
|||
---@type oil.ParseError[]
|
||||
local errors = {}
|
||||
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
||||
local adapter = util.get_adapter(bufnr)
|
||||
local adapter = util.get_adapter(bufnr, true)
|
||||
if not adapter then
|
||||
table.insert(errors, {
|
||||
lnum = 0,
|
||||
|
|
|
|||
|
|
@ -60,11 +60,12 @@ M.url_escape = function(string)
|
|||
end
|
||||
|
||||
---@param bufnr integer
|
||||
---@param silent? boolean
|
||||
---@return nil|oil.Adapter
|
||||
M.get_adapter = function(bufnr)
|
||||
M.get_adapter = function(bufnr, silent)
|
||||
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
||||
local adapter = config.get_adapter_by_scheme(bufname)
|
||||
if not adapter then
|
||||
if not adapter and not silent then
|
||||
vim.notify_once(
|
||||
string.format("[oil] could not find adapter for buffer '%s://'", bufname),
|
||||
vim.log.levels.ERROR
|
||||
|
|
@ -500,10 +501,7 @@ end
|
|||
---@return oil.Adapter
|
||||
---@return nil|oil.CrossAdapterAction
|
||||
M.get_adapter_for_action = function(action)
|
||||
local adapter = config.get_adapter_by_scheme(action.url or action.src_url)
|
||||
if not adapter then
|
||||
error("no adapter found")
|
||||
end
|
||||
local adapter = assert(config.get_adapter_by_scheme(action.url or action.src_url))
|
||||
if action.dest_url then
|
||||
local dest_adapter = assert(config.get_adapter_by_scheme(action.dest_url))
|
||||
if adapter ~= dest_adapter then
|
||||
|
|
@ -887,7 +885,7 @@ M.get_edit_path = function(bufnr, entry, callback)
|
|||
|
||||
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
||||
local scheme, dir = M.parse_url(bufname)
|
||||
local adapter = M.get_adapter(bufnr)
|
||||
local adapter = M.get_adapter(bufnr, true)
|
||||
assert(scheme and dir and adapter)
|
||||
|
||||
local url = scheme .. dir .. entry.name
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ M.unlock_buffers = function()
|
|||
buffers_locked = false
|
||||
for bufnr in pairs(session) do
|
||||
if vim.api.nvim_buf_is_loaded(bufnr) then
|
||||
local adapter = util.get_adapter(bufnr)
|
||||
local adapter = util.get_adapter(bufnr, true)
|
||||
if adapter then
|
||||
vim.bo[bufnr].modifiable = adapter.is_modifiable(bufnr)
|
||||
end
|
||||
|
|
@ -265,7 +265,7 @@ local function constrain_cursor(mode)
|
|||
end
|
||||
local parser = require("oil.mutator.parser")
|
||||
|
||||
local adapter = util.get_adapter(0)
|
||||
local adapter = util.get_adapter(0, true)
|
||||
if not adapter then
|
||||
return
|
||||
end
|
||||
|
|
@ -296,7 +296,7 @@ local function redraw_trash_virtual_text(bufnr)
|
|||
return
|
||||
end
|
||||
local parser = require("oil.mutator.parser")
|
||||
local adapter = util.get_adapter(bufnr)
|
||||
local adapter = util.get_adapter(bufnr, true)
|
||||
if not adapter or adapter.name ~= "trash" then
|
||||
return
|
||||
end
|
||||
|
|
@ -456,7 +456,7 @@ M.initialize = function(bufnr)
|
|||
end,
|
||||
})
|
||||
|
||||
local adapter = util.get_adapter(bufnr)
|
||||
local adapter = util.get_adapter(bufnr, true)
|
||||
|
||||
-- Set up a watcher that will refresh the directory
|
||||
if
|
||||
|
|
@ -616,7 +616,7 @@ local function render_buffer(bufnr, opts)
|
|||
jump_first = false,
|
||||
})
|
||||
local scheme = util.parse_url(bufname)
|
||||
local adapter = util.get_adapter(bufnr)
|
||||
local adapter = util.get_adapter(bufnr, true)
|
||||
if not scheme or not adapter then
|
||||
return false
|
||||
end
|
||||
|
|
@ -877,7 +877,7 @@ M.render_buffer_async = function(bufnr, opts, callback)
|
|||
handle_error(string.format("Could not parse oil url '%s'", bufname))
|
||||
return
|
||||
end
|
||||
local adapter = util.get_adapter(bufnr)
|
||||
local adapter = util.get_adapter(bufnr, true)
|
||||
if not adapter then
|
||||
handle_error(string.format("[oil] no adapter for buffer '%s'", bufname))
|
||||
return
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue