diff --git a/lua/nvim-tree/api.lua b/lua/nvim-tree/api.lua index cd2b33b953f..e5a109142f1 100644 --- a/lua/nvim-tree/api.lua +++ b/lua/nvim-tree/api.lua @@ -9,6 +9,7 @@ local keymap = require("nvim-tree.keymap") local notify = require("nvim-tree.notify") local DirectoryNode = require("nvim-tree.node.directory") +local FileNode = require("nvim-tree.node.file") local FileLinkNode = require("nvim-tree.node.file-link") local RootNode = require("nvim-tree.node.root") local UserDecorator = require("nvim-tree.renderer.decorator.user") @@ -160,11 +161,17 @@ end) Api.tree.change_root_to_node = wrap_node(function(node) if node.name == ".." or node:is(RootNode) then actions.root.change_dir.fn("..") - else - node = node:as(DirectoryNode) - if node then - actions.root.change_dir.fn(node:last_group_node().absolute_path) - end + return + end + + if node:is(FileNode) and node.parent ~= nil then + actions.root.change_dir.fn(node.parent:last_group_node().absolute_path) + return + end + + if node:is(DirectoryNode) then + actions.root.change_dir.fn(node:last_group_node().absolute_path) + return end end)