Commit Graph

1219 Commits

Author SHA1 Message Date
Azad
f742b86852
fix: add legacy options safety 2023-09-17 11:08:57 +10:00
pr4th4m
7f7665a17b
feat: api.marks.bulk.trash (#2391)
* Feature: Bulk trash api

* Update docs

* Follow documentation syntax

* Remove unnecessary refresh

* doc spacing

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-09-16 15:10:36 +10:00
Alexander Courtis
94c7c810af Revert "fix: ensure startup warnings are visible with a multiline message, to work around https://github.com/neovim/neovim/issues/17832 planned for fix in nvim 0.10 (#2387)"
This reverts commit 807dc05156.
2023-09-10 10:38:49 +10:00
Alexander Courtis
b7f6600bc2
feat(#2197): git and diagnostics folder highlight groups (#2409)
* feat(#2197): add git folder highlight groups

* feat(#2197): add diagnostics folder highlight groups
2023-09-09 15:13:14 +10:00
Alexander Courtis
8f48426c88
feat(#2316): add NvimTreeFolderArrowClosed NvimTreeFolderArrowOpen (#2408) 2023-09-09 14:21:25 +10:00
Alexander Courtis
33c3bc562b
feat(#2398): add NvimTreeOpenedFileIcon (#2407) 2023-09-09 13:31:40 +10:00
Tillman Jex
b856d0a0c3
fix(#2392): bookmarks icon placement when group_empty (#2402)
* fix: marks now align with nodes when parent nodes are empty and group_empty option
enabled

* run stylua

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-09-09 11:27:15 +10:00
Azad
51f02366de
feat: validate some option string values (#2404)
* Add check for accepted strings in user opts

* option failures point to :help nvim-tree-opts

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-09-09 11:07:06 +10:00
Alexander Courtis
5897b3622f
fix(#2386): kill git zombies (#2401) 2023-09-03 17:26:05 +10:00
Alexander Courtis
a2b6e5ad2a
docs: help sections and tidy (#2399)
* doc: add nvim-tree-options, sort root level options

* doc: reorder default options, add sections

* doc: collapse opts spacing and tidy

* doc: tidy highlight groups
2023-09-03 15:52:33 +10:00
Alexander Courtis
323f65cb9c
feat(#1917): add diagnostic highlighting and icon placement (#2396)
* feat(#1917): add renderer.highlight_diagnostics

* feat(#1917): add renderer.highlight_diagnostics

* feat(#1917): add enderer.icons.diagnostics_placement

* feat(#1917): add renderer.icons.show.diagnostics

* feat(#1917): document highlight overrides
2023-09-03 12:29:33 +10:00
Alexander Courtis
28c3980b25
fix(#2382): git watcher handles worktrees and submodules, via --absolute-git-dir when it is available (#2389)
* 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
2023-09-02 12:05:34 +10:00
Danie-1
00741206c2
fix: expand and collapse whole folder groups (#2380)
* fix: expand and collapse whole folder groups

* refactor: rename some usages of `next`

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-08-26 14:44:38 +10:00
Antonio Sarosi
b144b33390
feat(#2369): add full renderer.icons.web_devicons options for file and folder (#2375)
* Add `webdev_colors_folder` option

* Check if `M.devicons` exists

* Refactor `get_folder_icon`

* Add configuration options for both files and folders

* web_devicons.*.enabled -> enable

* silent migration: renderer.icons.webdev_colors -> renderer.icons.web_devicons.file.color

* silent migration: renderer.icons.webdev_colors -> renderer.icons.web_devicons.file.color

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-08-26 14:42:44 +10:00
Azad
d11d701857
feat(#2364): add option to sort files first (#2366)
* feat(#2364): add option to show files first

* Refactor `folders_or_files_first` function

* Improve readability

* Remove `fallback` from `folders_or_files_first` function

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-08-26 14:15:56 +10:00
Alexander Courtis
807dc05156
fix: ensure startup warnings are visible with a multiline message, to work around https://github.com/neovim/neovim/issues/17832 planned for fix in nvim 0.10 (#2387) 2023-08-26 13:40:25 +10:00
Mohamed Arish
920868dba1
fix(#2370): Better "y/N" prompts (#2377)
* Changed the default y/n prompt to default to N in most cases(all delete cases) and made it so that the copy paste same name conflict defaults to R(ename)

* Removed all No conditions as they are not used and not needed

* Made item_short into lowercase and also fixed prompts in dressing.nvim and telescope-select.nvim

* Fixed the exception which occurs on pressing esc in the prompt and also made rename to be blank or r.*/R.*
2023-08-20 17:34:14 +10:00
davisthedev
7c4c7e4e98
fix(#2352): windows: escape special filename characters on edit (#2374)
* Fix escape special characters on windows

fixes #2362

* use utils for windows check

* Add function to escape special chars on windows

* Change escape string function to use and/or

* Add nil check in escape special chars function

---------

Co-authored-by: Davis Sanders <dsanders@smartlink.city>
Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-08-20 13:27:33 +10:00
Alexander Courtis
4e36850811
fix(#2301): various git folder status fixes (#2373)
* fix(#2301): reloader handles grouped

* fix(#2301): explore uses correct git project for grouped

* fix(#2301): update parent status correctly across repositories

* fix(#2301): missing require
2023-08-20 12:53:41 +10:00
Alexander Courtis
18c7a31198
chore: remove legacy view.mappings.list (#2371) 2023-08-14 17:41:55 +10:00
Alexander Courtis
ace64228ad
feat(#2305): find file refreshes up the tree when node is not present (#2358) 2023-08-14 11:08:16 +10:00
Alexander Courtis
116b88564f
chore: use stdpath "log" rather than "cache" (#2372) 2023-08-14 11:03:38 +10:00
Alexander Courtis
0a54dcb76b
fix: trash.cmd defaults to 'trash' on macos and windows, document option (#2336)
* fix: trash.cmd defaults to 'trash' on macos

* fix: macOS and windows default trash commands, allow trash on all OS

* fix: windows default trash command doc

* fix: trash.cmd message
2023-08-13 12:18:06 +10:00
Alexander Courtis
904f95cd9d
fix: prompt uses first character of response - allow "yy" (#2357) 2023-08-06 13:26:10 +10:00
xundaoxd
0042886db0
select yes default when select_prompts = false in lib.prompt (#2337)
Co-authored-by: yinchaogao <yinchaogao@deeproute.ai>
Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-08-06 11:14:14 +10:00
Danila Usachev
0a89dcb464
fix(#2343): tree is now correctly abandoned upon an in-place open with eject=false (#2344) 2023-08-01 10:53:58 +10:00
Danila Usachev
4bd30f0137
feat: add actions.open_file.eject (#2341)
* feat: added prevent_buffer_override option to allow in-place opens by :e

* Moved option check inside the callback

* Renamed option to eject
2023-07-29 17:45:03 +10:00
linrongbin16
75c05742bc
feat(trash): add synchronized trash support for windows (#2335)
* feat(trash): support 'trash' on Windows

* feat(trash): need sync wait on Windows to avoid switch to other app from nvim process

* doc: remove 'Only available for UNIX'

* doc(trash): highlight 'Trash' on Windows is syncrhonized

* doc(trash): highlight 'trash' on Windows is synchronized

* doc(trash): remove dot

* fix(trash): check for unix and windows

* fix(trash): comment

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-07-29 17:34:47 +10:00
Alexander Courtis
c1466f991a
fix(#2327): set parent folder git ignore status following file update (#2328)
* fix(#1931): do not execute git status in git ignored directories

* fix(#1931): reload.refresh_node is always asynchronous

* fix(#2327): set parent folder ignore status following file update
2023-07-29 16:28:19 +10:00
Alexander Courtis
273c1700eb
fix(#1931): do not execute git status in git ignored directories (#2326)
* fix(#1931): do not execute git status in git ignored directories

* fix(#1931): reload.refresh_node is always asynchronous
2023-07-23 17:12:49 +10:00
Stefano Stoduto
3b62c6bf2c
feat(event): add TreeRendered (#2324)
* add TreeRendered event

* pass bufnr and winnr to TreeRendered event

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-07-16 17:22:45 +10:00
Alexander Courtis
697bfaccac
feat: add filters.git_ignored (prev git.ignore), apply "Toggle Filter:" prefix to mapping descriptions (#2325) 2023-07-16 13:26:03 +10:00
Zach Himsel
a6daf50b9d
feat: support custom $GIT_DIR (#2263)
* 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
2023-07-16 12:44:21 +10:00
Alexander Courtis
ef305a888b
feat(#2313): sort_by -> sort.sorter, add sort.folders_first default true (#2314)
* feat(#2313): add sort_folders_first, default true

* feat(#2313): add sort.sorter, sort.folders_firs
2023-07-15 15:20:22 +10:00
Cyber Oliveira
a708bd2413
feat: add sort_by "suffix" (#2307)
* feat: adds new type of sorting based on the filename's suffix

* chore(syntax): using string colon methods

* fix(regex): use alphanumeric match for extensions

* feat: adds new type of sorting based on the filename's suffix

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-07-09 13:49:41 +10:00
Cyber Oliveira
04b2c1e08c
fix: sort_by "extension" falls back to name (#2306)
* fix(extension/sorter): fallbacks to C.name when both exts are the same or nil

* fix(nil): files with no extension

* fix(nil): files with no extension

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-07-09 13:12:49 +10:00
Cyber Oliveira
3d2fd90b28
feat: add sort_by "filetype" (#2302)
* feat: adds new type of sorting based on vim's filetype detection

* fix(ft/sorter): fallbacks to C.name when both ft's are nil or equal

* feat: adds new type of sorting based on vim's filetype detection

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-07-09 12:31:06 +10:00
Alexander Courtis
4af572246c
fix(#1989): cut/paste over open buffer (#2279)
* fix(#1989): cut/paste overwrite deletes destination buffer

* fix(#1989): cut/paste overwrite deletes destination buffer
2023-07-02 17:13:50 +10:00
Alexander Courtis
d17389ce53
fix(#2301): do not show git status on grouped dirs when show_on_open_dirs (#2303) 2023-07-02 16:00:27 +10:00
Alexander Courtis
1fe32286db
fix(#2293): remove unnecessary git status during find file (#2294) 2023-07-01 11:28:20 +10:00
Asror
3cc698b35b
feat(#2270): add notify.absolute_path - show file or absolute path (default) names with notifications (#2286)
Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-06-25 13:06:21 +10:00
Alexander Courtis
7aff29d755
feat(#2277): skip overwrite prompt when copy/cut paste into same directory (#2278) 2023-06-25 11:37:55 +10:00
Svetlozar Iliev
c3c6544ee0
feat(event): add WillCreateFile, WillRemoveFile (#2273)
node. These are mostly going to be useful for implementing lsp file
operation actions.

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-06-19 10:00:55 +10:00
Alexander Courtis
bdceaf5096
feat(#1804): add api.marks.bulk.delete with default bd mapping (#2276) 2023-06-18 14:09:11 +10:00
Alexander Courtis
d4f6d33496
fix(#2240): disable watchers following EMFILE (#2268)
* fix(#2240): disable watchers following EMFILE

* fix(#2240): disable watchers following EMFILE
2023-06-18 11:42:48 +10:00
Azad
f873625d06
fix: focus visible parent on collapse all (#2261)
Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-06-12 16:05:06 +10:00
Anton Kriese
f5804ce94e
fix: fs_watcher not started for .git folders (windows) (#2265)
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)
2023-06-12 15:44:52 +10:00
Alexander Courtis
034511714b
fix(#1545): dispatch Event.Resize on all window resizes, requires nvim 0.9+ (#2238) 2023-06-10 16:58:29 +10:00
Steven Stallion
8d82c4dbe1
feat: support vim.diagnostic.is_disabled() (#2232)
Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-06-10 16:10:28 +10:00
Azad
576d4c1b03
refactor: move reload function into utils module (#2247)
* refactor: move `reload` function into `utils` module

* docs: add annotations to `utils.focus_node_or_parent`

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-06-10 16:02:02 +10:00
Alexander Courtis
63061404f4
feat(#1837): add git.disable_for_dirs (#2239)
* feat(##1837): add git.disabled_dirs

* feat(#1837): add git.disable_for_dirs

* feat(#1837): note disable_for_dirs evaluation
2023-06-04 14:29:04 +10:00
Alexander Courtis
164eb10cbd
fix(#2104): remove experimental.git.async, always used (#2234) 2023-05-27 15:11:29 +10:00
Azad
d5d6950a0d
fix(#1785): retain focused node on filter toggles (#2202)
* feat(live-filter): focus selected node after clear

* fix(#1785): retain focused node on filter toggle

* fix(#1785): apply requested changes

* fix(live-filter): focus last focused node when cleared on prompt

* refactor: store last focused node in `view` module

* refactor: store last focused node in view module

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-05-27 13:47:36 +10:00
Alexander Courtis
b1e074d2b5
feat: add winid parameter for api.tree.open, toggle, find_file (#2213)
* feat: add winid parameter for api.tree.open, toggle, find_file

* feat: add winid parameter for api.tree.open, toggle, find_file
2023-05-21 17:37:22 +10:00
DoctorKnowsBetter
736c7ff590
feat: add NvimTreeSymlinkIcon (#2198)
* #2193 Add the ability to change the icon color for "symlink_formatted"

* Remove defaults and update doc #2198

---------

Co-authored-by: DoctorKnowsBetter <you@example.com>
Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-05-15 10:54:36 +10:00
Alexander Courtis
b6574056b5
fix(#2191): edit: disregard floating windows (#2212) 2023-05-15 10:38:11 +10:00
Alexander Courtis
89816ace70
fix(#2191): edit: disregard floating windows (#2209) 2023-05-14 11:30:01 +10:00
MoonFruit
498e8793bb
fix: nerd font 3 bookmark icon (#2203) 2023-05-13 15:21:08 +10:00
kang
270c95556c
fix: type annotations for utils.is_nvim_tree_buf (#2180)
Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-05-06 15:37:12 +10:00
James Tan
98b76ff0a2
feat: add NvimTreeNormalFloat (#2167)
* feat: add `NormalFloat` hl for floating windows

* fix: follow default floatwin bg color

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-05-06 15:33:17 +10:00
gegoune
0df384b6c0
feat(api): add node.open.drop() (#2164)
Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-04-30 09:35:25 +02:00
Alexander Courtis
9c60947926
fix(#2175): check number of actions.open_file.window_picker.chars before picking window (#2177) 2023-04-30 15:56:46 +10:00
Zhanibek Adilbekov
d8b154c5f0
fix(#2154): find_file doesn't work when group_empty option is enabled (#2100)
Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-04-29 17:03:20 +10:00
Alexander Courtis
1f5bbc1efd Revert "fix(#1976): support non-standard $GIT_DIR (#2012)"
This reverts commit 517dee64c1.
2023-04-29 16:42:51 +10:00
baahrens
061a05bfd9
fix(#2132): focus file after rename and paste (#2151)
* feat: Focus file after creation

* feat: Focus file after pasting

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-04-23 13:59:16 +10:00
Alexander Courtis
13c714681f
fix(#2157): use stdpath cache for nvim-tree-on-attach.lua (#2159)
* fix(#2157): use stdpath cache for my_on_attach.lua

* fix(#2157): my_on_attach.lua -> nvim-tree-on-attach.lua
2023-04-23 13:09:49 +10:00
hinell
d68b00a63e
feat(api): Add new node selection action based on tab :drop command (#2161)
Co-authored-by: gegoune <dev@clog.rocks>
2023-04-23 02:41:21 +03:00
Damien Mehala
517dee64c1
fix(#1976): support non-standard $GIT_DIR (#2012)
* Improve $GIT_DIR handling

- Retrieve $GIT_DIR using `git rev-parse --absolute-git-dir`
- Move $GIT_DIR ignore in the project exploration part

Resolves #1976

* Code review

- move norm_path to utils.lua
- fix comment #2012

* add comments for utils.norm_path

* get_git_directory use norm_path from utils

* watcher improvements

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-04-22 13:26:43 +10:00
Alexander Courtis
f8bb6b4c76
feat(#1974): enable experimental.git.async by default, see https://github.com/nvim-tree/nvim-tree.lua/issues/2104 (#2158) 2023-04-22 13:22:30 +10:00
Alexander Courtis
a774fa186c
feat(api): add tree.is_visible, tree.is_tree_buf (#2150)
* feat(api): add api.tree.is_visible

* feat(api): add api.tree.is_tree_buf
2023-04-18 16:51:57 +10:00
Alexander Courtis
5b5373254f
fix: help window header is minimum width (#2149)
* help: window header is minimum width

* help: window header is minimum width
2023-04-18 15:30:44 +10:00
Alexander Courtis
5aa318c159
feat: deprecate view.mappings, see https://github.com/nvim-tree/nvim-tree.lua/wiki/Migrating-To-on_attach (#2143) 2023-04-18 10:17:22 +10:00
Anshuman Medhi
8f392fa763
fix(#2126): custom window pickers may create windows (#2140)
call nvim_list_wins again after the picker is run
2023-04-16 15:58:10 +10:00
John Fred Fadrigalan
a8a4834e1a
fix(#2139): API functions not passing arguments (#2141) 2023-04-16 09:27:11 +10:00
Alexander Courtis
6ad5c26f4d
feat(#2079): sort_by may return predefined sort (#2123)
* feat(#2079): prefactor

* feat(#2079): sort_by may return a predefined string
2023-04-15 15:53:40 +10:00
Alexander Courtis
56cdb5827d
fix(#1950): disable most API until nvim-tree setup has been called (#2125)
* fix(#1950): disable most API until nvim-tree setup has been called

* fix(#1950): disable most API until nvim-tree setup has been called
2023-04-15 15:52:07 +10:00
Eden Lentz
f3dbddf8b3
feat(renderer): add NvimTreeSymlinkFolderName (#2000)
* Added FolderSymlink color that is applied in builder.lua

* changed highlight names and links, changed folder build function

* remove NvimTreeSymlinkFolderName

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-04-15 15:24:50 +10:00
Kasper Kondzielski
68f485b454
fix(#1697): remove notify plugin auto-detection (#2135)
* feat: Remove nvim-notify auto-detection

* feat: Remove nvim-notify auto-detection: stylua

---------

Co-authored-by: ghostbuster91 <ghostbuster91@users.noreply.github.com>
Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-04-15 15:18:05 +10:00
Alexander Courtis
0a144ba50a
fix(#2109): floating help window (#2120)
* fix(#2109): floating help window

* fix(#2109): floating help window

* fix(#2109): floating help window

* fix(#2109): floating help window

* fix(#2109): floating help window

* fix(#2109): floating help window

* fix(#2109): floating help window

* fix(#2109): floating help window

* help float no border

Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>

* Update lua/nvim-tree/help.lua

Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>

* Update lua/nvim-tree/help.lua

Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>

* Update lua/nvim-tree/help.lua

Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>

* Update lua/nvim-tree/help.lua

Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>

* fix(#2109): floating help window

* fix(#2109): floating help window

---------

Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>
2023-04-15 14:59:30 +10:00
Alexander Courtis
b601b5aa25
fix(#2133): harden hide_root_folder deprecation (#2134) 2023-04-12 16:33:14 +10:00
Alexander Courtis
e16083cb01
deprecated(#1808): hide_root_folder (#2124) 2023-04-12 16:02:48 +10:00
Alexander Courtis
48d53a5934
feat(#1669): remove deprecated open_on_setup mechanisms (#2122) 2023-04-11 14:53:27 +10:00
Alexander Courtis
920d5c8f7e
fix(#2114): remove deprecated non-API from lib, events (#2121) 2023-04-11 12:11:38 +10:00
Alexander Courtis
0ef3d4613f
feat(#1974): experimental.git.async see https://github.com/nvim-tree/nvim-tree.lua/issues/2104 (#2094)
* async git watcher reload; callback hell for now

* async git watcher reload; revert unnecessary extractions

* async git watcher reload; callback and non-callback functions are required for sync codepaths that loop

* async git watcher reload

* async git watcher reload

* feat(#1974): experimental.git.async

* feat(#1974): experimental.git.async
2023-04-03 16:20:52 +10:00
gegoune
7ad1c204c4
fix: api.node.open.preview should toggle directories (#2099) 2023-04-03 09:20:23 +03:00
Alexander Courtis
0c9bfe7225
feat(#2092): add api.node.navigate.open.next, prev (#2093)
* feat(#2092): add api.node.navigate.open.next, prev

* feat(#2092): add api.node.navigate.listed.next, prev

* feat(#2092): add api.node.navigate.opened.next, prev

* feat(#2092): add api.node.navigate.opened.next, prev
2023-04-03 14:23:03 +10:00
Alexander Courtis
3e9509ec1b
fix(#2088): actions change dir enable false does not update tree root (#2095)
* fix(#2088): update tree root when actions.change_dir disabled

* fix(#2088): update tree root when actions.change_dir disabled
2023-04-03 13:07:11 +10:00
Alexander Courtis
45400cd7e0
feat(api): add api.commands.get (#2083)
* feat(commands): add descriptions

* Update lua/nvim-tree.lua

Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>

* feat(commands): add descriptions, extract to commands.lua

* feat(commands): add descriptions, add api.get_commands

* feat(commands): add descriptions, api.get_commands -> api.commands.get

---------

Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>
2023-03-28 10:52:48 +11:00
Pholawat
a38f9a55a4
fix(#2086): "Rename: Omit Filename" not removing file name (#2087) 2023-03-27 10:52:09 +11:00
Alexander Courtis
6319ad9405
fix(#2078): :NvimTreeFindFile focuses tree (#2080) 2023-03-26 15:34:26 +11:00
Alexander Courtis
886d852f6e
fix(#1858): deprecation warning for config.mappings.active and default (#2084) 2023-03-26 15:29:16 +11:00
Alexander Courtis
6515a1e1a9
fix(#2081): do not change root for inexistent files (#2082) 2023-03-26 15:05:41 +11:00
CsYakamoz
874b7be5d0
fix(diagnostics): coc obey diagnostics.severity (#2072)
`diagnostics.severity` option do not work with coc
2023-03-25 16:06:21 +11:00
EliasGill
31d8e24460
fix(#2057): update focused file on new terminal (#2060)
* Fixing #2057

* Update change-dir.lua

* Fixing error in force_dir_change
2023-03-25 14:50:22 +11:00
Zhizhen He
aa9971768a
doc: spelling (#2070) 2023-03-21 16:39:45 +11:00
Alexander Courtis
4f036342f1
feat(api): add api.config.mappings.get_keymap and get_keymap_default (#2056)
* feat(api): add api.config.mappings.get_keymap and get_keymap_default

* feat(api): add api.config.mappings.get_keymap and get_keymap_default
2023-03-20 11:23:45 +11:00
Alexander Courtis
fe980baa94
feat(api): api.tree.find_file feature parity with open/toggle, convert all commands to API, document commands (#2039)
* fix(#1212): API find file feature parity

* fix(#2011): API find file feature parity

* fix(#2011): API find file feature parity

* fix(#2011): API find file feature parity

* fix(#2011): API find file feature parity

* fix(#2011): API find file feature parity

* fix(#2011): API find file feature parity

* fix(#2011): API find file feature parity
2023-03-13 16:53:20 +11:00
Alexander Courtis
f0a1c6ae2e fix(#1858): fire TreeAttachedPost event following on_attach call 2023-03-13 14:48:01 +11:00
gegoune
1830e5e8a4
feat(git): add TM git status (#2045)
* feat(git): add `TM` git status

Potential fix for #2043.

* fix: show as staged as well
2023-03-13 14:00:32 +11:00
Alexander Courtis
bbb6d48910
feat(api): add api.config.mappings.default_on_attach (#2037) 2023-03-06 10:45:58 +11:00
Jeremy Goh
6117582578
fix: typo on clipboard notify (#2032) 2023-03-04 13:51:09 +11:00
Alexander Courtis
362ecbeed6 fix(#2024): revert removal of deprecated nvim-tree.config nvim_tree_callback 2023-02-28 09:10:13 +11:00
Alexander Courtis
59bcb01d3b fix(#2024): help handles empty mapping description 2023-02-27 20:28:10 +11:00
Alexander Courtis
74959750f7
feat: automated migration from view.mappings.list to on_attach, see https://github.com/nvim-tree/nvim-tree.lua/wiki/Migrating-To-on_attach (#1579)
* chore(mappings): migrate legacy mappings under the hood

* chore(mappings): POC for help and :help on_attach keymaps

* chore(mappings): POC for help and :help on_attach keymaps

* chore(mappings): add desc to all mappings, show in help, reformat help

* chore(mappings): add desc to all mappings

* chore(mappings): add desc to all mappings

* chore(mappings): escape help keys

* chore(mappings): migrate legacy mappings under the hood: map keymap to legacy mappings

* chore(mappings): migrate legacy mappings under the hood: remove dispatch

* Revert "chore(mappings): migrate legacy mappings under the hood: remove dispatch"

This reverts commit f6f439ba59.

* chore(mappings): migrate legacy mappings under the hood: pass node to action_cb

* chore(mappings): migrate legacy mappings under the hood: remove dispatch

* chore(mappings): migrate legacy mappings under the hood: replace mappigns with keymaps in help

* chore(mappings): generate on_attach from user's legacy mappings

* chore(mappings): generate on_attach from user's legacy mappings

* chore(mappings): merge cleanup

* chore(mappings): use default mappings when on_attach not present, log legacy migration

* on_attach is default or user only, legacy and generation includes defaults (#1777)

* chore(mappings): remove mappings via vim.keymap.del instead of filtering mappings, to allow for multiple ways of specifying a key

* doc: specify that the terminal emulator must be configured to use the patched font

* feat(renderer): add NvimTreeOpenedFolderIcon NvimTreeClosedFolderIcon (#1768)

* feat: Add highlight group for opened folder

closes #1674

* docs: Add NvimTreeOpenedFolderIcon default

* feat: Add NvimTreeClosedFolderIcon highlight group

Defaults to NvimTreeFolderIcon

* feat: add diagnostics.show_on_open_dirs git.show_on_open_dirs (#1778)

* feat(diagnostics): only show diagnostic on closed folder

* feat(git): only show git icon on closed folder

* docs: Update feature_request.md (#1788)

* Update feature_request.md

Closes #1654

* Update feature_request.md

Co-authored-by: Alexander Courtis <alex@courtis.org>

* 1786 git next prev land on dirs (#1787)

* Filtered dir with git status that are open when show_on_open_dir is false

* refactored for single source of truth of existence of git status on a node

Putting `has_git_status()` in `explorer.common` because that's where node.status is constructed
Or at least I think that's where it's constructed

* 1786 semantic nit

Co-authored-by: Alexander Courtis <alex@courtis.org>

* fix(git): git rename not showing up for the renamed file (#1783)

* 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

* feat(view): always enable cursorline, users may change this behaviour via Event.TreeOpen (#1814)

* Update view.lua

* set cursorline to true

* feat(event): dispatch Event.NodeRenamed on cut-paste (#1817)

* feat(view): add filters.git_clean, filters.no_buffer (#1784)

* feat(view): add filters.git_clean

* feat(view): add filters.git_clean

* feat(view): add filters.no_buffer

* feat(view): filters.no_buffer misses unloaded, handles buffer in/out

* feat(view): filters.no_buffer matches directories specifically

* feat(view): filters.no_buffer clarify targets

* feat: add placeholder filters.diagnostics_ok, refactor filters

* feat(view): remove placeholder filters.diagnostics_ok

* doc: consolidate and clarify :help examples

* doc: format help

* feat: paste and create always target closed folder, remove create_in_closed_folder (#1802)

* Fix default for file creation in closed directories

* Make paste in closed directories consistent with create

* doc: clarify create_in_closed_folder

* Remove create_in_closed_folder option

* doc: clarify create_in_closed_folder removal message (whoops)

Co-authored-by: Alexander Courtis <alex@courtis.org>

* on_attach is user's or default, nothing else; legacy generated on_attach includes defaults

Co-authored-by: baahrens <bahrens@compeon.de>
Co-authored-by: Richard Li <38484873+chomosuke@users.noreply.github.com>
Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>
Co-authored-by: rishabhjain9191 <rishabh.jain9191@gmail.com>
Co-authored-by: Anton <14187674+antosha417@users.noreply.github.com>
Co-authored-by: Eric Haynes <ehaynes99@gmail.com>

* on_attach_default hardcoded

* format default_on_attach

* source default on_attach directly

* remove human mappings help

* simplified on_attach generation

* simplified on_attach generation

* generate default on_attach

* generate default on_attach

* split out keymap_legacy

* add recently introduced mappings

* legacy api.config.mappings.active and default

* legacy api.config.mappings.active and default

* on_attach help and readme

* legacy generate handles action = ""

* legacy generate handles action =

* legacy generate gives defaults when no user mappings

* legacy generate handles action = ""

* legacy generate api handles overrides

* legacy generate handles subsequent setup, on_attach retains deep copies of legacy config

* add wiki link to generated on_attach

* add opts helper function for on_attach, prefixing 'nvim-tree: '

---------

Co-authored-by: kiyan <yazdani.kiyan@protonmail.com>
Co-authored-by: baahrens <bahrens@compeon.de>
Co-authored-by: Richard Li <38484873+chomosuke@users.noreply.github.com>
Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com>
Co-authored-by: rishabhjain9191 <rishabh.jain9191@gmail.com>
Co-authored-by: Anton <14187674+antosha417@users.noreply.github.com>
Co-authored-by: Eric Haynes <ehaynes99@gmail.com>
2023-02-27 14:19:50 +11:00
Alexander Courtis
9c97e6449b
fix(#1961): stop unnecessary find file refreshes, avoid find file refresh cycles (#2010) 2023-02-21 10:34:01 +11:00
Kai Ting
66c15afd13
fix(#2004): relative path detection handles regex magic (#2005)
* fix(#2004): Change path_relative to use string find and substring to avoid using regex.

- This removed the original gsub with unintentional captures in path_to_matching_str
- The original regex based code captures create a limit where input path cannot
  have more than 32 special charactors ( `.`  , `_` or `-`)

* style nit

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-02-20 10:15:42 +11:00
Alexander Courtis
04f99f14b5
fix(#2003): obey user split command for modified buffers when hidden not set (#2008) 2023-02-20 10:04:55 +11:00
Alexander Courtis
08a0aa1a3b Revert "fix(#1961): cycle detection on refresh, preventing infinite loop (#1996)"
This reverts commit 4222bb875d.
2023-02-15 09:24:12 +11:00
Alexander Courtis
4222bb875d
fix(#1961): cycle detection on refresh, preventing infinite loop (#1996)
* #1961 diagnostic logging refresh_nodes_for_path

* #1961 add cycle detection to refresh_nodes_for_path

* #1961 escape special characters on when path matching during refresh

* #1961 escape special characters on when path matching during refresh
2023-02-14 15:08:41 +11:00
Alexander Courtis
8b8d457e07
fix(#1993): always fire TreeOpen event (#1994) 2023-02-13 14:57:01 +11:00
Alexander Courtis
ba1778e061
fix(#1923): handle empty git icons (#1987) 2023-02-13 10:32:02 +11:00
Alexander Courtis
36e29c3a95
fix(#1970): disable git integration after 5 timeouts (#1990)
* 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
2023-02-12 14:28:48 +11:00
Alexander Courtis
b712b82b0c
fix(#1961): harden profiling functions (#1986) 2023-02-11 17:05:01 +11:00
Alexander Courtis
02fdc262eb
fix(#1970): additional log function gating for efficiency when not logging (#1971)
* fix(#1970): additional log function gating for efficiency when not logging

* fix(#1970): additional log function gating for efficiency when not logging
2023-02-06 10:23:20 +11:00
Alexander Courtis
7eb33d2a6d
fix(#1831): remove instrumentation (#1969) 2023-02-04 16:57:05 +11:00
Alexander Courtis
e0166d1469
fix(#1831): remove instrumentation (#1968) 2023-02-04 16:54:36 +11:00
Alexander Courtis
8505b6ecd8
fix(#1923): handle empty git icons (#1952)
* 1923 skip empty git icons

* 1923 skip empty git icons
2023-02-04 16:27:27 +11:00
Alexander Courtis
215b29bfad
feat(api): api.tree.open feature parity with api.tree.toggle (#1955) 2023-01-31 12:27:10 +11:00
Alexander Courtis
f3b73725c5 stylua: nit 2023-01-30 11:51:30 +11:00
Alexander Courtis
9fcd50d3e1 doc: clarify open/toggle defaults, more robust legacy argument handling 2023-01-30 11:49:21 +11:00
Alexander Courtis
fb775b3353
feat(view): deprecate open_on_setup.* in favour of https://github.com/nvim-tree/nvim-tree.lua/wiki/Open-At-Startup (#1951) 2023-01-30 10:10:41 +11:00
Adam Karim
e14989c0ea
Remove what appears to have been a debug message. (#1949) 2023-01-28 12:51:28 +01:00
Alexander Courtis
8567841b87
fix(#1946): only change vim's global cwd on startup when opening the tree (#1947) 2023-01-28 14:48:05 +11:00
Peter van der Meulen
e05ed6a60f
feat(view): add view.width.padding (#1941)
* fix: variable width accounts for sign/number columns

* Add dynamic sizing padding options

with https://github.com/neovim/neovim/pull/20621 merged in it is now
possible to fully customize the status-column in nvim (the column on the
left containing line-numbers, fold info, signs and borders).

A fair few cool implementations have popped up like:
- https://github.com/CKolkey/config/blob/master/nvim/after/plugin/statuscolumn.lua
- https://github.com/luukvbaal/statuscol.nvim
- and my own personal one (based on CKolkey's fantastic work) https://git.hendrikpeter.net/hendrikpeter/pico-vim/-/blob/main/lua/peva/status_column.lua

The problem with nvim-tree however is that dynamic sizing doesn't take
the custom size of a status column into account and the end of file
names get clipped off. This little patch should fix that (and give some
examples to help other status_column modders get started).

Thanks for looking at this and thanks for making this amazing plugin,
I've been using it for a while and I really like it!

* allow padding function, update docs, rollback readme

* typo in example setup

* help formatting

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-01-28 14:07:14 +11:00
tummetott
55028e30d7
fix(#1942): nvim-tree window options do not trigger OptionSet event (#1945) 2023-01-28 13:31:27 +11:00
Alexander Courtis
9e87ee2d6e fix(#1940): NvimTreeFindFileToggle focus tree 2023-01-26 10:38:47 +11:00
Alexander Courtis
f1c2d6d372
feat(api): api.tree.open/toggle: add current_window option (#1935)
* feat(api): api.tree.open: add current_window option

* feat(api): api.tree.toggle: add current_window option

* feat(api): api.tree.toggle: add current_window option

* doc: api.tree.*

* doc: api.tree.*
2023-01-24 08:30:49 +11:00
yioneko
16f2806d59
fix: remove redundant file existence check in create file operation (#1936) 2023-01-23 15:12:45 +11:00
ramezgerges
96506fee49
feat(view): add view.width.min/max replacing adaptive_size, allowing upper bound (#1915)
* feat: max_width for adaptive_size

* view grow calculates size correctly based on sign column visibility

* limit width to a minimum of 20

* adaptive_size -> min/max table

* harden view size calculations against bad user input

* style

* add back an extra column of padding to adaptive resizing

* back out: limit width to a minimum of 20

* revert unnecessary change

* backout: view grow calculates size correctly based on sign column visibility

* remove adaptive_size from help

* backout unnecessary change M.View.config

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-01-21 15:21:18 +11:00
Alexander Courtis
1b13a49f91
fix(#1916): suppress EPERM watcher failures on windows (#1919) 2023-01-16 13:00:57 +11:00
Alexander Courtis
1f0fc8d6e8
feat(event): add au, global: NvimTreeRequired, NvimTreeSetup (#1912)
* feat(even): add autocommands NvimTreeRequired, NvimTreeSetup

* feat(event): add vim.g.NvimTreeRequired, vim.g.NvimTreeSetup
2023-01-15 10:12:50 +11:00
gegoune
3ce0a8e770
feat(git): support DA state, fix(#1822): test directory capable of watching before presenting it (#1905)
* fix(#1822): test directory capable of watching before presenting it (#1901)

* feat(git): support `DA` state

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-01-10 13:32:53 +11:00
Telman Babayev
ccb6d8a518
feat: add ui.confirm.remove and ui.confirm.trash, deprecate trash.require_confirm (#1887)
* Implement turning off y/n prompt for file deletion

* Refactor different prompt configs to single ui table

* Remove unused fields

* add ui.confirm doc, format/tidy

* trash.require_confirm -> ui.confirm.trash

* Fix nil value trash field

Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-01-08 17:43:01 +11:00
Alexander Courtis
f43f3110a5
feat(event): add TreeAttachedPost (#1877)
* feat(event): add OnAttachPost

* feat(event): add TreeAttachPost

* feat(event): add TreeAttachPost

* feat(event): TreeAttachedPost fired after all mappings created, not just on_attach
2023-01-07 11:50:41 +11:00
Alexander Courtis
bac962caf4
feat(api): add api.config.mappings.active, api.config.mappings.default (#1876)
* feat(api): add config.mappings.current and config.mappings.default

* feat(api): add config.mappings.current and config.mappings.default

* feat(api): add config.mappings.current and config.mappings.default
2023-01-03 13:13:49 +11:00
Richard Li
cdbd7daf29
fix(#1878): nvim frozen on no name buffer when modified.enable (#1879) 2023-01-03 13:11:14 +11:00
Richard Li
951b6e7e55
fix(#1836): add view.debounce_delay (#1871)
* fix(#1836):add view.debounce_delay to avoid some unnecessary explorer reloads

* fixed BufReadPost & BufUnload nil pointer

* update_focused_file.debouce_delay to view.debounce_delay

* changed docs to be more accurate

* added debounce on modified update

* Using same event for filter buffer

* removed unused View.debounce_delay

* changed docs to be more accurate

Co-authored-by: doot <gugegby@gmail.com>
Co-authored-by: Alexander Courtis <alex@courtis.org>
2023-01-02 07:32:56 +11:00
Alexander Courtis
e322fbb80b chore: remove diagnostic suppressions after tidying nits 2023-01-01 13:27:05 +11:00
Richard Li
dcc344cc72
feat(view): indicate modified buffers (#1835)
* Outlined new options

* highlight_modified is highlight_opened_files

* prototype with autocmd

* moved modified into glyphs

* show_on_dirs and show_on_open_dirs

* icon placement before & after

* _get_filename_offset

* fixed :wq doesn't update modified indicator

* highlight_modified, signcolumn modified_placement

Refactored to make everything use HighlightedString to remove all the complex `insert_highlight` calculation.
Not tested.

* updated doc to match the reality of no multi char for glyphs.modified

* fixed git signcolumn doesn't show

* fixed highlight_modified gets replaced by highlight_opened_files

* fixed renderer.icons.show.modified = false crash

* updated doc to reflect empty icon not breaking rendering

* removed debounce_delay to implement in a later PR

* doc nit: order placement

* change modified dirs default to be consistent with git

* illegal git & modified placement changed to default

* don't assume icon exist

* nit remove comment

* Noted in doc that glyphs can't have more than 2 characters if in signcolumn

* Don't sign_define if placement isn't signcolumn

Co-authored-by: Alexander Courtis <alex@courtis.org>
2022-12-31 15:54:04 +11:00
youkwhd
9ad93b6ac0
feat(view): add view.cursorline (#1859)
* feat(#1814): added cursorline config to DEFAULT_OPTS

Extends #1814

Currently, the config cursorline is set to `true` by default.

This behaviour can only be changed by a hacky way of listening to an event, as @alex-courtis mentioned that: "The user can change this default if they want via event".

This PR generalizes the configuration to be easier to config via the function `setup()`.

* doc: add cursorline

Co-authored-by: Alexander Courtis <alex@courtis.org>
2022-12-31 15:27:31 +11:00
Alexander Courtis
3c4958ab3d
fix(#1831): remove windows executable functionality due to occasional vim freeze and performance concerns (#1868)
* #1831 exploratory testing: disable file executable checks

* fix(#1831): remove windows executable functionality
2022-12-31 12:34:55 +11:00
Alexander Courtis
9e4c39572f
fix(#1833): do not find file when view is not visible on the current tab (#1845) 2022-12-23 12:47:39 +11:00
Alexander Courtis
fee6801393 fix(diagnostics): do not show on file/dir with same prefix 2022-12-23 12:44:30 +11:00
Richard Li
3000797e53
fix(diagnostics): do not show on file/dir with same prefix (#1832)
* fix diagnostics showing up on file/dir with same prefix

* using fnamemodify instead of gsub
2022-12-23 12:36:23 +11:00
Alexander Courtis
e14c2895b4
fix(#1841): do not refresh on buffer events when not a file buffer (#1843)
> Haven't had time to dig into #1841

No worries at all; there's no hurry.
2022-12-19 17:18:27 +11:00
Alexander Courtis
4fc74ca321 fix(#1841): do not refresh on buffer events when highlight_opened_files is none 2022-12-19 15:45:07 +11:00
Alexander Courtis
547db6e929 fix(#1831): remove error messages that were previously unreachable and add no value 2022-12-19 15:11:12 +11:00
Alexander Courtis
d949af7245 fix(#1804): do not refresh watched nodes that have been destroyed (deleted) 2022-12-19 14:36:42 +11:00
Ross Wilson
e0cfbbb93d
fix(copy-paste): fix message on clipboard clear (#1838)
* Clear clipboard function was calling utils to
  notify when the clipboard was cleared
* This produced a nil value error
* Replaced with notify
2022-12-19 09:59:38 +11:00
Richard Li
29788cc32a
fix(git): git folder fixes and improvements (#1809)
* 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.
2022-12-17 17:05:33 +11:00