revert(#3180, #3177): resolve live filter failures (#3183)

* Revert "fix(#3172): live filter exception (#3173)"

This reverts commit 0a7fcdf3f8.

* Revert "refactor(#2826): move view to instanced window class (#3153)"

This reverts commit 0a06f65bf0.

* feat(#3157): add view.cursorlineopt
This commit is contained in:
Alexander Courtis
2025-08-10 14:45:25 +10:00
committed by GitHub
parent 9b289abd69
commit a4699c0904
35 changed files with 822 additions and 1249 deletions

View File

@@ -4,6 +4,7 @@ local core = require("nvim-tree.core")
local git = require("nvim-tree.git")
local log = require("nvim-tree.log")
local utils = require("nvim-tree.utils")
local view = require("nvim-tree.view")
local node_factory = require("nvim-tree.node.factory")
local DirectoryNode = require("nvim-tree.node.directory")
@@ -19,7 +20,6 @@ local LiveFilter = require("nvim-tree.explorer.live-filter")
local Sorter = require("nvim-tree.explorer.sorter")
local Clipboard = require("nvim-tree.actions.fs.clipboard")
local Renderer = require("nvim-tree.renderer")
local View = require("nvim-tree.explorer.view")
local FILTER_REASON = require("nvim-tree.enum").FILTER_REASON
@@ -35,7 +35,6 @@ local config
---@field sorters Sorter
---@field marks Marks
---@field clipboard Clipboard
---@field view View
local Explorer = RootNode:extend()
---@class Explorer
@@ -56,18 +55,15 @@ function Explorer:new(args)
self.uid_explorer = vim.loop.hrtime()
self.augroup_id = vim.api.nvim_create_augroup("NvimTree_Explorer_" .. self.uid_explorer, {})
self:log_new("Explorer")
self.open = true
self.opts = config
self.open = true
self.opts = config
self.sorters = Sorter({ explorer = self })
self.renderer = Renderer({ explorer = self })
self.filters = Filters({ explorer = self })
self.live_filter = LiveFilter({ explorer = self })
self.marks = Marks({ explorer = self })
self.clipboard = Clipboard({ explorer = self })
self.view = View({ explorer = self })
self.sorters = Sorter({ explorer = self })
self.renderer = Renderer({ explorer = self })
self.filters = Filters({ explorer = self })
self.live_filter = LiveFilter({ explorer = self })
self.marks = Marks({ explorer = self })
self.clipboard = Clipboard({ explorer = self })
self:create_autocmds()
@@ -75,15 +71,7 @@ function Explorer:new(args)
end
function Explorer:destroy()
self.explorer:log_destroy("Explorer")
self.clipboard:destroy()
self.filters:destroy()
self.live_filter:destroy()
self.marks:destroy()
self.renderer:destroy()
self.sorters:destroy()
self.view:destroy()
log.line("dev", "Explorer:destroy")
vim.api.nvim_del_augroup_by_id(self.augroup_id)
@@ -96,26 +84,11 @@ function Explorer:create_autocmds()
group = self.augroup_id,
callback = function()
appearance.setup()
self.view:reset_winhl()
view.reset_winhl()
self.renderer:draw()
end,
})
if self.opts.view.float.enable and self.opts.view.float.quit_on_focus_loss then
vim.api.nvim_create_autocmd("WinLeave", {
group = self.augroup_id,
pattern = "NvimTree_*",
callback = function(data)
if self.opts.experimental.multi_instance then
log.line("dev", "WinLeave %s", vim.inspect(data, { newline = "" }))
end
if utils.is_nvim_tree_buf(0) then
self.view:close(nil, "WinLeave")
end
end,
})
end
vim.api.nvim_create_autocmd("BufWritePost", {
group = self.augroup_id,
callback = function()
@@ -168,25 +141,6 @@ function Explorer:create_autocmds()
end,
})
-- prevent new opened file from opening in the same window as nvim-tree
vim.api.nvim_create_autocmd("BufWipeout", {
group = self.augroup_id,
pattern = "NvimTree_*",
callback = function(data)
if self.opts.experimental.multi_instance then
log.line("dev", "BufWipeout %s", vim.inspect(data, { newline = "" }))
end
if not utils.is_nvim_tree_buf(0) then
return
end
if self.opts.actions.open_file.eject then
self.view:prevent_buffer_override()
else
self.view:abandon_current_window()
end
end,
})
vim.api.nvim_create_autocmd("BufEnter", {
group = self.augroup_id,
pattern = "NvimTree_*",
@@ -532,7 +486,7 @@ function Explorer:reload_explorer()
local projects = git.reload_all_projects()
self:refresh_nodes(projects)
if self.view:is_visible() then
if view.is_visible() then
self.renderer:draw()
end
event_running = false
@@ -554,7 +508,7 @@ end
---nil on no explorer or invalid view win
---@return integer[]|nil
function Explorer:get_cursor_position()
local winnr = self.view:get_winnr(nil, "Explorer:get_cursor_position")
local winnr = view.get_winnr()
if not winnr or not vim.api.nvim_win_is_valid(winnr) then
return
end
@@ -569,7 +523,7 @@ function Explorer:get_node_at_cursor()
return
end
if cursor[1] == 1 and self.view:is_root_folder_visible(core.get_cwd()) then
if cursor[1] == 1 and view.is_root_folder_visible(core.get_cwd()) then
return self
end
@@ -603,18 +557,6 @@ function Explorer:get_nodes()
return self:clone()
end
---Log a lifecycle message with uid_explorer and absolute_path
---@param msg string?
function Explorer:log_new(msg)
log.line("dev", "+ %-15s %d %s", msg, self.uid_explorer, self.absolute_path)
end
---Log a lifecycle message with uid_explorer and absolute_path
---@param msg string?
function Explorer:log_destroy(msg)
log.line("dev", "- %-15s %d %s", msg, self.uid_explorer, self.absolute_path)
end
function Explorer:setup(opts)
config = opts
end