Alexander Courtis
83fdff7c4a
refactor( #2826 ): globals.TABPAGES -> WINID_PER_TAB
2025-06-20 11:18:38 +10:00
Alexander Courtis
09ec00c085
refactor( #2826 ): get_winid returns new after consistency check
2025-06-20 10:01:12 +10:00
Alexander Courtis
3615c7dffe
refactor( #2826 ): temporarily reuse BUFNR_PER_TAB in view constructor
2025-06-20 09:33:07 +10:00
Alexander Courtis
5fbd6745eb
refactor( #2826 ): remove unused view member height
2025-06-20 09:19:33 +10:00
Alexander Courtis
f1e9d5165c
refactor( #2826 ): remove unused view members centralize_selection and preserve_window_proportions
2025-06-20 09:12:29 +10:00
Alexander Courtis
414e576bc2
refactor( #2826 ): remove unnecessary view members float, hide_root_folder; use explorer opts
2025-06-20 09:03:19 +10:00
Alexander Courtis
de2ae0b06f
refactor( #2826 ): consistent use of buffer registry, tidy, add todos
2025-06-20 08:32:40 +10:00
Alexander Courtis
d6cd465462
refactor( #2826 ): winnr->winid consistently
2025-06-19 16:46:27 +10:00
Alexander Courtis
b7e9789850
refactor( #2826 ): winnr->winid in view/globals, remove redundant get_winid and get_bufnr calls
2025-06-19 16:44:19 +10:00
Alexander Courtis
6e7ce8771b
refactor( #2826 ): fuller error messages
2025-06-19 16:25:32 +10:00
Alexander Courtis
0a06f65bf0
refactor( #2826 ): move view to instanced window class ( #3153 )
...
* 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
2025-06-19 15:45:55 +10:00
Yavorski
d54a1875a9
fix: invalid window id for popup info window ( #3147 )
2025-06-17 16:59:28 +10:00
phanium
d87b41ca53
fix: window picker ignore hidden window ( #3145 )
2025-06-15 15:04:47 +10:00
Rami Elwan
ae595611fb
feat( #3132 ): add api.node.expand and api.node.collapse ( #3133 )
...
* feat: allow passing node to collapse all
* refactor: use snake case
* feat: handle api legacy calls and update signature
* refactor: make sure open is a boolean
* doc: collapse_all
* Revert "doc: collapse_all"
This reverts commit d243da3e14 .
* add api.node.collapse
* add api.node.expand
* add api.node.expand
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-06-14 17:26:58 +10:00
Lucas Mendes
05d8172ebf
fix( #3143 ): actions.open_file.window_picker.exclude applies when not using window picker ( #3144 )
...
* fix(#3143 ): ensure open.no_window_picker respects window_picker.exclude
* fix(#3143 ): doc
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-06-14 15:35:07 +10:00
Šimon Mandlík
ebcaccda1c
fix( #3134 ): setting one glyph to "" no longer disables others ( #3136 )
...
fix: fixes #3134
2025-05-26 13:32:21 +10:00
Šimon Mandlík
cbc3165e08
fix( #2746 ): background and right aligned icons in floating windows ( #3128 )
...
* fix(#2746 ): fix cursorcolumn and right aligned icons in floating windows
* feat: remove right aligned icons from full name float, show float over right aligned icons
* refactoring: move `extmarks_length` to utils.lua
* fix: decrease `win_width` instead of increasing `text_width` when computing condition for full name float to show
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-05-24 13:19:19 +10:00
Arthur Roos
bd54d1d33c
fix( #3117 ): windows: change file/dir case ( #3135 )
...
fix(#3117 ): allow changing filename's casing
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-05-24 12:52:25 +10:00
Christoph
25d16aab7d
fix: "Invalid buffer id" on closing nvim-tree window ( #3129 )
...
fix: invalid buffer issue
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-05-18 04:35:59 +00:00
Ross W
e4cd856ebf
fix( #3124 ): fix icon padding for "right_align" placements, notably for dotfiles ( #3125 )
...
fix(#3124 ): prevent empty icons_right_align response from breaking padding
2025-05-18 12:26:18 +10:00
Alexander Courtis
e7d1b7dadc
fix( #3122 ): remove redundant vim.validate ( #3123 )
2025-05-09 10:00:28 +10:00
Spencer Chunn
ea5097a1e2
feat( #3113 ): add renderer.icons.folder_arrow_padding ( #3114 )
...
* Update padding.lua
* add folder_arrow_padding
* update help docs
* refactor: renderer.icons.padding
renderer.icons.padding -> renderer.icons.padding.icon
renderer.icons.folder_arrow_padding ->
renderer.icons.padding.folder_arrow
* refactor: renderer.icons.padding
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-05-05 11:51:29 +10:00
Alexander Courtis
582ae48c9e
chore: fix incorrect @param ( #3115 )
2025-04-26 12:55:36 +10:00
Devansh Sharma
c24c0470d9
feat: add TreePreOpen event ( #3105 )
...
* feat: Add `TreePreOpen` and `TreePreClose` events
* docs: Update docs for `TreePreOpen` and `TreePreClose` events
* chore: remove `TreePreClose` event and update dispatch of `TreePreOpen`
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-04-21 08:39:48 +10:00
Devansh Sharma
3a63717d3d
fix: reliably dispatch exactly one TreeOpen and TreeClose events ( #3107 )
...
* fix: correctly handle `TreeOpen` and `TreeClose` event dispatch
* fix: lint issues
2025-04-20 09:49:28 +10:00
Alexander Courtis
5bea2b3752
fix( #3101 ): when renderer.highlight_opened_files = "none" do not reload on BufUnload and BufReadPost ( #3102 )
...
* 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
2025-04-11 12:48:34 +10:00
Šimon Mandlík
c3c1935942
fix: explicitly set border to "none" in full name float ( #3094 )
2025-04-04 17:29:38 +11:00
Alexander Courtis
44d9b58f11
chore: use builtin EmmyLuaCodeStyle for style checking ( #3084 )
...
* 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
2025-03-23 12:46:17 +11:00
Šimon Mandlík
b69914325a
fix: window picker: hide fillchars: stl and stlnc ( #3066 )
...
fix: stl and stlnc fillchars are hidden in window picker
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-02-22 11:32:52 +11:00
Gabriel Crispino
3281f331f7
feat( #1984 ): add quit_on_open and focus opts to various api.node.open functions ( #3054 )
...
* feat: add quit_on_open opt to api.node.open.edit
* fix: fix missing @param annotation
* feat: add focus opt to api.node.open.edit
* fix: fix focus == false behaviour on api.node.open.tab command
* fix: add optional tabpage integer parameter to view.close
if tabpage is not nil, then the function closes the tabpage in this
specific tabpage
* fix: fix quit_on_open == true behaviour on api.node.open.tab command
* fix: add check to not use new opts for certain edit modes
* fix: add docs for new opts
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-02-22 11:09:49 +11:00
Hendrik Ziegler
80523101f0
fix: arithmetic on nil value error on first git project open ( #3064 )
...
* fixed error message when opening new git repo
* defensive nil + type check
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-02-10 08:06:02 +11:00
Alexander Courtis
70825f23db
fix( #3059 ): test for presence of new 0.11 API vim.hl.range ( #3060 )
2025-02-03 15:42:22 +11:00
Gabriel Crispino
fee1da8897
feat( #3037 ): add API node.buffer.delete, node.buffer.wipe ( #3040 )
...
* feat(mappings): add key map to close file buffer
* feat: implement Api.node.buffer.delete
* feat: implement Api.node.buffer.wipe
* refactor: add util fn for common delete ops on bufs
* fix: minor fixes
* refactor: fix lint issues
* fix: undo unintended ApiTreeToggleOpts change
* fix: change error message level to info
* fix: remove unused opts
* refactor: merge delete-buffer and wipe-buffer into single buffer file
* refactor: make wipe and delete fns take a node instead of a file path
* docs: update help with new API commands
* remove refactored utils.lua
* remove unused static setup
* tweak doc
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-01-25 12:47:34 +11:00
Alexander Courtis
db7403243d
chore: resolve deprecated in 0.11 ( #3053 )
...
* chore: resolve deprecated in 0.11
* chore: resolve deprecated in 0.11
* chore: resolve deprecated in 0.11
* chore: resolve deprecated in 0.11
* chore: resolve deprecated in 0.11
* chore: resolve deprecated in 0.11
2025-01-24 11:57:18 +11:00
𝐍𝐆𝐏𝐎𝐍𝐆
fca0b67c0b
fix( #3045 ): wipe scratch buffers for full name and show info popups ( #3050 )
2025-01-18 10:28:06 +11:00
phanium
39bc630816
fix: hijack directory "BufEnter", "BufNewFile" events are nested ( #3044 )
...
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-01-13 15:39:10 +11:00
Lev Yuvenskiy
aae01853dd
fix( #3041 ): use vim.diagnostic.get for updating diagnostics ( #3042 )
...
* fix(#3041 ): use vim.diagnostic.get for updating diagnostics
* fix(#3041 ): remove unnecessary @type
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
2025-01-13 15:15:48 +11:00
fdgdgerg
68fc4c20f5
feat(api): add node.open.vertical_no_picker, node.open.horizontal_no_picker ( #3031 )
...
* test
* add splits with no window pickers
removed the 1 buffer per file limitation
test
test2
* no-picker for splits
* help vertical/horizontal_no_picker
* revert whitespace changes
---------
Co-authored-by: JoeDaBu <joegbu@gmail.com>
Co-authored-by: Alexander Courtis <alex@courtis.org>
2024-12-22 09:35:48 +11:00
Šimon Mandlík
f7b76cd1a7
fix( #3015 ): dynamic width no longer truncates on right_align icons ( #3022 )
2024-12-14 08:54:18 +11:00
Alexander Courtis
c3d9b1779f
docs: notify users with a fs.inotify.max_user_watches message on EMFILE event ( #3028 )
...
* docs: notify users with a fs.inotify.max_user_watches message on EMFILE event
* type safety for newly created vim.v.event type
2024-12-13 10:39:46 +11:00
ShyRobin
db8d7ac1f5
fix( #3018 ): error when focusing nvim-tree when in terminal mode ( #3019 )
...
fix: Can't re-enter normal mode from terminal mode
Co-authored-by: Alexander Courtis <alex@courtis.org>
2024-12-08 12:05:33 +11:00
Jie Liu
6b4be1dc0c
fix: view.width functions may return strings ( #3020 )
...
* Fix get_size() function when size is a function return string
* update view.width help
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
2024-12-08 11:45:32 +11:00
Alexander Courtis
7a4ff1a516
feat( #2948 ): add custom decorators, :help nvim-tree-decorators ( #2996 )
...
* feat(#2948 ): add UserDecorator, proof of concept
* feat(#2948 ): add UserDecorator, proof of concept
* feat(#2948 ): add UserDecorator, proof of concept
* feat(#2948 ): add UserDecorator
* feat(#2948 ): add UserDecorator
* feat(#2948 ): add UserDecorator
* feat(#2948 ): add Decorator node icon override
* feat(#2948 ): add nvim_tree.api.* node classes
* feat(#2948 ): extract _meta following nvim pattern
* feat(#2948 ): extract _meta following nvim pattern
* feat(#2948 ): add decorator registry and order
* feat(#2948 ): add decorator registry and order
* feat(#2948 ): tidy
* feat(#2948 ): document API
* feat(#2948 ): document API
* feat(#2948 ): document API
* feat(#2948 ): pass api nodes to user decorators
* feat(#2948 ): document API
* feat(#2948 ): use renderer.decorators to define order and register
* feat(#2948 ): tidy decorator args and complete documentation
* feat(#2948 ): decorator classes specified by prefix rather than suffix
* feat(#2948 ): improve doc
* feat(#2948 ): improve doc
* feat(#2948 ): improve doc
* feat(#2948 ): additional user decorator safety
* feat(#2948 ): create nvim_tree.api.decorator.UserDecorator class in API, add :extend
* feat(#2948 ): improve doc
2024-12-07 16:03:29 +11:00
Alexander Courtis
ca7c4c33ca
fix( #3009 ): nvim < 0.10 apply view options locally ( #3010 )
2024-11-24 17:00:58 +11:00
Alexander Courtis
1f3ffd6af1
fix( #2954 ): more efficient LSP updates, increase diagnostics.debounce_delay from 50ms to 500ms ( #3007 )
...
* fix(#2954 ): use LSP diagnostic data deltas from events instead of a full query
* fix(#2954 ): use LSP diagnostic data deltas from events instead of a full query
2024-11-22 10:12:47 +11:00
devxpain
f7c65e11d6
fix(api): correct argument types in wrap_node and wrap_node_or_nil ( #3006 )
...
The `wrap_node` and `wrap_node_or_nil` functions now correctly accept `Node?` to handle nil values, resolving a warning about incorrect argument counts in `api.tree.change_root_to_node()`.
2024-11-18 10:00:19 +11:00
des-b
28eac2801b
fix( #2990 ): Do not check if buffer is buflisted in diagnostics.update() ( #2998 )
...
This ensures that LSP diagnostics of files which are not manually opened
by users are rendered by nvim-tree diagnostic indicators.
However when users attach an LSP to nvim-tree this will bring back
flashing as attempted to fix in #2980 . Fixing this should probably done
by checking data passed via diagnostic events (DiagnosticChanged and
CocDiagnosticChanged).
Signed-off-by: des-b <66919647+des-b@users.noreply.github.com>
2024-11-11 08:57:06 +11:00
Alexander Courtis
2ee1c5e17f
feat( #2819 ): add actions.open_file.relative_path, default enabled, following successful experiment ( #2995 )
2024-11-09 14:44:59 +11:00
Alexander Courtis
3fc8de198c
chore: migrate to classic ( #2991 )
...
* add classic, migrating nodes classes
* add mixins to classic
* typechecked optargs constructors for nodes
* typechecked optargs constructors for watcher and event
* luacheck
* typechecked optargs constructors for GitRunner
* typechecked optargs constructors for Sorter
* typechecked optargs constructors for decorators, WIP
* typechecked optargs constructors for decorators, WIP
* typechecked optargs constructors for decorators
* remove class
* replace enums with named maps
* Renderer and Builder use classic, tidy opts
* LiveFilter uses classic, tidy opts
* Filter uses classic, tidy opts
* add FilterTypes named map
* move toggles into filters
* Marks uses classic, tidy opts
* Sorter uses classic, tidy opts
* Clipboard uses classic, tidy opts
* use supers for node methods
* HighlightDisplay uses classic
* protected :new
* Watcher tidy
* Revert "use supers for node methods"
This reverts commit 9fc7a866ec .
* Watcher tidy
* format
* format
* Filters private methods
* format
* Sorter type safety
* Sorter type safety
* Sorter type safety
* Sorter type safety
* Sorter type safety
* Sorter type safety
* tidy Runner
* tidy hi-test name
2024-11-09 14:14:04 +11:00
Alexander Courtis
610a1c189b
chore: resolve undefined-field warnings, fix link git statuses, rewrite devicons ( #2968 )
...
* 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
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* Revert "chore: resolve undefined-field"
This reverts commit be546ff18d41f28466b065c857e1e041659bd2c8.
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* Revert "chore: resolve undefined-field"
This reverts commit e82db1c44d .
* chore: resolve undefined-field
* chore: class new is now generic
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* Revert "chore: resolve undefined-field"
This reverts commit 0e9b844d22 .
* move icon builders into node classes
* move icon builders into node classes
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* chore: resolve undefined-field
* move folder specifics from icons to Directory
* move folder specifics from icons to Directory
* move folder specifics from icons to Directory
* move folder specifics from icons to Directory
* move file specifics from icons to File
* clean up sorters
* chore: resolve undefined-field
* tidy hl icon name
* file devicon uses library to fall back
* file devicon uses library to fall back
* file devicon uses library to fall back
2024-11-03 14:06:12 +11:00