From 1879339442fc089356b65568221fc54cd298c467 Mon Sep 17 00:00:00 2001 From: Steven Arcangeli Date: Tue, 3 Jan 2023 22:09:20 -0800 Subject: [PATCH] refactor: separate adapter-to-scheme lookup table --- lua/oil/adapters/ssh.lua | 2 +- lua/oil/config.lua | 7 +++++-- lua/oil/init.lua | 13 +++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lua/oil/adapters/ssh.lua b/lua/oil/adapters/ssh.lua index 9b5eeb5..c36630d 100644 --- a/lua/oil/adapters/ssh.lua +++ b/lua/oil/adapters/ssh.lua @@ -81,7 +81,7 @@ local _connections = {} ---@param allow_retry nil|boolean local function get_connection(url, allow_retry) local res = parse_url(url) - res.scheme = config.adapters.ssh + res.scheme = config.adapter_to_scheme.ssh res.path = "" local key = url_to_str(res) local conn = _connections[key] diff --git a/lua/oil/config.lua b/lua/oil/config.lua index 9048cee..2be52f2 100644 --- a/lua/oil/config.lua +++ b/lua/oil/config.lua @@ -75,7 +75,10 @@ M.setup = function(opts) M[k] = v end - vim.tbl_add_reverse_lookup(M.adapters) + M.adapter_to_scheme = {} + for k, v in pairs(M.adapters) do + M.adapter_to_scheme[v] = k + end M._adapter_by_scheme = {} if type(M.trash) == "string" then M.trash = vim.fn.fnamemodify(vim.fn.expand(M.trash), ":p") @@ -116,7 +119,7 @@ M.get_trash_url = function() fs.mkdirp(oil_trash_dir) M.trash = oil_trash_dir end - return M.adapters.files .. fs.os_to_posix_path(M.trash) + return M.adapter_to_scheme.files .. fs.os_to_posix_path(M.trash) end ---@param scheme string diff --git a/lua/oil/init.lua b/lua/oil/init.lua index fdffdbc..e4a1ede 100644 --- a/lua/oil/init.lua +++ b/lua/oil/init.lua @@ -156,7 +156,7 @@ M.get_url_for_path = function(dir) if dir then local abspath = vim.fn.fnamemodify(dir, ":p") local path = fs.os_to_posix_path(abspath) - return config.adapters.files .. path + return config.adapter_to_scheme.files .. path else local bufname = vim.api.nvim_buf_get_name(0) return M.get_buffer_parent_url(bufname) @@ -175,7 +175,7 @@ M.get_buffer_parent_url = function(bufname) local scheme, path = util.parse_url(bufname) if not scheme then local parent, basename - scheme = config.adapters.files + scheme = config.adapter_to_scheme.files if bufname == "" then parent = fs.os_to_posix_path(vim.fn.getcwd()) else @@ -189,7 +189,7 @@ M.get_buffer_parent_url = function(bufname) local adapter = config.get_adapter_by_scheme(scheme) local parent_url if adapter.get_parent then - local adapter_scheme = config.adapters[adapter.name] + local adapter_scheme = config.adapter_to_scheme[adapter.name] parent_url = adapter.get_parent(adapter_scheme .. path) else local parent = pathutil.parent(path) @@ -410,7 +410,7 @@ local function maybe_hijack_directory_buffer(bufnr) end util.rename_buffer( bufnr, - util.addslash(config.adapters.files .. vim.fn.fnamemodify(bufname, ":p")) + util.addslash(config.adapter_to_scheme.files .. vim.fn.fnamemodify(bufname, ":p")) ) end @@ -504,10 +504,7 @@ M.setup = function(opts) local patterns = {} for scheme in pairs(config.adapters) do - -- We added a reverse lookup to config.adapters, so filter the keys - if vim.endswith(scheme, "://") then - table.insert(patterns, scheme .. "*") - end + table.insert(patterns, scheme .. "*") end local scheme_pattern = table.concat(patterns, ",")