* refactor(#2826): singleton View class, WIP * refactor(#2826): singleton View class, WIP * refactor(#2826): singleton View class, WIP * refactor(#2826): singleton View class, WIP * refactor(#2826): singleton View class, WIP * refactor(#2826): singleton View class, WIP * refactor(#2826): singleton View class, WIP * refactor(#2826): singleton View class * refactor(#2826): View is an Explorer member * refactor(#2826): move autocmds to Explorer * refactor(#2826): API uses Explorer's View * refactor(#2826): move View into Explorer package * refactor(#2826): retain necessary view globals * refactor(#2826): move all winhl to appearance constants * refactor(#2826): add lifecycle logging to all Explorer members * refactor(#2826): fix bad cherry-pick * refactor(#2826): better enumerate_options function * refactor(#2826): add View.tab_line for debugging * refactor(#2826): default lifecycle log off * refactor(#2826): add experimental.multi_instance_debug, split globals out of view, move diagnostics to its own module * refactor(#2826): instrument View:get_winnr * refactor(#2826): instrument View:setup_tabpage * refactor(#2826): instrument View:set_current_win, View:prevent_buffer_override * refactor(#2826): instrument View:get_bufnr * refactor(#2826): track member bufnr -> winid with global * refactor(#2826): tidy experiment names and logs * vim: nvim-tree: track bufnr via buffer-update channel * vim: nvim-tree: more logging * vim: nvim-tree: revert: track bufnr via buffer-update channel * refactor(#2826): notify error on view winid and bufnr mismatches * refactor(#2826): notify error on view winid and bufnr mismatches * refactor(#2826): explorer init logging
This commit is contained in:
committed by
GitHub
parent
d54a1875a9
commit
0a06f65bf0
@@ -1,6 +1,5 @@
|
||||
local notify = require("nvim-tree.notify")
|
||||
local utils = require("nvim-tree.utils")
|
||||
local view = require("nvim-tree.view")
|
||||
|
||||
local Class = require("nvim-tree.classic")
|
||||
|
||||
@@ -379,7 +378,7 @@ end
|
||||
|
||||
---@private
|
||||
function Builder:build_header()
|
||||
if view.is_root_folder_visible(self.explorer.absolute_path) then
|
||||
if self.explorer.view:is_root_folder_visible(self.explorer.absolute_path) then
|
||||
local root_name = self:format_root_name(self.explorer.opts.renderer.root_folder_label)
|
||||
table.insert(self.lines, root_name)
|
||||
self:insert_highlight({ "NvimTreeRootFolder" }, 0, string.len(root_name))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local M = {}
|
||||
|
||||
local appearance = require("nvim-tree.appearance")
|
||||
local utils = require("nvim-tree.utils")
|
||||
local view = require("nvim-tree.view")
|
||||
|
||||
local M = {}
|
||||
|
||||
local function hide(win)
|
||||
if win then
|
||||
@@ -72,7 +72,7 @@ local function show(opts)
|
||||
style = "minimal",
|
||||
border = "none"
|
||||
})
|
||||
vim.wo[M.popup_win].winhl = view.View.winopts.winhl
|
||||
vim.wo[M.popup_win].winhl = appearance.WIN_HL
|
||||
|
||||
local ns_id = vim.api.nvim_get_namespaces()["NvimTreeHighlights"]
|
||||
local extmarks = vim.api.nvim_buf_get_extmarks(0, ns_id, { line_nr - 1, 0 }, { line_nr - 1, -1 }, { details = true })
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
local log = require("nvim-tree.log")
|
||||
local view = require("nvim-tree.view")
|
||||
local events = require("nvim-tree.events")
|
||||
|
||||
local Class = require("nvim-tree.classic")
|
||||
@@ -26,9 +25,15 @@ local Renderer = Class:extend()
|
||||
---@protected
|
||||
---@param args RendererArgs
|
||||
function Renderer:new(args)
|
||||
args.explorer:log_new("Renderer")
|
||||
|
||||
self.explorer = args.explorer
|
||||
end
|
||||
|
||||
function Renderer:destroy()
|
||||
self.explorer:log_destroy("Renderer")
|
||||
end
|
||||
|
||||
---@private
|
||||
---@param bufnr number
|
||||
---@param lines string[]
|
||||
@@ -96,28 +101,28 @@ function Renderer:render_hl(bufnr, hl_range_args)
|
||||
end
|
||||
|
||||
function Renderer:draw()
|
||||
local bufnr = view.get_bufnr()
|
||||
local bufnr = self.explorer.view:get_bufnr("Renderer:draw")
|
||||
if not bufnr or not vim.api.nvim_buf_is_loaded(bufnr) then
|
||||
return
|
||||
end
|
||||
|
||||
local profile = log.profile_start("draw")
|
||||
|
||||
local cursor = vim.api.nvim_win_get_cursor(view.get_winnr() or 0)
|
||||
local cursor = vim.api.nvim_win_get_cursor(self.explorer.view:get_winnr(nil, "Renderer:draw1") or 0)
|
||||
|
||||
local builder = Builder(self.explorer):build()
|
||||
|
||||
self:_draw(bufnr, builder.lines, builder.hl_range_args, builder.signs, builder.extmarks, builder.virtual_lines)
|
||||
|
||||
if cursor and #builder.lines >= cursor[1] then
|
||||
vim.api.nvim_win_set_cursor(view.get_winnr() or 0, cursor)
|
||||
vim.api.nvim_win_set_cursor(self.explorer.view:get_winnr(nil, "Renderer:draw2") or 0, cursor)
|
||||
end
|
||||
|
||||
view.grow_from_content()
|
||||
self.explorer.view:grow_from_content()
|
||||
|
||||
log.profile_end(profile)
|
||||
|
||||
events._dispatch_on_tree_rendered(bufnr, view.get_winnr())
|
||||
events._dispatch_on_tree_rendered(bufnr, self.explorer.view:get_winnr(nil, "Renderer:draw3"))
|
||||
end
|
||||
|
||||
return Renderer
|
||||
|
||||
Reference in New Issue
Block a user