Skip to content

Commit 0c9bfe7

Browse files
authored
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
1 parent 7cd722f commit 0c9bfe7

File tree

4 files changed

+59
-32
lines changed

4 files changed

+59
-32
lines changed

.editorconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,6 @@ end_of_line = lf
77
[*.lua]
88
indent_style = space
99
indent_size = 2
10+
11+
[nvim-tree-lua.txt]
12+
max_line_length = 78

doc/nvim-tree-lua.txt

Lines changed: 51 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -868,8 +868,10 @@ UI rendering setup
868868
Type: `boolean`, Default: `false`
869869

870870
*nvim-tree.renderer.highlight_opened_files*
871-
Highlight icons and/or names for opened files using the
871+
Highlight icons and/or names for |bufloaded()| files using the
872872
`NvimTreeOpenedFile` highlight group.
873+
See |nvim-tree.api.navigate.opened.next()| and
874+
|nvim-tree.api.navigate.opened.prev()|
873875
Value can be `"none"`, `"icon"`, `"name"` or `"all"`.
874876
Type: `string`, Default: `"none"`
875877

@@ -1033,7 +1035,7 @@ Filtering options.
10331035
Type: `boolean`, Default: `false`
10341036

10351037
*nvim-tree.filters.no_buffer*
1036-
Do not show files that have no listed buffer.
1038+
Do not show files that have no |buflisted()| buffer.
10371039
Toggle via the `toggle_no_buffer` action, default mapping `B`.
10381040
For performance reasons this may not immediately update on buffer
10391041
delete/wipe. A reload or filesystem event will result in an update.
@@ -1269,7 +1271,7 @@ Configuration for diagnostic logging.
12691271
Type: `boolean`, Default: `false`
12701272

12711273
==============================================================================
1272-
5. API *nvim-tree-api*
1274+
5. API *nvim-tree-api*
12731275

12741276
Nvim-tree's public API can be used to access features.
12751277
>
@@ -1315,55 +1317,55 @@ api.tree.toggle({opts}) *nvim-tree.api.tree.toggle()*
13151317
|nvim-tree.update_focused_file.update_root|
13161318
{focus} (boolean, true) focus the tree when opening
13171319

1318-
api.tree.close() *nvim-tree.api.tree.close()*
1320+
api.tree.close() *nvim-tree.api.tree.close()*
13191321
Close the tree, affecting all tabs as per |nvim-tree.tab.sync.close|
13201322

1321-
api.tree.close_in_this_tab() *nvim-tree.api.tree.close_in_this_tab()*
1323+
api.tree.close_in_this_tab() *nvim-tree.api.tree.close_in_this_tab()*
13221324
Close the tree in this tab only.
13231325

1324-
api.tree.close_in_all_tabs() *nvim-tree.api.tree.close_in_all_tabs()*
1326+
api.tree.close_in_all_tabs() *nvim-tree.api.tree.close_in_all_tabs()*
13251327
Close the tree in all tabs.
13261328

1327-
api.tree.focus() *nvim-tree.api.tree.focus()*
1329+
api.tree.focus() *nvim-tree.api.tree.focus()*
13281330
Focus the tree, opening it if necessary.
13291331

1330-
api.tree.reload() *nvim-tree.api.tree.reload()*
1332+
api.tree.reload() *nvim-tree.api.tree.reload()*
13311333
Refresh the tree. Does nothing if closed.
13321334

1333-
api.tree.change_root({path}) *nvim-tree.api.tree.change_root()*
1335+
api.tree.change_root({path}) *nvim-tree.api.tree.change_root()*
13341336
Change the tree's root to a path.
13351337

13361338
Parameters: ~
13371339
{path} (string) absolute or relative path
13381340

1339-
*nvim-tree.api.tree.change_root_to_node()*
1341+
*nvim-tree.api.tree.change_root_to_node()*
13401342
api.tree.change_root_to_node({node})
13411343
Change the tree's root to a folder node or the parent of a file node.
13421344

13431345
Parameters: ~
13441346
{node} (Node) folder or file
13451347

1346-
*nvim-tree.api.tree.change_root_to_parent()*
1348+
*nvim-tree.api.tree.change_root_to_parent()*
13471349
api.tree.change_root_to_parent({node})
13481350
Change the tree's root to the parent of a node.
13491351

13501352
Parameters: ~
13511353
{node} (Node) folder or file
13521354

1353-
api.tree.get_node_under_cursor() *nvim-tree.api.tree.get_node_under_cursor()*
1355+
api.tree.get_node_under_cursor() *nvim-tree.api.tree.get_node_under_cursor()*
13541356
Retrieve the currently focused node.
13551357

13561358
Return: ~
13571359
node or nil if tree is not visible
13581360

1359-
api.tree.get_nodes() *nvim-tree.api.tree.get_nodes()*
1361+
api.tree.get_nodes() *nvim-tree.api.tree.get_nodes()*
13601362
Retrieve a hierarchical list of all the nodes. This is a cloned list for
13611363
reference purposes only and should not be passed into other API functions.
13621364

13631365
Return: ~
13641366
table of nodes
13651367

1366-
api.tree.find_file({opts}) *nvim-tree.api.tree.find_file()*
1368+
api.tree.find_file({opts}) *nvim-tree.api.tree.find_file()*
13671369
Find and focus a file or folder in the tree. Finds current buffer unless
13681370
otherwise specified.
13691371

@@ -1377,39 +1379,39 @@ api.tree.find_file({opts}) *nvim-tree.api.tree.find_file()*
13771379
• {update_root} (boolean, false) see |nvim-tree.update_focused_file.update_root|
13781380
{focus} (boolean, false) focus the tree
13791381

1380-
api.tree.search_node() *nvim-tree.api.tree.search_node()*
1382+
api.tree.search_node() *nvim-tree.api.tree.search_node()*
13811383
Open the search dialogue as per the search_node action.
13821384

1383-
api.tree.collapse_all({keep_buffers}) *nvim-tree.api.tree.collapse_all()*
1385+
api.tree.collapse_all({keep_buffers}) *nvim-tree.api.tree.collapse_all()*
13841386
Collapse the tree.
13851387

13861388
Parameters: ~
13871389
• {keep_buffers} (boolean) do not collapse nodes with open buffers.
13881390

1389-
api.tree.expand_all({keep_buffers}) *nvim-tree.api.tree.expand_all()*
1391+
api.tree.expand_all({keep_buffers}) *nvim-tree.api.tree.expand_all()*
13901392
Expand all nodes in the tree.
13911393

1392-
*nvim-tree.api.tree.toggle_gitignore_filter()*
1394+
*nvim-tree.api.tree.toggle_gitignore_filter()*
13931395
api.tree.toggle_gitignore_filter()
13941396
Toggle |nvim-tree.git.ignore| filter.
13951397

1396-
*nvim-tree.api.tree.toggle_git_clean_filter()*
1398+
*nvim-tree.api.tree.toggle_git_clean_filter()*
13971399
api.tree.toggle_git_clean_filter()
13981400
Toggle |nvim-tree.filters.git_clean| filter.
13991401

1400-
*nvim-tree.api.tree.toggle_no_buffer_filter()*
1402+
*nvim-tree.api.tree.toggle_no_buffer_filter()*
14011403
api.tree.toggle_no_buffer_filter()
14021404
Toggle |nvim-tree.filters.no_buffer| filter.
14031405

1404-
*nvim-tree.api.tree.toggle_custom_filter()*
1406+
*nvim-tree.api.tree.toggle_custom_filter()*
14051407
api.tree.toggle_custom_filter()
14061408
Toggle |nvim-tree.filters.custom| filter.
14071409

1408-
*nvim-tree.api.tree.toggle_hidden_filter()*
1410+
*nvim-tree.api.tree.toggle_hidden_filter()*
14091411
api.tree.toggle_hidden_filter()
14101412
Toggle |nvim-tree.filters.dotfiles| filter.
14111413

1412-
api.tree.toggle_help() *nvim-tree.api.tree.toggle_help()*
1414+
api.tree.toggle_help() *nvim-tree.api.tree.toggle_help()*
14131415
Toggle help view.
14141416

14151417
- api.fs: *nvim-tree.api.fs*
@@ -1429,7 +1431,7 @@ api.tree.toggle_help() *nvim-tree.api.tree.toggle_help()*
14291431
- copy.filename
14301432
- copy.relative_path
14311433

1432-
- api.node: *nvim-tree.api.node*
1434+
- api.node: *nvim-tree.api.node*
14331435
- open.edit
14341436
- open.replace_tree_buffer
14351437
- open.no_window_picker
@@ -1446,23 +1448,41 @@ api.tree.toggle_help() *nvim-tree.api.tree.toggle_help()*
14461448
- navigate.sibling.last
14471449
- navigate.parent
14481450
- navigate.parent_close
1449-
- navigate.git.next
1450-
- navigate.git.prev
1451-
- navigate.diagnostics.next
1452-
- navigate.diagnostics.prev
14531451

1454-
- api.git: *nvim-tree.api.git*
1452+
api.node.navigate.git.next() *nvim-tree.api.navigate.git.next()*
1453+
Navigate to the next item showing git status.
1454+
1455+
api.node.navigate.git.prev() *nvim-tree.api.navigate.git.prev()*
1456+
Navigate to the previous item showing git status.
1457+
1458+
*nvim-tree.api.navigate.diagnostics.next()*
1459+
api.node.navigate.diagnostics.next()
1460+
Navigate to the next item showing diagnostic status.
1461+
1462+
*nvim-tree.api.navigate.diagnostics.prev()*
1463+
api.node.navigate.diagnostics.prev()
1464+
Navigate to the next item showing diagnostic status.
1465+
1466+
api.node.navigate.opened.next() *nvim-tree.api.navigate.opened.next()*
1467+
Navigate to the next |bufloaded()| item.
1468+
See |nvim-tree.renderer.highlight_opened_files|
1469+
1470+
api.node.navigate.opened.prev() *nvim-tree.api.navigate.opened.prev()*
1471+
Navigate to the previous |bufloaded()| item.
1472+
See |nvim-tree.renderer.highlight_opened_files|
1473+
1474+
- api.git: *nvim-tree.api.git*
14551475
- reload
14561476

14571477
- api.events: *nvim-tree.api.events*
14581478
- subscribe `(eventType: Event, callback: function(...args))`
14591479
- Event (enum type, please see |nvim_tree_events_kind|)
14601480

1461-
- api.live_filter: *nvim-tree.api.live_filter*
1481+
- api.live_filter: *nvim-tree.api.live_filter*
14621482
- start
14631483
- clear
14641484

1465-
- api.marks: *nvim-tree.api.marks*
1485+
- api.marks: *nvim-tree.api.marks*
14661486
- get
14671487
- list
14681488
- toggle

lua/nvim-tree/actions/moves/item.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ function M.fn(where, what)
1818
valid = explorer_node.get_git_status(node) ~= nil
1919
elseif what == "diag" then
2020
valid = node.diag_status ~= nil
21+
elseif what == "opened" then
22+
valid = vim.fn.bufloaded(node.absolute_path) ~= 0
2123
end
2224

2325
if not first and valid then

lua/nvim-tree/api.lua

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ local notify = require "nvim-tree.notify"
22

33
local Api = {
44
tree = {},
5-
node = { navigate = { sibling = {}, git = {}, diagnostics = {} }, run = {}, open = {} },
5+
node = { navigate = { sibling = {}, git = {}, diagnostics = {}, opened = {} }, run = {}, open = {} },
66
events = {},
77
marks = { bulk = {}, navigate = {} },
88
fs = { copy = {} },
@@ -158,6 +158,8 @@ Api.node.navigate.git.next = inject_node(require("nvim-tree.actions.moves.item")
158158
Api.node.navigate.git.prev = inject_node(require("nvim-tree.actions.moves.item").fn("prev", "git"))
159159
Api.node.navigate.diagnostics.next = inject_node(require("nvim-tree.actions.moves.item").fn("next", "diag"))
160160
Api.node.navigate.diagnostics.prev = inject_node(require("nvim-tree.actions.moves.item").fn("prev", "diag"))
161+
Api.node.navigate.opened.next = inject_node(require("nvim-tree.actions.moves.item").fn("next", "opened"))
162+
Api.node.navigate.opened.prev = inject_node(require("nvim-tree.actions.moves.item").fn("prev", "opened"))
161163

162164
Api.git.reload = require("nvim-tree.actions.reloaders.reloaders").reload_git
163165

0 commit comments

Comments
 (0)