* refactor(#2942): multi instance: move find_node_line to Explorer
* refactor(#2942): multi instance: move get_node_from_path to Explorer
* refactor(#2942): multi instance: move focus_file to Explorer
* refactor(#2942): multi instance: move focus_node_or_parent to Explorer
* refactor(#2942): multi instance: move get_node_from_path to Explorer
* refactor(#2942): multi instance: move find_node to Explorer
* refactor(#2942): multi instance: move get_nodes_by_line to Explorer
* refactor(#2942): multi instance: remove unnecessary focus_file
* refactor(#2942): style
* Revert "feat(#2826): allow only one window with nvim-tree buffer per tab (#3174)"
This reverts commit dd2364d680.
* Revert "refactor(#2826): View tracks winids and bufnrs via events, unused for now (#3170)"
This reverts commit 65bae44922.
* Revert "refactor(#2826): remove view debug/cc, enable new codepaths for get_winid and get_bufnr (#3169)"
This reverts commit a9156c0139.
* refactor(#2826): add View.bufnr and use for all public methods
* use View.bufnr for all internal methods
* revert View.bufnr, add buffer local autocommands
* View revert to globals.BUFNR_BY_TABID until bufnr and winid are tracked for the view
* View track winids and bufnrs via events
* refactor(#2826): fuller error messages
* refactor(#2826): winnr->winid in view/globals, remove redundant get_winid and get_bufnr calls
* refactor(#2826): winnr->winid consistently
* refactor(#2826): consistent use of buffer registry, tidy, add todos
* refactor(#2826): remove unnecessary view members float, hide_root_folder; use explorer opts
* refactor(#2826): remove unused view members centralize_selection and preserve_window_proportions
* refactor(#2826): remove unused view member height
* refactor(#2826): temporarily reuse BUFNR_PER_TAB in view constructor
* refactor(#2826): get_winid returns new after consistency check
* refactor(#2826): globals.TABPAGES -> WINID_PER_TAB
* refactor(#2826): consistent naming of tabid
* refactor(#2826): more consistency checking
* refactor(#2826): more consistency checking
* refactor(#2826): move global CURSORS to view member
* Revert "refactor(#2826): move global CURSORS to view member"
This reverts commit d84dfad1c3.
* refactor(#2826): move global CURSORS to view member
* refactor(#2826): consistency check returns new
* refactor(#2826): remove consistency checks, enabling new path for view get_winid and get_bufnr
* refactor(#2826): restore CURSORS global
* fix(#3101): fix bad reference to renderer.highlight_opened_files during BufUnload and BufReadPost
* fix(#3101): only redraw renderer.highlight_opened_files during BufUnload and BufReadPost
* fix(#3101): only redraw renderer.highlight_opened_files during BufUnload and BufReadPost
* fix(#3101): only redraw renderer.highlight_opened_files during BufUnload and BufReadPost
* chore: sync EmmyLuaCodeStyle settings between .editorconfig and .luarc.json
* chore: lua-language-server 3.11.0 -> 3.13.9
* chore: fix incorrect definition of vim.loop.fs_lstat
* chore: add codestyle-check option to luals-check.sh
* chore: use luals for style check
* chore: use luals for style check
* Revert "chore: use luals for style check"
This reverts commit e5fde80fab.
* chore: use luals for style check
* chore: use luals for style check
* chore: use luals for style check
* chore: use luals for style check
* chore: use luals for style check
* chore: use luals for style check
* chore: use luals for style check
* chore: use luals for style check
* chore: use luals for style check
* chore: use luals for style check
* chore: use luals for style check
* chore: use luals for style check
* add todo
* refactor(#2886): multi instance: node class refactoring: extract links, *_git_status (#2944)
* extract DirectoryLinkNode and FileLinkNode, move Node methods to children
* temporarily move DirectoryNode methods into BaseNode for easier reviewing
* move mostly unchanged DirectoryNode methods back to BaseNode
* tidy
* git.git_status_file takes an array
* update git status of links
* luacheck hack
* safer git_status_dir
* refactor(#2886): multi instance: node class refactoring: DirectoryNode:expand_or_collapse (#2957)
move expand_or_collapse to DirectoryNode
* refactor(#2886): multi instance: node group functions refactoring (#2959)
* move last_group_node to DirectoryNode
* move add BaseNode:as and more doc
* revert parameter name changes
* revert parameter name changes
* add Class
* move group methods into DN
* tidy group methods
* tidy group methods
* tidy group methods
* tidy group methods
* parent is DirectoryNode
* tidy expand all
* BaseNode -> Node
* move watcher to DirectoryNode
* last_group_node is DirectoryNode only
* simplify create-file
* simplify parent
* simplify collapse-all
* simplify live-filter
* style
* move lib.get_cursor_position to Explorer
* move lib.get_node_at_cursor to Explorer
* move lib.get_nodes to Explorer
* move place_cursor_on_node to Explorer
* resolve resource leak in purge_all_state
* move many autocommands into Explorer
* post merge tidy
* add todo
* refactor(#2886): multi instance: node class refactoring: extract links, *_git_status (#2944)
* extract DirectoryLinkNode and FileLinkNode, move Node methods to children
* temporarily move DirectoryNode methods into BaseNode for easier reviewing
* move mostly unchanged DirectoryNode methods back to BaseNode
* tidy
* git.git_status_file takes an array
* update git status of links
* luacheck hack
* safer git_status_dir
* refactor(#2886): multi instance: node class refactoring: DirectoryNode:expand_or_collapse (#2957)
move expand_or_collapse to DirectoryNode
* refactor(#2886): multi instance: node group functions refactoring (#2959)
* move last_group_node to DirectoryNode
* move add BaseNode:as and more doc
* revert parameter name changes
* revert parameter name changes
* add Class
* move group methods into DN
* tidy group methods
* tidy group methods
* tidy group methods
* tidy group methods
* parent is DirectoryNode
* tidy expand all
* BaseNode -> Node
* move watcher to DirectoryNode
* last_group_node is DirectoryNode only
* simplify create-file
* simplify parent
* simplify collapse-all
* simplify live-filter
* style
* more type safety
* Reapply "refactor(#2871, #2886): multi instance: node classes created (#2916)"
This reverts commit 50e919426a.
* fix(#2945): stack overflow on api.git.reload or fugitive event
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* node classes and constructors
* node methods
* refactor(#2875): multi instance renderer
* node classes and constructors
* explorer is a directory node
* extract methods from explore_node
* extract methods from explore_node
* extract methods from explore_node
* extract methods from lib
* use .. name for root node for compatibility
* use node.explorer
* extract node factory, remove unused code
* factories for all nodes, add RootNode
* factories for all nodes, add RootNode
* use factory pattern for decorators
* note regression and commit
* fix dir git status regression
* destroy nodes, not explorer
* add BaseNode:is
* revert changes to create-file, handle in #2924
* extract methods from explorer
* extract methods from explorer
* extract methods from explorer
* use Node everywhere in luadoc
* extract methods from lib
* extract methods from lib
* lint
* remove unused code
* don't call methods on fake root node
* get_node_at_cursor returns explorer (root) node instead of { name = '..' }
* remove unused inject_node
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* extract methods from lib
* node factory uses stat only
* temporary DirectoryNode casting until method extraction into child classes
* lua-language-server 3.10.5 -> 3.11.0
* explicitly call Explorer constructor
* normalise explorer RootNode new call, tidy annotations
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): deal with some cyclic require
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* refactor(#2875): multi instance renderer
* add type fallback for nil types
* add PR suggestions
* Update lua/nvim-tree/explorer/explore.lua
Co-authored-by: Alexander Courtis <alex@courtis.org>
* use type from fs_stat for sshfs compatibility
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
* feat(#2827): Multi Instance: Refactor: nvim-tree.live-filter
* refactor: all usages going through the explorer
* fix: api and filtration
* fix: style
* Update lua/nvim-tree/api.lua
Co-authored-by: Alexander Courtis <alex@courtis.org>
* docs: add missing live filter luadocs
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
* refactor: multi instance nvim-tree.explorer.sorters
* fix: linter errors
* fix: style
* fix: according to code review
* chore: removed comment
* fix: missing cfg params in sorters
* tidy following rebase
* tidy following rebase
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
* coding style
* outlined git.show_on_open_dirs behavior
* show some icon on opendir even if show_on_open_dir=false
and show all children's status on parent
* fixed renamed icon not showing
* sorted icons
* removed DU from deleted as file will show up in tree
* fixed update_git_status in reloaders not tested
* fixed Api.git.reload()
Tested update_git_status in reloaders.lua
* sort icon only if not git signcolumn
* fixed crashing when root dir isn't git dir
* made git.show_on_dirs doc more concise
* git_statuses -> git_status for consistency
* explorer/common.lua -> explorer/node.lua
* fixed#1784 conflict
* don't order icons
* Revert "don't order icons"
This reverts commit 23f6276ef7.
* fix(#1731): watcher refreshes node rather than the first node matching absolute path, profile refresh
* fix(#1731): reload explorer reloads closed folders
* fix(#1731): do not fire folder created event on file create
* fix(#1731): reload profile absolute path, not link to
* fix(#1731): find-file locks/profiles on real path, reloads when watchers disabled
* Revert "fix(#1731): reload explorer reloads closed folders"
This reverts commit 5dfd8bd2fa.
* fix(#1731): tidy watch reload
* fix(#1731): move refresh_node from watch to reload
* fix(#1731): find-file reloads all nodes for the containing directory
* fix(#1731): create-file refreshes synchronously
* fix(#1731): remove unused watch node
* fix(#1731): find-file refreshes root
* fix(#1716): create-file invokes find-file
* fix(#1731): refresh path walks down the tree to the targedt
* feat(explorer): add experimental watchers
This commit introduces watchers to update the tree.
This behavior is introduced behind an "filesystem_watchers" option
which should prevent instabilities.
It will become the default at some point.
Co-authored-by: Alexander Courtis <alex@courtis.org>