diff --git a/.github/example.png b/.github/example.png new file mode 100644 index 00000000..da02e7ec Binary files /dev/null and b/.github/example.png differ diff --git a/README.md b/README.md index 67c18ce2..0722125c 100644 --- a/README.md +++ b/README.md @@ -2,379 +2,117 @@ [![CI](https://github.com/kyazdani42/nvim-tree.lua/actions/workflows/ci.yml/badge.svg)](https://github.com/kyazdani42/nvim-tree.lua/actions/workflows/ci.yml) -## Notice + -This plugin requires [neovim >=0.7.0](https://github.com/neovim/neovim/wiki/Installing-Neovim). + Automatic updates -If you have issues since the recent setup migration, check out [this guide](https://github.com/kyazdani42/nvim-tree.lua/issues/674) + File type icons + + Git integration + + Diagnostics integration: LSP and COC + + (Live) filtering + + Cut, copy, paste, rename, delete, create + + Highly customisable + +
## Install +This plugin requires [neovim >=0.7.0](https://github.com/neovim/neovim/wiki/Installing-Neovim). + Install with [vim-plug](https://github.com/junegunn/vim-plug): ```vim -" requires -Plug 'kyazdani42/nvim-web-devicons' " for file icons +Plug 'kyazdani42/nvim-web-devicons' " optional, for file icons Plug 'kyazdani42/nvim-tree.lua' ``` -Install with [packer](https://github.com/wbthomason/packer.nvim): +or with [packer](https://github.com/wbthomason/packer.nvim): ```lua use { - 'kyazdani42/nvim-tree.lua', - requires = { - 'kyazdani42/nvim-web-devicons', -- optional, for file icon - }, - tag = 'nightly' -- optional, updated every week. (see issue #1193) + 'kyazdani42/nvim-tree.lua', + requires = { + 'kyazdani42/nvim-web-devicons', -- optional, for file icons + }, + tag = 'nightly' -- optional, updated every week. (see issue #1193) } ``` ## Setup -Setup should be run in a lua file or in a lua heredoc (`:help lua-heredoc`) if using in a vim file. +Setup should be run in a lua file or in a lua heredoc [:help lua-heredoc](https://neovim.io/doc/user/lua.html) if using in a vim file. -Legacy `g:` options have been migrated to the setup function. See [this issue](https://github.com/kyazdani42/nvim-tree.lua/issues/674) for information on migrating your configuration. - -Setup may only be run once; subsequent calls will result in a warning. Do not invoke from, say, a packer config function and then call it again later. - -```vim -" vimrc -nnoremap :NvimTreeToggle -nnoremap r :NvimTreeRefresh -nnoremap n :NvimTreeFindFile -" More available functions: -" NvimTreeOpen -" NvimTreeClose -" NvimTreeFocus -" NvimTreeFindFileToggle -" NvimTreeResize -" NvimTreeCollapse -" NvimTreeCollapseKeepBuffers - -set termguicolors " this variable must be enabled for colors to be applied properly - -" a list of groups can be found at `:help nvim_tree_highlight` -highlight NvimTreeFolderIcon guibg=blue -``` +Setup may only be run once; subsequent calls will result in a warning. ```lua --- init.lua +-- examples for your init.lua --- empty setup using defaults: add your own options -require'nvim-tree'.setup { -} +-- empty setup using defaults +require("nvim-tree").setup() --- OR - --- setup with all defaults --- each of these are documented in `:help nvim-tree.OPTION_NAME` --- nested options are documented by accessing them with `.` (eg: `:help nvim-tree.view.mappings.list`). -require'nvim-tree'.setup { -- BEGIN_DEFAULT_OPTS - auto_reload_on_write = true, - create_in_closed_folder = false, - disable_netrw = false, - hijack_cursor = false, - hijack_netrw = true, - hijack_unnamed_buffer_when_opening = false, - ignore_buffer_on_setup = false, - open_on_setup = false, - open_on_setup_file = false, - open_on_tab = false, - sort_by = "name", - update_cwd = false, - reload_on_bufenter = false, - respect_buf_cwd = false, +-- OR setup with some options +require("nvim-tree").setup({ + sort_by = "case_sensitive", view = { - adaptive_size = false, - centralize_selection = false, - width = 30, - height = 30, - hide_root_folder = false, - side = "left", - preserve_window_proportions = false, - number = false, - relativenumber = false, - signcolumn = "yes", + adaptive_size = true, mappings = { - custom_only = false, list = { - -- user mappings go here + { key = "u", action = "dir_up" }, }, }, }, renderer = { - add_trailing = false, - group_empty = false, - highlight_git = false, - full_name = false, - highlight_opened_files = "none", - root_folder_modifier = ":~", - indent_markers = { - enable = false, - icons = { - corner = "└ ", - edge = "│ ", - item = "│ ", - none = " ", - }, - }, - icons = { - webdev_colors = true, - git_placement = "before", - padding = " ", - symlink_arrow = " ➛ ", - show = { - file = true, - folder = true, - folder_arrow = true, - git = true, - }, - glyphs = { - default = "", - symlink = "", - folder = { - arrow_closed = "", - arrow_open = "", - default = "", - open = "", - empty = "", - empty_open = "", - symlink = "", - symlink_open = "", - }, - git = { - unstaged = "✗", - staged = "✓", - unmerged = "", - renamed = "➜", - untracked = "★", - deleted = "", - ignored = "◌", - }, - }, - }, - special_files = { "Cargo.toml", "Makefile", "README.md", "readme.md" }, - }, - hijack_directories = { - enable = true, - auto_open = true, - }, - update_focused_file = { - enable = false, - update_cwd = false, - ignore_list = {}, - }, - ignore_ft_on_setup = {}, - system_open = { - cmd = "", - args = {}, - }, - diagnostics = { - enable = false, - show_on_dirs = false, - icons = { - hint = "", - info = "", - warning = "", - error = "", - }, + group_empty = true, }, filters = { - dotfiles = false, - custom = {}, - exclude = {}, + dotfiles = true, }, - filesystem_watchers = { - enable = false, - interval = 100, - }, - git = { - enable = true, - ignore = true, - timeout = 400, - }, - actions = { - use_system_clipboard = true, - change_dir = { - enable = true, - global = false, - restrict_above_cwd = false, - }, - expand_all = { - max_folder_discovery = 300, - }, - open_file = { - quit_on_open = false, - resize_window = true, - window_picker = { - enable = true, - chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", - exclude = { - filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" }, - buftype = { "nofile", "terminal", "help" }, - }, - }, - }, - remove_file = { - close_window = true, - }, - }, - trash = { - cmd = "gio trash", - require_confirm = true, - }, - live_filter = { - prefix = "[FILTER]: ", - always_show_folders = true, - }, - log = { - enable = false, - truncate = false, - types = { - all = false, - config = false, - copy_paste = false, - diagnostics = false, - git = false, - profile = false, - watcher = false, - }, - }, -} -- END_DEFAULT_OPTS +}) ``` +For complete list of available configuration options see [:help nvim-tree.setup](doc/nvim-tree-lua.txt) + +Each option is documented in `:help nvim-tree.OPTION_NAME`. Nested options can be accessed by appending `.`, for example [:help nvim-tree.view.mappings](doc/nvim-tree-lua.txt) + +## Commands + +See [:help nvim-tree-commands](doc/nvim-tree-lua.txt) + +Basic commands: + +`:NvimTreeToggle` Open or close the tree. Takes an optional path argument. + +`:NvimTreeFocus` Open the tree if it is closed, and then focus on the tree. + +`:NvimTreeFindFile` Move the cursor in the tree for the current buffer, opening folders if needed. + +`:NvimTreeCollapse` Collapses the nvim-tree recursively. + ## Mappings -The `list` option in `view.mappings.list` is a table of -```lua --- key can be either a string or a table of string (lhs) --- action is the name of the action, set to `""` to remove default action --- action_cb is the function that will be called, it receives the node as a parameter. Optional for default actions --- mode is normal by default +nvim-tree comes with number of mappings; for default mappings please see [:help nvim-tree-default-mappings](doc/nvim-tree-lua.txt), for way of configuring mappings see [:help nvim-tree-mappings](doc/nvim-tree-lua.txt) -local tree_cb = require'nvim-tree.config'.nvim_tree_callback +`g?` toggles help, showing all the mappings and their actions. -local function print_node_path(node) { - print(node.absolute_path) -} +## Tips & tricks -local list = { - { key = {"", "o" }, action = "edit", mode = "n"}, - { key = "p", action = "print_path", action_cb = print_node_path }, - { key = "s", cb = tree_cb("vsplit") }, --tree_cb and the cb property are deprecated - { key = "<2-RightMouse>", action = "" }, -- will remove default cd action -} -``` +* You can add a directory by adding a `/` at the end of the paths, entering multiple directories `BASE/foo/bar/baz` will add directory foo, then bar and add a file baz to it. +* You can update window options for the tree by setting `require"nvim-tree.view".View.winopts.MY_OPTION = MY_OPTION_VALUE` +* `toggle` has a second parameter which allows to toggle without focusing the explorer (`require"nvim-tree".toggle(false, true)`). +* You can allow nvim-tree to behave like vinegar, see [:help nvim-tree-vinegar](doc/nvim-tree-lua.txt) +* If you `:set nosplitright`, the files will open on the left side of the tree, placing the tree window in the right side of the file you opened. +* You can automatically close the tab/vim when nvim-tree is the last window in the tab: . WARNING: other plugins or automation may interfere with this. -### Defaults +## Troubleshooting - -| Default Keys | Action | Description | -| - | - | - | -| \
o
\<2-LeftMouse> | edit | open a file or folder; root will cd to the above directory | -| \ | edit_in_place | edit the file in place, effectively replacing the tree explorer | -| O | edit_no_picker | same as (edit) with no window picker | -| \
\<2-RightMouse> | cd | cd in the directory under the cursor | -| \ | vsplit | open the file in a vertical split | -| \ | split | open the file in a horizontal split | -| \ | tabnew | open the file in a new tab | -| \< | prev_sibling | navigate to the previous sibling of current file/directory | -| > | next_sibling | navigate to the next sibling of current file/directory | -| P | parent_node | move cursor to the parent directory | -| \ | close_node | close current opened directory or parent | -| \ | preview | open the file as a preview (keeps the cursor in the tree) | -| K | first_sibling | navigate to the first sibling of current file/directory | -| J | last_sibling | navigate to the last sibling of current file/directory | -| I | toggle_git_ignored | toggle visibility of files/folders hidden via `git.ignore` option | -| H | toggle_dotfiles | toggle visibility of dotfiles via `filters.dotfiles` option | -| U | toggle_custom | toggle visibility of files/folders hidden via `filters.custom` option | -| R | refresh | refresh the tree | -| a | create | add a file; leaving a trailing `/` will add a directory | -| d | remove | delete a file (will prompt for confirmation) | -| D | trash | trash a file via `trash` option | -| r | rename | rename a file | -| \ | full_rename | rename a file and omit the filename on input | -| x | cut | add/remove file/directory to cut clipboard | -| c | copy | add/remove file/directory to copy clipboard | -| p | paste | paste from clipboard; cut clipboard has precedence over copy; will prompt for confirmation | -| y | copy_name | copy name to system clipboard | -| Y | copy_path | copy relative path to system clipboard | -| gy | copy_absolute_path | copy absolute path to system clipboard | -| [c | prev_git_item | go to next git item | -| ]c | next_git_item | go to prev git item | -| - | dir_up | navigate up to the parent directory of the current file/directory | -| s | system_open | open a file with default system application or a folder with default file manager, using `system_open` option | -| f | live_filter | live filter nodes dynamically based on regex matching. | -| F | clear_live_filter | clear live filter | -| q | close | close tree window | -| W | collapse_all | collapse the whole tree | -| E | expand_all | expand the whole tree, stopping after expanding `actions.expand_all.max_folder_discovery` folders; this might hang neovim for a while if running on a big folder | -| S | search_node | prompt the user to enter a path and then expands the tree to match the path | -| . | run_file_command | enter vim command mode with the file the cursor is on | -| \ | toggle_file_info | toggle a popup with file infos about the file under the cursor | -| g? | toggle_help | toggle help | - +### Diagnostic Logging -```lua - view.mappings.list = { -- BEGIN_DEFAULT_MAPPINGS - { key = { "", "o", "<2-LeftMouse>" }, action = "edit" } - { key = "", action = "edit_in_place" } - { key = "O", action = "edit_no_picker" } - { key = { "", "<2-RightMouse>" }, action = "cd" } - { key = "", action = "vsplit" } - { key = "", action = "split" } - { key = "", action = "tabnew" } - { key = "<", action = "prev_sibling" } - { key = ">", action = "next_sibling" } - { key = "P", action = "parent_node" } - { key = "", action = "close_node" } - { key = "", action = "preview" } - { key = "K", action = "first_sibling" } - { key = "J", action = "last_sibling" } - { key = "I", action = "toggle_git_ignored" } - { key = "H", action = "toggle_dotfiles" } - { key = "U", action = "toggle_custom" } - { key = "R", action = "refresh" } - { key = "a", action = "create" } - { key = "d", action = "remove" } - { key = "D", action = "trash" } - { key = "r", action = "rename" } - { key = "", action = "full_rename" } - { key = "x", action = "cut" } - { key = "c", action = "copy" } - { key = "p", action = "paste" } - { key = "y", action = "copy_name" } - { key = "Y", action = "copy_path" } - { key = "gy", action = "copy_absolute_path" } - { key = "[c", action = "prev_git_item" } - { key = "]c", action = "next_git_item" } - { key = "-", action = "dir_up" } - { key = "s", action = "system_open" } - { key = "f", action = "live_filter" } - { key = "F", action = "clear_live_filter" } - { key = "q", action = "close" } - { key = "W", action = "collapse_all" } - { key = "E", action = "expand_all" } - { key = "S", action = "search_node" } - { key = ".", action = "run_file_command" } - { key = "", action = "toggle_file_info" } - { key = "g?", action = "toggle_help" } - } -- END_DEFAULT_MAPPINGS -``` - -## Tips & reminders - -1. You can add a directory by adding a `/` at the end of the paths, entering multiple directories `BASE/foo/bar/baz` will add directory foo, then bar and add a file baz to it. -2. You can update window options for the tree by setting `require"nvim-tree.view".View.winopts.MY_OPTION = MY_OPTION_VALUE` -3. `toggle` has a second parameter which allows to toggle without focusing the explorer (`require"nvim-tree".toggle(false, true)`). -4. You can allow nvim-tree to behave like vinegar (see `:help nvim-tree-vinegar`). -5. If you `:set nosplitright`, the files will open on the left side of the tree, placing the tree window in the right side of the file you opened. -6. You can automatically close the tab/vim when nvim-tree is the last window in the tab: https://github.com/kyazdani42/nvim-tree.lua/discussions/1115. WARNING: other plugins or automation may interfere with this. - -## Diagnostic Logging - -You may enable diagnostic logging to `$XDG_CACHE_HOME/nvim/nvim-tree.log`. See `:help nvim-tree.log`. +You may enable diagnostic logging to `$XDG_CACHE_HOME/nvim/nvim-tree.log`. See [:help nvim-tree.log](doc/nvim-tree-lua.txt) ## Performance Issues @@ -403,7 +141,11 @@ Please attach `$XDG_CACHE_HOME/nvim/nvim-tree.log` if you raise an issue. * Try temporarily disabling git integration by setting `git.enable = false` in your setup. -## Help Wanted +## Contributing + +PRs are always welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) + +### Help Wanted Developers with the following environments: @@ -415,9 +157,7 @@ Developers with the following environments: Help triaging, diagnosing and fixing issues specific to those environments is needed, as the nvim-tree developers do not have access to or expertise in these environments. -## Contributing - -PRs are always welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) +Let us know you're interested by commenting on issues and raising PRs. ## Screenshots diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index d867b639..3d574d2a 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -1,92 +1,157 @@ -*nvim-tree.lua* A file explorer written in lua - -Minimum version of neovim: 0.6.0 +*nvim-tree* *nvim-tree.lua* A File Explorer For Neovim Written In Lua Author: Yazdani Kiyan ============================================================================== -INTRODUCTION *nvim-tree-introduction* +CONTENTS *nvim-tree* -This file explorer requires `neovim >= 0.6.0` + 1. Introduction nvim-tree-introduction + 2. Quickstart nvim-tree-quickstart + 3. Commands nvim-tree-commands + 4. Setup/Configuration nvim-tree-setup + 4.1 Vinegar Style nvim-tree-vinegar + 5. Mappings nvim-tree-mappings + 6. Highlight Groups nvim-tree-highlight + 7. Events nvim-tree-events + 7.1 Available Events nvim-tree.events ============================================================================== -QUICK START *nvim-tree-quickstart* + 1. INTRODUCTION *nvim-tree-introduction* -open the tree with :NvimTreeToggle +Features + + - Automatic updates + - File type icons + - Git integration + - Diagnostics integration: LSP and COC + - (Live) filtering + - Cut, copy, paste, rename, delete, create + - Highly customisable + +File Icons + + See https://github.com/kyazdani42/nvim-web-devicons + Requires a patched font. +  should look like an open folder. + + Syntax highlighting uses g:terminal_color_ from colorschemes, fallbacks to + ugly colors otherwise. + +Git Integration + + Icon indicates when a file is: + - ✗ unstaged or folder is dirty + - ✓ staged + - ★ new file + - ✓ ✗ partially staged + - ✓ ★ new file staged + - ✓ ★ ✗ new file staged and has unstaged modifications + - ═ merging + - ➜ renamed + +Requirements + + This file explorer requires `neovim >= 0.7.0` + +============================================================================== + 2. QUICK START *nvim-tree-quickstart* + +Setup should be run in a lua file or in a |lua-heredoc| if using in a vim file. + +Setup may only be run once; subsequent calls will result in a warning. > - nnoremap :NvimTreeToggle - lua require 'nvim-tree'.toggle() -< + -- examples for your init.lua + -- empty setup using defaults + require("nvim-tree").setup() + + -- OR setup with some options + require("nvim-tree").setup({ + sort_by = "case_sensitive", + view = { + adaptive_size = true, + mappings = { + list = { + { key = "u", action = "dir_up" }, + }, + }, + }, + renderer = { + group_empty = true, + }, + filters = { + dotfiles = true, + }, + }) +< ============================================================================== -COMMANDS *nvim-tree-commands* + 3. COMMANDS *nvim-tree-commands* |:NvimTreeOpen| -opens the tree. Takes an optional path argument. + opens the tree. Takes an optional path argument. |:NvimTreeClose| -closes the tree + closes the tree |:NvimTreeToggle| -open or close the tree. Takes an optional path argument. + open or close the tree. Takes an optional path argument. |:NvimTreeFocus| -open the tree if it is closed, and then focus on the tree + open the tree if it is closed, and then focus on the tree |:NvimTreeRefresh| -refresh the tree + refresh the tree |:NvimTreeFindFile| -The command will change the cursor in the tree for the current bufname. + The command will change the cursor in the tree for the current bufname. -It will also open the leafs of the tree leading to the file in the buffer -(if you opened a file with something else than the NvimTree, like `fzf` or -`:split`) + It will also open the leafs of the tree leading to the file in the buffer + (if you opened a file with something else than the NvimTree, like `fzf` or + `:split`) |:NvimTreeFindFileToggle| -close the tree or change the cursor in the tree for the current bufname, -similar to combination of |:NvimTreeToggle| and |:NvimTreeFindFile|. Takes an -optional path argument. + close the tree or change the cursor in the tree for the current bufname, + similar to combination of |:NvimTreeToggle| and |:NvimTreeFindFile|. Takes an + optional path argument. |:NvimTreeClipboard| -Print clipboard content for both cut and copy + Print clipboard content for both cut and copy |:NvimTreeResize| -Resize the NvimTree window to the given size. Example: `:NvimTreeResize 50` -resizes the window to the width of 50. If the size starts with "+" or "-" it -adds or removes the given value to the current window width. -Example `:NvimTreeResize -20` removes the value 20 from the current width. And -`:NvimTreeResize +20` adds the value 20 to the current width. + Resize the NvimTree window to the given size. Example: `:NvimTreeResize 50` + resizes the window to the width of 50. If the size starts with "+" or "-" it + adds or removes the given value to the current window width. + Example `:NvimTreeResize -20` removes the value 20 from the current width. And + `:NvimTreeResize +20` adds the value 20 to the current width. |:NvimTreeCollapse| -Collapses the nvim-tree recursively. + Collapses the nvim-tree recursively. |:NvimTreeCollapseKeepBuffers| -Collapses the nvim-tree recursively, but keep the directories open, which are -used in an open buffer. + Collapses the nvim-tree recursively, but keep the directories open, which are + used in an open buffer. ============================================================================== -SETUP *nvim-tree.setup* + 4. SETUP *nvim-tree-setup* -To configure the tree (and make it runnable), you should call the setup -function. +You must run setup() function to initialise nvim-tree. -Setup may only be run once; subsequent calls will result in a warning. Do not -invoke from, say, a packer config function and then call it again later. +setup() function takes one optional argument: configuration table. If omitted +nvim-tree will be initialised with default configuration. -Values may be functions. Warning: this may result in unexpected behaviour. +Setup may only be run once; subsequent calls will result in a warning. > require("nvim-tree").setup { -- BEGIN_DEFAULT_OPTS auto_reload_on_write = true, @@ -465,14 +530,16 @@ Window / buffer setup. Type: `boolean`, Default: `false` *nvim-tree.view.width* - Width of the window, can be either a `%` string or a number representing columns. + Width of the window, can be a `%` string, a number representing columns or + a function. Only works with `side` is `left` or `right`. - Type: `string | number`, Default: `30` + Type: `string | number | function`, Default: `30` *nvim-tree.view.height* - Height of the window, can be either a `%` string or a number representing rows. + Height of the window, can be `%` string or a number representing rows or a + function. Only works with `side` is `top` or `bottom` - Type: `string | number`, Default: `30` + Type: `string | number | function`, Default: `30` *nvim-tree.view.side* Side of the tree, can be `"left"`, `"right"`, `"bottom"`, `"top"`. @@ -782,9 +849,47 @@ Configuration for diagnostic logging. Type: `boolean`, Default: `false` ============================================================================== -INFORMATIONS *nvim-tree-info* + 4.1 VINEGAR STYLE *nvim-tree-vinegar* -MAPPINGS *nvim-tree-mappings* +|nvim_tree_vinegar| *nvim_tree_vinegar* + +nvim-tree can behave like vinegar. To allow this, you will need to configure +it in a specific way: + +- Use `require"nvim-tree".open_replacing_current_buffer()` instead of the +default open command. +You can easily implement a toggle using this too: +> + local function toggle_replace() + local view = require"nvim-tree.view" + if view.is_visible() then + view.close() + else + require"nvim-tree".open_replacing_current_buffer() + end + end +< +- Use the `edit_in_place` action to edit files. It's bound to `` by +default, vinegar uses ``. You can override this with: +> + require"nvim-tree".setup { + view = { + mappings = { + list = { + { key = "", action = "edit_in_place" } + } + } + } + } +< +Going up a dir is bound to `-` by default in nvim-tree which is identical to +vinegar, no change is needed here. + +You'll also need to set |nvim-tree.hijack_netrw| to `true` during setup. +A good functionnality to enable is |nvim-tree.hijack_directories|. + +============================================================================== + 5. MAPPINGS *nvim-tree-mappings* The `list` option in `view.mappings.list` is a table of @@ -806,6 +911,8 @@ The `list` option in `view.mappings.list` is a table of { key = "<2-RightMouse>", action = "" }, -- will remove default cd action } < +Mouse support defined in |KeyBindings| + DEFAULT MAPPINGS *nvim-tree-default-mappings* `` edit open a file or folder; root will cd to the above directory @@ -900,30 +1007,8 @@ DEFAULT MAPPINGS *nvim-tree-default-mappings { key = "g?", action = "toggle_help" } } -- END_DEFAULT_MAPPINGS < -FEATURES *nvim-tree-features* - -File icons with vim-devicons. - -Uses other type of icons so a good font support is recommended. -If the tree renders weird glyphs, install the correct fonts. - -Syntax highlighting uses g:terminal_color_ from colorschemes, fallbacks to -ugly colors otherwise. - -Git integration tells when a file is: -- ✗ unstaged or folder is dirty -- ✓ staged -- ★ new file -- ✓ ✗ partially staged -- ✓ ★ new file staged -- ✓ ★ ✗ new file staged and has unstaged modifications -- ═ merging -- ➜ renamed - -Mouse support defined in |KeyBindings| - ============================================================================== -HIGHLIGHT GROUPS *nvim-tree-highlight* + 6. HIGHLIGHT GROUPS *nvim-tree-highlight* All the following highlight groups can be configured by hand. Aside from `NvimTreeWindowPicker`, it is not advised to colorize the background of these @@ -988,47 +1073,7 @@ NvimTreeLiveFilterPrefix NvimTreeLiveFilterValue ============================================================================== -VINEGAR STYLE *nvim-tree-vinegar* - -|nvim_tree_vinegar| *nvim_tree_vinegar* - -nvim-tree can behave like vinegar. To allow this, you will need to configure -it in a specific way: - -- Use `require"nvim-tree".open_replacing_current_buffer()` instead of the -default open command. -You can easily implement a toggle using this too: -> - local function toggle_replace() - local view = require"nvim-tree.view" - if view.is_visible() then - view.close() - else - require"nvim-tree".open_replacing_current_buffer() - end - end -< -- Use the `edit_in_place` action to edit files. It's bound to `` by -default, vinegar uses ``. You can override this with: -> - require"nvim-tree".setup { - view = { - mappings = { - list = { - { key = "", action = "edit_in_place" } - } - } - } - } -< -Going up a dir is bound to `-` by default in nvim-tree which is identical to -vinegar, no change is needed here. - -You'll also need to set |nvim-tree.hijack_netrw| to `true` during setup. -A good functionnality to enable is |nvim-tree.hijack_directories|. - -============================================================================== -EVENTS *nvim-tree-events* + 7. EVENTS *nvim-tree-events* |nvim_tree_events| @@ -1056,7 +1101,7 @@ For example, registering a handler for when a node is renamed is done like this: end) ============================================================================== -Lua module: nvim-tree.events *nvim-tree.events* + 7.1 Lua module: nvim-tree.events *nvim-tree.events* *nvim-tree.events.on_nvim_tree_ready()* on_nvim_tree_ready({handler}) diff --git a/scripts/generate_default_mappings.lua b/scripts/generate_default_mappings.lua index afbc2b84..476698b8 100644 --- a/scripts/generate_default_mappings.lua +++ b/scripts/generate_default_mappings.lua @@ -82,23 +82,3 @@ for _, m in pairs(outs_lua) do io.write(string.format(fmt, m.key, m.action)) end io.close(file) - --- md -file = io.open("/tmp/DEFAULT_MAPPINGS.md", "w") -io.output(file) -io.write "| Default Keys | Action | Description |\n" -io.write "| - | - | - |\n" -for _, m in pairs(M.mappings) do - local keys = "" - if type(m.key) == "table" then - local first = true - for _, sub_key in pairs(m.key) do - keys = keys .. (first and "" or "
") .. sub_key:gsub("<", "\\<") - first = false - end - else - keys = m.key:gsub("<", "\\<") - end - io.write(string.format("| %s | %s | %s |\n", keys, m.action, m.desc:gsub("|", "`"))) -end -io.close(file) diff --git a/scripts/update-default-opts.sh b/scripts/update-default-opts.sh index d729ed8e..1ff23041 100755 --- a/scripts/update-default-opts.sh +++ b/scripts/update-default-opts.sh @@ -1,7 +1,7 @@ #!/bin/sh # run after changing nvim-tree.lua DEFAULT_OPTS or nvim-tree/actions/init.lua M.mappings -# scrapes and updates README.md, nvim-tree-lua.txt +# scrapes and updates nvim-tree-lua.txt # run from repositry root: scripts/update-default-opts.sh @@ -14,13 +14,9 @@ sed -n -e "/${begin}/,/${end}/{ /${begin}/d; /${end}/d; p; }" lua/nvim-tree.lua # indent some more sed -e "s/^ / /" /tmp/DEFAULT_OPTS.2.lua > /tmp/DEFAULT_OPTS.6.lua -# README.md indented at 2 -sed -i -e "/${begin}/,/${end}/{ /${begin}/{p; r /tmp/DEFAULT_OPTS.2.lua - }; /${end}/p; d }" README.md - # help, indented at 6 sed -i -e "/${begin}/,/${end}/{ /${begin}/{p; r /tmp/DEFAULT_OPTS.6.lua - }; /${end}/p; d }" doc/nvim-tree-lua.txt + }; /${end}/p; d; }" doc/nvim-tree-lua.txt begin="BEGIN_DEFAULT_MAPPINGS" @@ -28,17 +24,10 @@ end="END_DEFAULT_MAPPINGS" # generate various DEFAULT_MAPPINGS sed -n -e "/${begin}/,/${end}/{ /${begin}/d; /${end}/d; p; }" lua/nvim-tree/actions/init.lua > /tmp/DEFAULT_MAPPINGS.M.lua -lua <(cat /tmp/DEFAULT_MAPPINGS.M.lua scripts/generate_default_mappings.lua) - -# README.md -sed -i -e "/${begin}/,/${end}/{ /${begin}/{p; r /tmp/DEFAULT_MAPPINGS.lua - }; /${end}/p; d }" README.md -sed -i -e "/BEGIN_DEFAULT_MAPPINGS_TABLE/,/END_DEFAULT_MAPPINGS_TABLE/{ /BEGIN_DEFAULT_MAPPINGS_TABLE/{p; r /tmp/DEFAULT_MAPPINGS.md - }; /END_DEFAULT_MAPPINGS_TABLE/p; d }" README.md +cat /tmp/DEFAULT_MAPPINGS.M.lua scripts/generate_default_mappings.lua | lua # help sed -i -e "/${begin}/,/${end}/{ /${begin}/{p; r /tmp/DEFAULT_MAPPINGS.lua }; /${end}/p; d }" doc/nvim-tree-lua.txt sed -i -e "/^DEFAULT MAPPINGS/,/^>$/{ /^DEFAULT MAPPINGS/{p; r /tmp/DEFAULT_MAPPINGS.help }; /^>$/p; d }" doc/nvim-tree-lua.txt -