diff --git a/lua/oil/init.lua b/lua/oil/init.lua index 2cc9216..56e6d7d 100644 --- a/lua/oil/init.lua +++ b/lua/oil/init.lua @@ -241,8 +241,8 @@ M.open_float = function(dir) for k, v in pairs(config.float.win_options) do vim.api.nvim_win_set_option(winid, k, v) end - util.add_title_to_win(winid, parent_url) vim.cmd.edit({ args = { parent_url }, mods = { keepalt = true } }) + util.add_title_to_win(winid) end ---Open oil browser for a directory diff --git a/lua/oil/util.lua b/lua/oil/util.lua index bcdc989..9192d91 100644 --- a/lua/oil/util.lua +++ b/lua/oil/util.lua @@ -295,15 +295,26 @@ M.get_editor_height = function() end local winid_map = {} -M.add_title_to_win = function(winid, title, opts) +M.add_title_to_win = function(winid, opts) opts = opts or {} opts.align = opts.align or "left" if not vim.api.nvim_win_is_valid(winid) then return end + local function get_title() + local src_buf = vim.api.nvim_win_get_buf(winid) + local title = vim.api.nvim_buf_get_name(src_buf) + local scheme, path = M.parse_url(title) + if config.adapters[scheme] == "files" then + local fs = require("oil.fs") + title = vim.fn.fnamemodify(fs.posix_to_os_path(path), ":~") + end + return title + end -- HACK to force the parent window to position itself -- See https://github.com/neovim/neovim/issues/13403 vim.cmd.redraw() + local title = get_title() local width = math.min(vim.api.nvim_win_get_width(winid) - 4, 2 + vim.api.nvim_strwidth(title)) local title_winid = winid_map[winid] local bufnr @@ -351,10 +362,10 @@ M.add_title_to_win = function(winid, title, opts) if vim.api.nvim_win_get_buf(winid) ~= winbuf then return end - local bufname = vim.api.nvim_buf_get_name(winbuf) + local new_title = get_title() local new_width = - math.min(vim.api.nvim_win_get_width(winid) - 4, 2 + vim.api.nvim_strwidth(bufname)) - vim.api.nvim_buf_set_lines(bufnr, 0, -1, true, { " " .. bufname .. " " }) + math.min(vim.api.nvim_win_get_width(winid) - 4, 2 + vim.api.nvim_strwidth(new_title)) + vim.api.nvim_buf_set_lines(bufnr, 0, -1, true, { " " .. new_title .. " " }) vim.bo[bufnr].modified = false vim.api.nvim_win_set_width(title_winid, new_width) local new_col = 1