* 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
* fix(#3171): use vim.system() to determine git toplevel
* Don't use vim.trim
* Ensure sdtout is a string
* Keep Nvim 0.9 compatibility
* Use vim.system to query git config for status.showUntrackedFiles too
* 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
* fix(#2467): remove newline in git paths
* fix: info size suffix and formatting (#2492)
- Now there is a whitespace between value and unit.
- Now values >= 1024 YiB are shown in YiB instead of B.
- To reuse same code a new local function was added: round().
* feat(#2312): fire `TextYankPost` event on path copy (#2489)
* feat(#2312): fire `TextYankPost` event on path copy
* stylua
* Bug fix
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
* feat: mapping and options to sort entries in help window (#2482)
* feat: add option to sort entries in help window
* stylua
* Add keymap to toggle sorting methods
* Bug fix
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
* fix(#2467): remove newline in git paths
* fix(#2467): change cygpath calls to array format
To avoid shell compatibility issues in msys2 environment on Windows
* stylua nit
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
Co-authored-by: Andrew Voynov <37143421+Andrew15-5@users.noreply.github.com>
Co-authored-by: Azad <49314270+Akmadan23@users.noreply.github.com>
* fix(#2382): use --absolute-git-dir when available
* fix(#2382): use --absolute-git-dir when available
* fix(#2382): rename private git members, destroy git watchers on purge
* fix(#2382): consistent naming of toplevel
* fix(#2382): more doc and safety
* fix(#2382): consistent naming of toplevel
* fix(#2382): consistent naming of toplevel
* feat: Watch $GIT_DIR for git changes, if set
While rarely used, it's possible to set the $GIT_DIR environment
variable to instruct git to use a directory other than `.git`.
This checks if that environment variable is set; if it is, the plugin
will watch that directory. If it's not set, it'll fall back to the
default `.git` directory.
* fix: Don't create two watchers for $GIT_DIR
This will ignore a path for watching if EITHER it's '.git', or the value
of $GIT_DIR (if it's set).
If $GIT_DIR is not set, the vim.env object returns `nil`, which will
never match `path`.
* fix: Attempt to make a relative $GIT_DIR absolute
This fixes the issue described in #2243, where the .git folder's path
ends on a weird character produced by `cygpath` when the newline
character is fed into it (when using shell=powershell)
* fix(#1970): additional log function gating for efficiency when not logging
* fix(#1970): additional log function gating for efficiency when not logging
* fix(#1970): disable git integration after 10 timeouts
* fix(#1970): disable git integration after 10 timeouts
* fix(#1970): disable git integration after 10 timeouts
* fix(#1970): cleanly kill timed out git processes
* fix(#1970): revert git kill, to be completed via #1974 experiment
* fix(#1970): revert git kill, to be completed via #1974 experiment
* fix(#1970): additional log function gating for efficiency when not logging
* fix(#1970): additional log function gating for efficiency when not logging
* 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.
* fixed git rename not showing up for the renamed file
* considered " -> " being a part of the filename
Fixed -> pattern to escape -
Fixed "\"" and "\\" in filename
* using string.find(, , true) to match plain ->
* Using -z and removed unnecessary logic
* the nice fix
* fix(#1547): pass git toplevel cwd unescaped, pass git untracked arguments as per toplevel
Co-authored-by: Maximilian Philipp <philipp@student.tugraz.at>
Co-authored-by: Alexander Courtis <alex@courtis.org>