Commit Graph

100 Commits

Author SHA1 Message Date
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
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
Richard Li
18272f8df3 fix(view): refresh opened files highlight on buffer read, unload (#1827) 2022-12-16 14:36:00 +11:00
Alexander Courtis
c5dc80c36b 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
2022-12-10 15:55:33 +11:00
Richard Li
9d9c5711dc 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>
2022-12-03 14:39:00 +11:00
Richard Li
829e9f68e1 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
2022-11-29 11:12:34 +11:00
baahrens
0b319a1b28 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
2022-11-28 11:17:09 +11:00
David Aguilera
99d713644d feat(renderer): add renderer.root_folder_label (#1746)
* Add new renderer setting `add_root_updir` to fix #1743.

* Fix default value in docs.

* Remove proposed “add_root_updir” and rename “root_folder_modifier” to “root_folder_label”. Also, “root_folder_label” can be also a function now.

* chore: warn users about breaking change

* fix(#1743): use silent migration of root_folder_modifier

* fix(#1743): add example, document previous renderer.root_folder_modifier

* Add check to validate return type of “root_folder_label” is string.

* Change “root_folder_label” default value to “:~:s?$?/..?”.

* Add missing keyword “local” to local variable “label”.

Co-authored-by: David Aguilera <david.aguilera@neliosoftware.com>
Co-authored-by: gegoune <dev@clog.rocks>
Co-authored-by: Alexander Courtis <alex@courtis.org>
2022-11-26 14:02:05 +11:00
Alexander Courtis
8cc369695b fix: replace vim.* "requires" with explicit calls to vim functions (#1701) 2022-11-06 10:37:33 +11:00
kylo252
6ca6f99e76 feat(notify): add notify.threshold (#1693)
* feat: configurable notification level

add `notify.threshold` to setup opts

* feat: configurable notification level: add threshold example doc

* feat: configurable notification level: log always comes last

Co-authored-by: Alexander Courtis <alex@courtis.org>
2022-11-01 10:24:40 +11:00
Sabu Siyad
fba97517bb fix(#1679): renderer.full_name correctly shows for one character outside (#1688)
ref: `:h getwininfo()`

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

Signed-off-by: Sabu Siyad <hello@ssiyad.com>
2022-10-31 15:38:09 +11:00
Alexander Courtis
48992fd3e8 fix(#1639): ensure tree autocommands match filetype as well as name (#1640)
* fix(#1629): nvim start with file named *NvimTree* opens tree instead of buffer

* Revert "fix(#1629): nvim start with file named *NvimTree* opens tree instead of buffer"

This reverts commit e7136078f7.

* fix(#1629): nvim start with file named *NvimTree* treats file as tree

* fix(#1629): nvim start with file named *NvimTree* treats file as tree

* fix(#1639): ensure tree autocommands match filetype as well as name

* fix(#1639): fix bad merge

* fix(#1639): ensure tree autocommands match filetype as well as name
2022-10-17 12:31:41 +11:00
kiyan
b4d704e88d chore: replace urls from kyazdani42 -> nvim-tree 2022-10-08 11:31:57 +02:00
ADoyle
951e10a64e fix(#1568): show relative path of symlink destination (#1569) 2022-09-04 12:23:56 +10:00
Mivort
e8bf3d778a feat(renderer): add renderer.indent_width (#1505)
* feat: add config option for a tree indent width

add 'indent_width' option to configure visible indent for tree nesting
levels (default is 2).

* add 'bottom' char for a corner extension

* apply stylua formatting

* provide value constraints in documentation

* limit minimal indent width

* make marker symbols have one utf8 char width

* match stylua formatting

* add the commentary regarding utf-8 first symbol match
2022-08-30 09:44:30 +10:00
Alexander Courtis
c272c88daf fix(#1551): handle git status TT as staged 2022-08-27 11:58:16 +10:00
Austin Harris
7fcb48c852 feat: add option for folder arrows to be inline with indent markers (#1468) 2022-07-28 11:49:23 +02:00
kiyan
21fadc1f38 chore: move nvim-tree.utils.warn -> notify.warn
add notify.error and notify.info
2022-07-18 13:46:11 +02:00
kiyan
449b5bd0cb fix(renderer): padding indent with folders only 2022-07-15 18:09:28 +02:00
kiyan
9a02dedd92 fix(renderer): indent markers with arrows
breaking: glyphs for indent markers should only be one block large
2022-07-15 09:33:40 +02:00
kiyan
19425c5896 refactor(renderer): extract bools into variables 2022-07-14 19:07:12 +02:00
kiyan
8632ac2739 fix(renderer): indent markers + folder arrows should offset
fixes #1421
2022-07-14 19:04:01 +02:00
Kiyan
df92f1527f feat(bookmarks): add bookmark feature (#1412) 2022-07-11 10:00:12 +02:00
kiyan
ad1f3ef3bc feat(renderer): show symlink folder destination
fixes https://github.com/kyazdani42/nvim-tree.lua/issues/980
2022-07-10 10:47:51 +02:00
Alexander Courtis
fd562ede63 fix(#1406): allow nvim-tree.renderer.icons.show.folder_arrow
* fix(#1406): allow nvim-tree.renderer.icons.show.folder_arrow when not folder

* fix(#1406): allow nvim-tree.renderer.icons.show.folder_arrow when indent markers enabled

* fix(builder): highlight first iteration for arrow column

* fix stylua

Co-authored-by: kiyan <yazdani.kiyan@protonmail.com>
2022-07-10 12:14:18 +10:00
Alexander Courtis
b81ab199a5 fix(help): clear git signs before draw 2022-07-09 11:44:39 +10:00
Toby O'Sullivan
38fabe86cb Optionally suppress the symlink destination (#1396) 2022-07-05 10:05:21 +02:00
Alexander Courtis
1fc0eee946 fix(#1354): add missing :hi NvimTreeFileIgnored (#1358) 2022-06-18 10:42:12 +02:00
lu5je0
821f050fda feat: full-name of node in floating window (#1305) 2022-06-06 11:15:03 +02:00
Rammiah
6f6eab14dc feat(renderer): indent_markers add a item icon (#1321) 2022-06-05 14:19:19 +02:00
Kiyan
2002b21be7 feat(resize): add ability to grow and shrink the tree when drawing (#1293)
Will adapt the view size based on the longest line.
fixes #865
2022-05-31 09:05:00 +02:00
Alexander Courtis
3ba383d591 chore/remove globals (#1279)
* remove renderer globals: nvim_tree_add_trailing nvim_tree_highlight_opened_files nvim_tree_root_folder_modifier nvim_tree_special_files

* remove renderer globals: nvim_tree_icon_padding

* remove renderer globals: nvim_tree_symlink_arrow

* remove renderer globals: nvim_tree_show_icons, nvim_tree_show_icons

* remove renderer globals: nvim_tree_git_hl

* remove renderer globals: nvim_tree_group_empty

* remove renderer globals: respect_buf_cwd

* remove renderer globals: nvim_tree_create_in_closed_folder

* remove globals: consistency in legacy checks

* remove renderer globals: nvim_tree_special_files

* renderer.icons.symbols -> glyphs
2022-05-28 11:08:40 +10:00
Kiyan
6343813a35 feat(live-filter): add ability to live filter out nodes in the tree (#1056) 2022-05-17 10:03:49 +02:00
kiyan
9d26594b6c fix(renderer): empty space at end of line
fixes #1253
2022-05-15 10:28:17 +02:00
kiyan
7293f8dc70 fix(renderer): padding when git icons are after the name
fixes #1253
2022-05-14 13:41:58 +02:00
kiyan
d88d12f5bc Revert "#1253 only pad git icons when they are present (#1259)"
This reverts commit 90d7b8edb1.
fixes #1267
2022-05-14 13:31:37 +02:00
Kiyan
f8312cd06f feat(renderer): add ability to set git icons in signcolumn (#1242) 2022-05-14 09:54:27 +02:00
Alexander Courtis
90d7b8edb1 #1253 only pad git icons when they are present (#1259) 2022-05-14 09:35:44 +02:00
Kiyan
a1600e57f2 feat(renderer): allow placing git icons after filename (#1203)
This feature allows placing git icons after the filename.
2022-05-07 14:05:51 +02:00
Kiyan
db873b340d chore(diagnostics): move updates to renderer (#1218)
should address #1216
2022-05-07 11:14:32 +02:00
kiyan
ce2cf7131f refactor(renderer): refactor git handling
Concat and apply git highlight inside the builder.
This allows to not leak private data from builder to the git component.
This will also now allow us to customize git icon placement.
2022-04-26 22:59:16 +02:00
kiyan
0d6c0dda3d refactor(renderer): remove set_folder_hl function from icons
This greatly simplifies the folder highlighting logic. It wasn't clear
before and the code was probably doing more than it should. The logic
with highlight_opened_file wasn't working at all, so i just removed it.
This should allow us to greatly extend the order in which the components
are rendered.
2022-04-26 22:28:40 +02:00
kiyan
d8fe48a887 refactor(renderer): return hl group from get_file_icon
this allows to not pass private data from builder to component
2022-04-26 21:50:34 +02:00
kiyan
efcadc482b refactor(renderer): extract build line function 2022-04-24 15:08:05 +02:00
kiyan
785761591f stylua 2022-04-24 14:43:41 +02:00
kiyan
2c46464226 chore: add more sensible defaults for icons
adds a symlink and default icon by default
fixes #1192
2022-04-24 11:29:03 +02:00
kiyan
2bf6241989 fix(renderer): render hl should take a table of saved highlights
fixes #1190
2022-04-24 11:20:23 +02:00
Alexander Courtis
c46653b4a3 #1186 open fail when nvim_tree_show_icons.folders = 0 2022-04-24 11:43:28 +10:00
kiyan
15d5e0609a refactor(renderer): extract folder name creation 2022-04-23 15:36:27 +02:00
kiyan
ec6ccf33ff refactor(renderer): abstract configuration related code
- vim.g variables passed as configuration for builder in
  renderer/init.lua.
- pass special and pictures maps during configuration
2022-04-23 15:27:30 +02:00