From 7274c9de4611df6e04ef8eecb1edb14d33a6ce48 Mon Sep 17 00:00:00 2001 From: Barrett Ruth Date: Tue, 17 Mar 2026 22:24:21 -0400 Subject: [PATCH] fix(ftp): give oil-ftps:// its own adapter name to prevent scheme clobbering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: both oil-ftp:// and oil-ftps:// mapped to the adapter name 'ftp', so config.adapter_to_scheme['ftp'] was set to whichever scheme pairs() iterated last — non-deterministic. init.lua uses adapter_to_scheme[adapter.name] to reconstruct the parent URL, so roughly half the time it injected 'oil-ftps://' into ftp:// buffer navigation, causing the ssl-reqd error on '-' press. Solution: register oil-ftps:// under adapter name 'ftps' via a one-line shim that returns require('oil.adapters.ftp'). Now adapter_to_scheme['ftp'] = 'oil-ftp://' and adapter_to_scheme['ftps'] = 'oil-ftps://' are both stable. --- lua/oil/adapters/ftps.lua | 1 + lua/oil/config.lua | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 lua/oil/adapters/ftps.lua diff --git a/lua/oil/adapters/ftps.lua b/lua/oil/adapters/ftps.lua new file mode 100644 index 0000000..ddd0ab9 --- /dev/null +++ b/lua/oil/adapters/ftps.lua @@ -0,0 +1 @@ +return require('oil.adapters.ftp') diff --git a/lua/oil/config.lua b/lua/oil/config.lua index f96239e..048412d 100644 --- a/lua/oil/config.lua +++ b/lua/oil/config.lua @@ -226,7 +226,7 @@ default_config.adapters = { [oil_s3_string] = 's3', ['oil-trash://'] = 'trash', ['oil-ftp://'] = 'ftp', - ['oil-ftps://'] = 'ftp', + ['oil-ftps://'] = 'ftps', } default_config.adapter_aliases = {} -- We want the function in the default config for documentation generation, but if we nil it out