Skip to content

docs: clarify node parameters in API, use of function {rhs} in on_attach #2899

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 8, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 59 additions & 54 deletions doc/nvim-tree-lua.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1679,10 +1679,8 @@ to avoid breaking configurations due to internal breaking changes.
The api is separated in multiple modules, which can be accessed with
`api.<module>.<function>`

Functions that needs a tree node parameter are exposed with an abstraction
that injects the node from the cursor position in the tree when calling
the function. It will use the node you pass as an argument in priority if it
exists.
Functions accepting {node} as their first argument will use the node under the
cursor when that argument is not present or nil.

==============================================================================
6.1 API TREE *nvim-tree-api.tree*
Expand Down Expand Up @@ -1808,9 +1806,11 @@ tree.collapse_all({keep_buffers}) *nvim-tree-api.tree.collapse_all()*
Parameters: ~
• {keep_buffers} (boolean) do not collapse nodes with open buffers.

tree.expand_all() *nvim-tree-api.tree.expand_all()*
Recursively expand all nodes in the tree.
Folder: only the nodes underneath that folder.
tree.expand_all({node}) *nvim-tree-api.tree.expand_all()*
Recursively expand all nodes under the tree root or specified folder.

Parameters: ~
• {node} (Node|nil) folder

*nvim-tree-api.tree.toggle_enable_filters()*
tree.toggle_enable_filters()
Expand Down Expand Up @@ -1885,86 +1885,86 @@ fs.create({node}) *nvim-tree-api.fs.create()*
Multiple directories/files may be created e.g. `foo/bar/baz`

Parameters: ~
• {node} (Node) parent, uses the parent of a file.
• {node} (Node|nil) parent, uses the parent of a file.

fs.remove({node}) *nvim-tree-api.fs.remove()*
Delete a file or folder from the file system.

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.trash({node}) *nvim-tree-api.fs.trash()*
Trash a file or folder as per |nvim-tree.trash|

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.rename_node({node}) *nvim-tree-api.fs.rename_node()*
Prompt to rename a file or folder.

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.rename({node}) *nvim-tree-api.fs.rename()*
Prompt to rename a file or folder by name.

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.rename_basename({node}) *nvim-tree-api.fs.rename_basename()*
Prompt to rename a file or folder by name with extension omitted.

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.rename_sub({node}) *nvim-tree-api.fs.rename_sub()*
Prompt to rename a file or folder by absolute path with name omitted.

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.rename_full({node}) *nvim-tree-api.fs.rename_full()*
Prompt to rename a file or folder by absolute path.

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.cut({node}) *nvim-tree-api.fs.cut()*
Cut a file or folder to the nvim-tree clipboard.

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.paste({node}) *nvim-tree-api.fs.paste()*
Paste a file or folder from the nvim-tree clipboard.

Parameters: ~
• {node} (Node) destination folder, uses the parent of a file.
• {node} (Node|nil) destination folder, uses the parent of a file.

fs.copy.node({node}) *nvim-tree-api.fs.copy.node()*
Copy a file or folder from the nvim-tree clipboard.

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.copy.absolute_path({node}) *nvim-tree-api.fs.copy.absolute_path()*
Copy the absolute path of a file or folder to the system clipboard.

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.copy.filename({node}) *nvim-tree-api.fs.copy.filename()*
Copy the name of a file or folder to the system clipboard.

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.copy.relative_path({node}) *nvim-tree-api.fs.copy.relative_path()*
Copy the path of a file or folder relative to the tree root to the system
clipboard.

Parameters: ~
• {node} (Node) file or folder
• {node} (Node|nil) file or folder

fs.clear_clipboard() *nvim-tree-api.fs.clear_clipboard()*
Clear the nvim-tree clipboard.
Expand All @@ -1975,34 +1975,37 @@ fs.print_clipboard() *nvim-tree-api.fs.print_clipboard()*
==============================================================================
6.3 API NODE *nvim-tree-api.node*

node.open.edit() *nvim-tree-api.node.open.edit()*
Parameters: ~
• {node} (Node|nil) file or folder

node.open.edit({node}) *nvim-tree-api.node.open.edit()*
File: open as per |nvim-tree.actions.open_file|
Folder: expand or collapse
Root: change directory up

*nvim-tree-api.node.open.replace_tree_buffer()*
node.open.replace_tree_buffer()
node.open.replace_tree_buffer({node})
|nvim-tree-api.node.edit()|, file will be opened in place: in the
nvim-tree window.

*nvim-tree-api.node.open.no_window_picker()*
node.open.no_window_picker()
node.open.no_window_picker({node})
|nvim-tree-api.node.edit()|, window picker will never be used as per
|nvim-tree.actions.open_file.window_picker.enable| `false`

node.open.vertical() *nvim-tree-api.node.open.vertical()*
node.open.vertical({node}) *nvim-tree-api.node.open.vertical()*
|nvim-tree-api.node.edit()|, file will be opened in a new vertical split.

node.open.horizontal() *nvim-tree-api.node.open.horizontal()*
node.open.horizontal({node}) *nvim-tree-api.node.open.horizontal()*
|nvim-tree-api.node.edit()|, file will be opened in a new horizontal split.

*nvim-tree-api.node.open.toggle_group_empty()*
node.open.toggle_group_empty()
node.open.toggle_group_empty({node})
Toggle |nvim-tree.renderer.group_empty| for a specific folder.
Does nothing on files.
Needs |nvim-tree.renderer.group_empty| set.

node.open.drop() *nvim-tree-api.node.open.drop()*
node.open.drop({node}) *nvim-tree-api.node.open.drop()*
Switch to window with selected file if it exists.
Open file otherwise.
See: `:h :drop`.
Expand All @@ -2011,114 +2014,115 @@ node.open.drop() *nvim-tree-api.node.open.drop()*
Folder: expand or collapse
Root: change directory up

node.open.tab() *nvim-tree-api.node.open.tab()*
node.open.tab({node}) *nvim-tree-api.node.open.tab()*
|nvim-tree-api.node.edit()|, file will be opened in a new tab.

*nvim-tree-api.node.open.tab_drop()*
node.open.tab_drop()
node.open.tab_drop({node})
Switch to tab containing window with selected file if it exists.
Open file in new tab otherwise.

File: open file using `tab :drop`
Folder: expand or collapse
Root: change directory up

node.open.preview() *nvim-tree-api.node.open.preview()*
node.open.preview({node}) *nvim-tree-api.node.open.preview()*
|nvim-tree-api.node.edit()|, file buffer will have |bufhidden| set to `delete`.

node.open.preview_no_picker() *nvim-tree-api.node.open.preview_no_picker()*
*nvim-tree-api.node.open.preview_no_picker()*
node.open.preview_no_picker({node})
|nvim-tree-api.node.edit()|, file buffer will have |bufhidden| set to `delete`.
window picker will never be used as per
|nvim-tree.actions.open_file.window_picker.enable| `false`

node.navigate.git.next() *nvim-tree-api.node.navigate.git.next()*
node.navigate.git.next({node}) *nvim-tree-api.node.navigate.git.next()*
Navigate to the next item showing git status.

*nvim-tree-api.node.navigate.git.next_recursive()*
node.navigate.git.next_recursive()
node.navigate.git.next_recursive({node})
Alternative to |nvim-tree-api.node.navigate.git.next()| that navigates to
the next file showing git status, recursively.
Needs |nvim-tree.git.show_on_dirs| set.

*nvim-tree-api.node.navigate.git.next_skip_gitignored()*
node.navigate.git.next_skip_gitignored()
node.navigate.git.next_skip_gitignored({node})
Same as |node.navigate.git.next()|, but skips gitignored files.

node.navigate.git.prev() *nvim-tree-api.node.navigate.git.prev()*
node.navigate.git.prev({node}) *nvim-tree-api.node.navigate.git.prev()*
Navigate to the previous item showing git status.

*nvim-tree-api.node.navigate.git.prev_recursive()*
node.navigate.git.prev_recursive()
node.navigate.git.prev_recursive({node})
Alternative to |nvim-tree-api.node.navigate.git.prev()| that navigates to
the previous file showing git status, recursively.
Needs |nvim-tree.git.show_on_dirs| set.

*nvim-tree-api.node.navigate.git.prev_skip_gitignored()*
node.navigate.git.prev_skip_gitignored()
node.navigate.git.prev_skip_gitignored({node})
Same as |node.navigate.git.prev()|, but skips gitignored files.

*nvim-tree-api.node.navigate.diagnostics.next()*
node.navigate.diagnostics.next()
node.navigate.diagnostics.next({node})
Navigate to the next item showing diagnostic status.

*nvim-tree-api.node.navigate.diagnostics.next_recursive()*
node.navigate.diagnostics.next_recursive()
node.navigate.diagnostics.next_recursive({node})
Alternative to |nvim-tree-api.node.navigate.diagnostics.next()| that
navigates to the next file showing diagnostic status, recursively.
Needs |nvim-tree.diagnostics.show_on_dirs| set.

*nvim-tree-api.node.navigate.diagnostics.prev()*
node.navigate.diagnostics.prev()
node.navigate.diagnostics.prev({node})
Navigate to the next item showing diagnostic status.

*nvim-tree-api.node.navigate.diagnostics.prev_recursive()*
node.navigate.diagnostics.prev_recursive()
node.navigate.diagnostics.prev_recursive({node})
Alternative to |nvim-tree-api.node.navigate.diagnostics.prev()| that
navigates to the previous file showing diagnostic status, recursively.
Needs |nvim-tree.diagnostics.show_on_dirs| set.

*nvim-tree-api.node.navigate.opened.next()*
node.navigate.opened.next()
node.navigate.opened.next({node})
Navigate to the next |bufloaded()| item.
See |nvim-tree.renderer.highlight_opened_files|

*nvim-tree-api.node.navigate.opened.prev()*
node.navigate.opened.prev()
node.navigate.opened.prev({node})
Navigate to the previous |bufloaded()| item.
See |nvim-tree.renderer.highlight_opened_files|

*nvim-tree-api.node.navigate.sibling.next()*
node.navigate.sibling.next()
node.navigate.sibling.next({node})
Navigate to the next node in the current node's folder, wraps.

*nvim-tree-api.node.navigate.sibling.prev()*
node.navigate.sibling.prev()
node.navigate.sibling.prev({node})
Navigate to the previous node in the current node's folder, wraps.

*nvim-tree-api.node.navigate.sibling.first()*
node.navigate.sibling.first()
node.navigate.sibling.first({node})
Navigate to the first node in the current node's folder.

*nvim-tree-api.node.navigate.sibling.last()*
node.navigate.sibling.last()
node.navigate.sibling.last({node})
Navigate to the last node in the current node's folder.

*nvim-tree-api.node.navigate.parent()*
node.navigate.parent()
node.navigate.parent({node})
Navigate to the parent folder of the current node.

*nvim-tree-api.node.navigate.parent_close()*
node.navigate.parent_close()
node.navigate.parent_close({node})
|api.node.navigate.parent()|, closing that folder.

node.show_info_popup() *nvim-tree-api.node.show_info_popup()*
node.show_info_popup({node}) *nvim-tree-api.node.show_info_popup()*
Open a popup window showing: fullpath, size, accessed, modified, created.

node.run.cmd() *nvim-tree-api.node.run.cmd()*
node.run.cmd({node}) *nvim-tree-api.node.run.cmd()*
Enter |cmdline| with the full path of the node and the cursor at the start
of the line.

node.run.system() *nvim-tree-api.node.run.system()*
node.run.system({node}) *nvim-tree-api.node.run.system()*
Execute |nvim-tree.system_open|

==============================================================================
Expand Down Expand Up @@ -2296,7 +2300,8 @@ Single left mouse mappings can be achieved via `<LeftRelease>`.

Single right / middle mouse mappings will require changes to |mousemodel| or |mouse|.

You may execute your own functions as well as |nvim-tree-api| functions e.g. >
|vim.keymap.set()| {rhs} is a `(function|string)` thus it may be necessary to
define your own function to map complex functionality e.g. >

local function print_node_path()
local api = require('nvim-tree.api')
Expand Down
Loading