From cc2332599f8944076fba29ff7960729b3fcdd71b Mon Sep 17 00:00:00 2001 From: sleeptightAnsiC <91839286+sleeptightAnsiC@users.noreply.github.com> Date: Sun, 7 Jul 2024 01:24:33 +0200 Subject: [PATCH] feat: allow bufnr optional parameter for get_current_dir function (#440) This allows for using get_current_dir in cases where currently hovered buffer is not the desired Oil buffer (e.g. displaying directories for multiple different Oil buffers) --- doc/api.md | 8 ++++++-- doc/oil.txt | 4 +++- lua/oil/init.lua | 6 ++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/doc/api.md b/doc/api.md index 77a07da..411c252 100644 --- a/doc/api.md +++ b/doc/api.md @@ -83,11 +83,15 @@ Change how oil determines if the file is hidden Toggle hidden files and directories -## get_current_dir() +## get_current_dir(bufnr) -`get_current_dir(): nil|string` \ +`get_current_dir(bufnr): nil|string` \ Get the current directory +| Param | Type | Desc | +| ----- | -------------- | --------------------------------------------- | +| bufnr | `nil\|integer` | When nil, get directory of the current buffer | + ## open_float(dir) diff --git a/doc/oil.txt b/doc/oil.txt index ac19879..1329871 100644 --- a/doc/oil.txt +++ b/doc/oil.txt @@ -277,9 +277,11 @@ toggle_hidden() *oil.toggle_hidde Toggle hidden files and directories -get_current_dir(): nil|string *oil.get_current_dir* +get_current_dir({bufnr}): nil|string *oil.get_current_dir* Get the current directory + Parameters: + {bufnr} `integer` When nil, get directory of the current buffer open_float({dir}) *oil.open_float* Open oil browser in a floating window diff --git a/lua/oil/init.lua b/lua/oil/init.lua index e5e21ed..73e3fe8 100644 --- a/lua/oil/init.lua +++ b/lua/oil/init.lua @@ -140,12 +140,14 @@ M.toggle_hidden = function() end ---Get the current directory +---@param bufnr? integer ---@return nil|string -M.get_current_dir = function() +M.get_current_dir = function(bufnr) local config = require("oil.config") local fs = require("oil.fs") local util = require("oil.util") - local scheme, path = util.parse_url(vim.api.nvim_buf_get_name(0)) + local buf_name = vim.api.nvim_buf_get_name(bufnr or 0) + local scheme, path = util.parse_url(buf_name) if config.adapters[scheme] == "files" then assert(path) return fs.posix_to_os_path(path)