Compare commits

..

14 Commits

Author SHA1 Message Date
github-actions[bot]
164f11db4f chore(master): release nvim-tree 1.1.0 (#2691)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-14 12:10:17 +02:00
Rami Elwan
8f2a50f1cd feat: add api.fs.copy.basename, default mapping ge (#2698)
* feat: add copy basename

* fix: change keymap for copy basename

* fix: use double quotes

* fix: add missing help

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
2024-03-14 16:57:46 +11:00
gegoune
c64becf80c ci: set concurrency and trigger ci on master (#2701) 2024-03-14 07:36:22 +02:00
Alexander Courtis
3c4267eb50 fix(#2695): git toplevel guard against missing paths (#2696) 2024-03-14 16:23:58 +11:00
DB
041dbd18f4 fix: searchcount exception on invalid search regex (#2693)
* fix: wrap searchcount in pcall to avoid error

* fix: searchcount in pcall

---------

Co-authored-by: xVermillionx <xVermillionx@notvalid>
2024-03-09 13:27:23 +11:00
Mohamed Arish
efafd73efa feat(#2630): file renames can now create directories (#2657)
* Added creating of directories when renaming files

* Style check error? fixed

* Forgot, I added back the line of code that creates a directory named as the file and forgot to remove it

* Added a check for file already exists and also switched the is_error values as they were mismatched

* I don't know how but this somehow fixed the creation of a directory?
2024-03-03 12:25:17 +11:00
Alexander Courtis
d52fdeb0a3 docs: add help indexes (#2684)
* docs: add nvim-tree-index-api

* docs: add nvim-tree-index-opts

* docs: add nvim-tree-index-api

* docs: sort indices

* docs: less verbose

* docs: use dictionary sort for indices
2024-02-24 17:53:25 +11:00
Alexander Courtis
7efaa339d3 docs: :help nvim-tree-legacy (#2679)
doc: add help nvim-tree-legacy
2024-02-24 15:50:10 +11:00
Alexander Courtis
030defdb65 docs: add highlight examples to quickstart, document pre-overhaul SpellCap groups (#2680)
* docs: add highlight examples to quickstart, document pre-overhaul SpellLocal groups

* docs: add highlight examples to quickstart

* docs: document pre-overhaul SpellCap groups

* docs: document pre-overhaul SpellCap groups
2024-02-20 13:24:37 +11:00
github-actions[bot]
d35a8d5ec6 chore(master): release nvim-tree 1.0.0 (#2670)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-02-18 17:28:24 +11:00
Alexander Courtis
d16246a757 chore: release 1.0.0 (#2678)
Release-As: 1.0.0
2024-02-18 17:24:05 +11:00
gegoune
863cf832ce ci: triggers, nvim stable version & env vars (#2671) 2024-02-12 09:49:39 +01:00
dependabot[bot]
c7d4650c38 chore(deps): bump JohnnyMorganz/stylua-action from 3 to 4 (#2672)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-12 09:48:00 +01:00
darcy
4a87b8b46b feat(#2654): filters.custom may be a function (#2655)
* feat(#2654): add `binaries` field to `filters`

* feat(#2648): allow functions in `filters.custom`

* ci: fix: stylua check

* ci: fix: add new keybind and config to docs

* fix: replace os-specific binary filter with `vim.fn.executable`

* fix: remove function and mapping for `binaries` filter

* fix: add `node` parameter to custom filter function

* fix: update doc for custom filter function signature

* fix: add custom filter to `ACCEPTED_TYPES`

* fix: accept single function for custom filter

* fix: change custom filter on `ACCEPTED_TYPES`

* fix: revert to using `path` for custom filter function

* fix: use `function` type for custom filter

* fix: type for custom filter in help

* fix: custom filter single function no longer mutates `M.config.filter_custom`

* fix: remove dead `if` statement in custom filter

* fix: separate custom filter function from `M.ignore_list`

* doc nit

---------

Co-authored-by: darcy <44690813+darccyy@users.noreply.github.com>
Co-authored-by: Alexander Courtis <alex@courtis.org>
2024-02-11 17:18:40 +11:00
17 changed files with 559 additions and 87 deletions

View File

@@ -2,15 +2,14 @@ name: CI
on: on:
pull_request: pull_request:
branches:
- '*'
push: push:
branches: branches: [master]
- master
- release-please--branches--master--components--nvim-tree
workflow_dispatch: workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
permissions: permissions:
contents: read contents: read
@@ -46,7 +45,7 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: stylua - name: stylua
uses: JohnnyMorganz/stylua-action@v3 uses: JohnnyMorganz/stylua-action@v4
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
version: ${{ matrix.stylua_version }} version: ${{ matrix.stylua_version }}
@@ -59,7 +58,7 @@ jobs:
strategy: strategy:
matrix: matrix:
nvim_version: [ v0.9.4 ] nvim_version: [ stable, nightly ]
luals_version: [ 3.7.3 ] luals_version: [ 3.7.3 ]
steps: steps:
@@ -75,7 +74,11 @@ jobs:
mkdir -p luals mkdir -p luals
curl -L "https://github.com/LuaLS/lua-language-server/releases/download/${{ matrix.luals_version }}/lua-language-server-${{ matrix.luals_version }}-linux-x64.tar.gz" | tar zx --directory luals curl -L "https://github.com/LuaLS/lua-language-server/releases/download/${{ matrix.luals_version }}/lua-language-server-${{ matrix.luals_version }}-linux-x64.tar.gz" | tar zx --directory luals
- run: echo "luals/bin" >> "$GITHUB_PATH"
- name: make check - name: make check
run: VIMRUNTIME=/home/runner/nvim-${{ matrix.nvim_version }}/share/nvim/runtime PATH="luals/bin:${PATH}" make check env:
VIMRUNTIME: /home/runner/nvim-${{ matrix.nvim_version }}/share/nvim/runtime
run: make check
- run: make help-check - run: make help-check

View File

@@ -3,7 +3,9 @@ on:
branches: branches:
- master - master
workflow_dispatch: workflow_dispatch:
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true
name: release-please name: release-please
permissions: permissions:
contents: write contents: write

View File

@@ -7,7 +7,9 @@ on:
- edited - edited
- synchronize - synchronize
workflow_dispatch: workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref }}
cancel-in-progress: true
jobs: jobs:
semantic-pr-subject: semantic-pr-subject:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -1,3 +1,3 @@
{ {
".": "0.100.0" ".": "1.1.0"
} }

View File

@@ -1,5 +1,31 @@
# Changelog # Changelog
## [1.1.0](https://github.com/nvim-tree/nvim-tree.lua/compare/nvim-tree-v1.0.0...nvim-tree-v1.1.0) (2024-03-14)
### Features
* **#2630:** file renames can now create directories ([#2657](https://github.com/nvim-tree/nvim-tree.lua/issues/2657)) ([efafd73](https://github.com/nvim-tree/nvim-tree.lua/commit/efafd73efa9bc8c26282aed563ba0f01c7465b06))
* add api.fs.copy.basename, default mapping ge ([#2698](https://github.com/nvim-tree/nvim-tree.lua/issues/2698)) ([8f2a50f](https://github.com/nvim-tree/nvim-tree.lua/commit/8f2a50f1cd0c64003042364cf317c8788eaa6c8c))
### Bug Fixes
* **#2695:** git toplevel guard against missing paths ([#2696](https://github.com/nvim-tree/nvim-tree.lua/issues/2696)) ([3c4267e](https://github.com/nvim-tree/nvim-tree.lua/commit/3c4267eb5045fa86b67fe40c0c63d31efc801e77))
* searchcount exception on invalid search regex ([#2693](https://github.com/nvim-tree/nvim-tree.lua/issues/2693)) ([041dbd1](https://github.com/nvim-tree/nvim-tree.lua/commit/041dbd18f440207ad161503a384e7c82d575db66))
## [1.0.0](https://github.com/nvim-tree/nvim-tree.lua/compare/nvim-tree-v0.100.0...nvim-tree-v1.0.0) (2024-02-18)
### Features
* **#2654:** filters.custom may be a function ([#2655](https://github.com/nvim-tree/nvim-tree.lua/issues/2655)) ([4a87b8b](https://github.com/nvim-tree/nvim-tree.lua/commit/4a87b8b46b4a30107971871df3cb7f4c30fdd5d0))
### Miscellaneous Chores
* release 1.0.0 ([#2678](https://github.com/nvim-tree/nvim-tree.lua/issues/2678)) ([d16246a](https://github.com/nvim-tree/nvim-tree.lua/commit/d16246a7575538f77e9246520449b99333c469f7))
## [0.100.0](https://github.com/nvim-tree/nvim-tree.lua/compare/nvim-tree-v0.99.0...nvim-tree-v0.100.0) (2024-02-11) ## [0.100.0](https://github.com/nvim-tree/nvim-tree.lua/compare/nvim-tree-v0.99.0...nvim-tree-v0.100.0) (2024-02-11)

View File

@@ -69,10 +69,16 @@ Once you did, you should run `make help-update`
# Documentation # Documentation
## Opts
When adding new options, you should declare the defaults in the main `nvim-tree.lua` file. When adding new options, you should declare the defaults in the main `nvim-tree.lua` file.
Documentation for options should also be added to `nvim-tree-opts` in `doc/nvim-tree-lua.txt` Documentation for options should also be added to `nvim-tree-opts` in `doc/nvim-tree-lua.txt`
## API
When adding or changing API please update :help nvim-tree-api
# Pull Request # Pull Request
Please reference any issues in the description e.g. "resolves #1234". Please reference any issues in the description e.g. "resolves #1234".

View File

@@ -38,6 +38,8 @@ Please install via your preferred package manager. See [Installation](https://gi
`nvim-tree/nvim-tree.lua` `nvim-tree/nvim-tree.lua`
Major or minor versions may be specified via tags: `v<MAJOR>` e.g. `v1` or `v<MAJOR>.<MINOR>` e.g. `v1.23`
`nvim-tree/nvim-web-devicons` optional, for file icons `nvim-tree/nvim-web-devicons` optional, for file icons
Disabling [netrw](https://neovim.io/doc/user/pi_netrw.html) is strongly advised, see [:help nvim-tree-netrw](doc/nvim-tree-lua.txt) Disabling [netrw](https://neovim.io/doc/user/pi_netrw.html) is strongly advised, see [:help nvim-tree-netrw](doc/nvim-tree-lua.txt)
@@ -110,6 +112,23 @@ require("nvim-tree").setup {
} }
``` ```
### Highlight
Run `:NvimTreeHiTest` to show all the highlights that nvim-tree uses.
They can be customised before or after setup is called and will be immediately
applied at runtime. e.g.
```lua
vim.cmd([[
:hi NvimTreeExecFile guifg=#ffa0a0
:hi NvimTreeSpecialFile guifg=#ff80ff gui=underline
:hi NvimTreeSymlink guifg=Yellow gui=italic
:hi link NvimTreeImageFile Title
]])
```
See [:help nvim-tree-highlight](doc/nvim-tree-lua.txt) for details.
## Commands ## Commands
See [:help nvim-tree-commands](doc/nvim-tree-lua.txt) See [:help nvim-tree-commands](doc/nvim-tree-lua.txt)

View File

@@ -48,12 +48,18 @@ CONTENTS *nvim-tree*
7. Mappings |nvim-tree-mappings| 7. Mappings |nvim-tree-mappings|
7.1 Mappings: Default |nvim-tree-mappings-default| 7.1 Mappings: Default |nvim-tree-mappings-default|
8. Highlight |nvim-tree-highlight| 8. Highlight |nvim-tree-highlight|
8.1 Highlight Default |nvim-tree-highlight-default| 8.1 Highlight: Default |nvim-tree-highlight-default|
8.2 Highlight Overhaul |nvim-tree-highlight-overhaul| 8.2 Highlight: Overhaul |nvim-tree-highlight-overhaul|
9. Events |nvim-tree-events| 9. Events |nvim-tree-events|
10. Prompts |nvim-tree-prompts| 10. Prompts |nvim-tree-prompts|
11. OS Specific Restrictions |nvim-tree-os-specific| 11. OS Specific Restrictions |nvim-tree-os-specific|
12. Netrw |nvim-tree-netrw| 12. Netrw |nvim-tree-netrw|
13. Legacy |nvim-tree-legacy|
13.1 Legacy: Opts |nvim-tree-legacy-opts|
13.2 Legacy: Highlight |nvim-tree-legacy-highlight|
14. Index |nvim-tree-index|
14.1 Index: Opts |nvim-tree-index-opts|
14.2 Index: API |nvim-tree-index-api|
============================================================================== ==============================================================================
1. INTRODUCTION *nvim-tree-introduction* 1. INTRODUCTION *nvim-tree-introduction*
@@ -179,6 +185,7 @@ Show the mappings: `g?`
`f` Live Filter: Start |nvim-tree-api.live_filter.start()| `f` Live Filter: Start |nvim-tree-api.live_filter.start()|
`g?` Help |nvim-tree-api.tree.toggle_help()| `g?` Help |nvim-tree-api.tree.toggle_help()|
`gy` Copy Absolute Path |nvim-tree-api.fs.copy.absolute_path()| `gy` Copy Absolute Path |nvim-tree-api.fs.copy.absolute_path()|
`ge` Copy Basename |nvim-tree-api.fs.copy.basename()|
`H` Toggle Filter: Dotfiles |nvim-tree-api.tree.toggle_hidden_filter()| `H` Toggle Filter: Dotfiles |nvim-tree-api.tree.toggle_hidden_filter()|
`I` Toggle Filter: Git Ignore |nvim-tree-api.tree.toggle_gitignore_filter()| `I` Toggle Filter: Git Ignore |nvim-tree-api.tree.toggle_gitignore_filter()|
`J` Last Sibling |nvim-tree-api.node.navigate.sibling.last()| `J` Last Sibling |nvim-tree-api.node.navigate.sibling.last()|
@@ -238,8 +245,15 @@ via |nvim-tree.on_attach| e.g. >
Run |:NvimTreeHiTest| to show all the highlights that nvim-tree uses. Run |:NvimTreeHiTest| to show all the highlights that nvim-tree uses.
They can be customised before or after setup is called and will be immediately They can be customised before or after setup is called and will be immediately
applied at runtime. applied at runtime. e.g. >
vim.cmd([[
:hi NvimTreeExecFile guifg=#ffa0a0
:hi NvimTreeSpecialFile guifg=#ff80ff gui=underline
:hi NvimTreeSymlink guifg=Yellow gui=italic
:hi link NvimTreeImageFile Title
]])
<
See |nvim-tree-highlight| for details. See |nvim-tree-highlight| for details.
============================================================================== ==============================================================================
@@ -665,7 +679,7 @@ Prefer startup root directory when updating root directory of the tree.
Only relevant when `update_focused_file.update_root` is `true` Only relevant when `update_focused_file.update_root` is `true`
Type: `boolean`, Default: `false` Type: `boolean`, Default: `false`
*nvim-tree.sync_root_with_cwd* (previously `update_cwd`) *nvim-tree.sync_root_with_cwd*
Changes the tree root directory on `DirChanged` and refreshes the tree. Changes the tree root directory on `DirChanged` and refreshes the tree.
Type: `boolean`, Default: `false` Type: `boolean`, Default: `false`
@@ -687,7 +701,7 @@ Type: `boolean`, Default: `false`
File and folder sorting options. File and folder sorting options.
*nvim-tree.sort.sorter* (previously `sort_by`) *nvim-tree.sort.sorter*
Changes how files within the same directory are sorted. Changes how files within the same directory are sorted.
Can be one of `"name"`, `"case_sensitive"`, `"modification_time"`, `"extension"`, Can be one of `"name"`, `"case_sensitive"`, `"modification_time"`, `"extension"`,
`"suffix"`, `"filetype"` or a function. `"suffix"`, `"filetype"` or a function.
@@ -766,7 +780,7 @@ Show |signcolumn|. Value can be `"yes"`, `"auto"`, `"no"`.
Width of the window: can be a `%` string, a number representing columns, a Width of the window: can be a `%` string, a number representing columns, a
function or a table. function or a table.
A table indicates that the view should be dynamically sized based on the A table indicates that the view should be dynamically sized based on the
longest line (previously `view.adaptive_size`). longest line.
Type: `string | number | table | function()` returning a number Type: `string | number | table | function()` returning a number
Default: `30` Default: `30`
@@ -1086,7 +1100,6 @@ Enable this feature.
Type: `boolean`, Default: `false` Type: `boolean`, Default: `false`
*nvim-tree.update_focused_file.update_root* *nvim-tree.update_focused_file.update_root*
(previously `update_focused_file.update_cwd`)
Update the root directory of the tree if the file is not under current Update the root directory of the tree if the file is not under current
root directory. It prefers vim's cwd and `root_dirs`. root directory. It prefers vim's cwd and `root_dirs`.
Otherwise it falls back to the folder containing the file. Otherwise it falls back to the folder containing the file.
@@ -1229,7 +1242,7 @@ Only relevant when |modified.show_on_dirs| is `true`.
File / folder filters that may be toggled. File / folder filters that may be toggled.
*nvim-tree.filters.git_ignored* (previously `git.ignore`) *nvim-tree.filters.git_ignored*
Ignore files based on `.gitignore`. Requires |git.enable| `= true` Ignore files based on `.gitignore`. Requires |git.enable| `= true`
Toggle via |nvim-tree-api.tree.toggle_gitignore_filter()|, default `I` Toggle via |nvim-tree-api.tree.toggle_gitignore_filter()|, default `I`
Type: `boolean`, Default: `true` Type: `boolean`, Default: `true`
@@ -1262,7 +1275,7 @@ Enabling this is not useful as there is no means yet to persist bookmarks.
Custom list of vim regex for file/directory names that will not be shown. Custom list of vim regex for file/directory names that will not be shown.
Backslashes must be escaped e.g. "^\\.git". See |string-match|. Backslashes must be escaped e.g. "^\\.git". See |string-match|.
Toggle via |nvim-tree-api.tree.toggle_custom_filter()|, default `U` Toggle via |nvim-tree-api.tree.toggle_custom_filter()|, default `U`
Type: {string}, Default: `{}` Type: {string} | `function(absolute_path)`, Default: `{}`
*nvim-tree.filters.exclude* *nvim-tree.filters.exclude*
List of directories or files to exclude from filtering: always show them. List of directories or files to exclude from filtering: always show them.
@@ -1376,7 +1389,7 @@ Configuration options for opening a file from nvim-tree.
Prevent new opened file from opening in the same window as the tree. Prevent new opened file from opening in the same window as the tree.
Type: `boolean`, Default: `true` Type: `boolean`, Default: `true`
*nvim-tree.actions.open_file.resize_window* (previously `view.auto_resize`) *nvim-tree.actions.open_file.resize_window*
Resizes the tree when opening a file. Resizes the tree when opening a file.
Type: `boolean`, Default: `true` Type: `boolean`, Default: `true`
@@ -1444,7 +1457,7 @@ Windows default `"trash"` requires `trash-cli` or similar
*nvim-tree.tab.sync* *nvim-tree.tab.sync*
Configuration for syncing nvim-tree across tabs. Configuration for syncing nvim-tree across tabs.
*nvim-tree.tab.sync.open* (previously `nvim-tree.open_on_tab`) *nvim-tree.tab.sync.open*
Opens the tree automatically when switching tabpage or opening a new Opens the tree automatically when switching tabpage or opening a new
tabpage if the tree was previously open. tabpage if the tree was previously open.
Type: `boolean`, Default: `false` Type: `boolean`, Default: `false`
@@ -1453,7 +1466,7 @@ Configuration for syncing nvim-tree across tabs.
Closes the tree across all tabpages when the tree is closed. Closes the tree across all tabpages when the tree is closed.
Type: `boolean`, Default: `false` Type: `boolean`, Default: `false`
*nvim-tree.tab.sync.ignore* (previously `nvim-tree.ignore_buf_on_tab_change`) *nvim-tree.tab.sync.ignore*
List of filetypes or buffer names on new tab that will prevent List of filetypes or buffer names on new tab that will prevent
|nvim-tree.tab.sync.open| and |nvim-tree.tab.sync.close| |nvim-tree.tab.sync.open| and |nvim-tree.tab.sync.close|
Type: {string}, Default: `{}` Type: {string}, Default: `{}`
@@ -1493,7 +1506,7 @@ Confirmation prompts.
Prompt before removing. Prompt before removing.
Type: `boolean`, Default: `true` Type: `boolean`, Default: `true`
*nvim-tree.ui.confirm.trash* (previously `trash.require_confirm`) *nvim-tree.ui.confirm.trash*
Prompt before trashing. Prompt before trashing.
Type: `boolean`, Default: `true` Type: `boolean`, Default: `true`
@@ -2228,6 +2241,7 @@ You are encouraged to copy these to your own |nvim-tree.on_attach| function.
vim.keymap.set('n', 'f', api.live_filter.start, opts('Live Filter: Start')) vim.keymap.set('n', 'f', api.live_filter.start, opts('Live Filter: Start'))
vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help')) vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help'))
vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path')) vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path'))
vim.keymap.set('n', 'ge', api.fs.copy.basename, opts('Copy Basename'))
vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Filter: Dotfiles')) vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Filter: Dotfiles'))
vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Filter: Git Ignore')) vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Filter: Git Ignore'))
vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling')) vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling'))
@@ -2301,7 +2315,7 @@ To prevent usage of a highlight:
`:hi! link NvimTreeExecFile NONE` `:hi! link NvimTreeExecFile NONE`
============================================================================== ==============================================================================
8.1 HIGHLIGHT DEFAULT *nvim-tree-highlight-default* 8.1 HIGHLIGHT: DEFAULT *nvim-tree-highlight-default*
|:highlight-link| `default` or |:highlight-default| define the groups on setup: |:highlight-link| `default` or |:highlight-default| define the groups on setup:
@@ -2419,7 +2433,9 @@ Diagnostics Folder Highlight: >
NvimTreeDiagnosticHintFolderHL NvimTreeDiagnosticHintFileHL NvimTreeDiagnosticHintFolderHL NvimTreeDiagnosticHintFileHL
< <
============================================================================== ==============================================================================
8.1 HIGHLIGHT OVERHAUL *nvim-tree-highlight-overhaul* 8.2 HIGHLIGHT: OVERHAUL *nvim-tree-highlight-overhaul*
See |nvim-tree-legacy-highlight| for old highlight group compatibility.
2024-01-20: significant highlighting changes, some breaking: 2024-01-20: significant highlighting changes, some breaking:
@@ -2444,51 +2460,14 @@ Diagnostics Folder Highlight: >
- NvimTreeSpecialFile PreProc -> SpellCap - NvimTreeSpecialFile PreProc -> SpellCap
- NvimTreeSymlink Statement -> SpellCap - NvimTreeSymlink Statement -> SpellCap
Legacy highlight group are still obeyed when they are defined and the current Approximate pre-overhaul values for the `SpellCap` groups may be set via: >
highlight group is not, hard linking as follows: >
NvimTreeModifiedIcon NvimTreeModifiedFile vim.cmd([[
NvimTreeOpenedHL NvimTreeOpenedFile :hi NvimTreeExecFile gui=bold guifg=#ffa0a0
NvimTreeBookmarkIcon NvimTreeBookmark :hi NvimTreeSymlink gui=bold guifg=#ffff60
:hi NvimTreeSpecialFile gui=bold,underline guifg=#ff80ff
NvimTreeGitDeletedIcon NvimTreeGitDeleted :hi NvimTreeImageFile gui=bold guifg=#ff80ff
NvimTreeGitDirtyIcon NvimTreeGitDirty ]])
NvimTreeGitIgnoredIcon NvimTreeGitIgnored
NvimTreeGitMergeIcon NvimTreeGitMerge
NvimTreeGitNewIcon NvimTreeGitNew
NvimTreeGitRenamedIcon NvimTreeGitRenamed
NvimTreeGitStagedIcon NvimTreeGitStaged
NvimTreeGitFileDeletedHL NvimTreeFileDeleted
NvimTreeGitFileDirtyHL NvimTreeFileDirty
NvimTreeGitFileIgnoredHL NvimTreeFileIgnored
NvimTreeGitFileMergeHL NvimTreeFileMerge
NvimTreeGitFileNewHL NvimTreeFileNew
NvimTreeGitFileRenamedHL NvimTreeFileRenamed
NvimTreeGitFileStagedHL NvimTreeFileStaged
NvimTreeGitFolderDeletedHL NvimTreeFolderDeleted
NvimTreeGitFolderDirtyHL NvimTreeFolderDirty
NvimTreeGitFolderIgnoredHL NvimTreeFolderIgnored
NvimTreeGitFolderMergeHL NvimTreeFolderMerge
NvimTreeGitFolderNewHL NvimTreeFolderNew
NvimTreeGitFolderRenamedHL NvimTreeFolderRenamed
NvimTreeGitFolderStagedHL NvimTreeFolderStaged
NvimTreeLspDiagnosticsError NvimTreeDiagnosticErrorIcon
NvimTreeLspDiagnosticsWarning NvimTreeDiagnosticWarnIcon
NvimTreeLspDiagnosticsInformation NvimTreeDiagnosticInfoIcon
NvimTreeLspDiagnosticsHint NvimTreeDiagnosticHintIcon
NvimTreeLspDiagnosticsErrorText NvimTreeDiagnosticErrorFileHL
NvimTreeLspDiagnosticsWarningText NvimTreeDiagnosticWarnFileHL
NvimTreeLspDiagnosticsInformationText NvimTreeDiagnosticInfoFileHL
NvimTreeLspDiagnosticsHintText NvimTreeDiagnosticHintFileHL
NvimTreeLspDiagnosticsErrorFolderText NvimTreeDiagnosticErrorFolderHL
NvimTreeLspDiagnosticsWarningFolderText NvimTreeDiagnosticWarnFolderHL
NvimTreeLspDiagnosticsInformationFolderText NvimTreeDiagnosticInfoFolderHL
NvimTreeLspDiagnosticsHintFolderText NvimTreeDiagnosticHintFolderHL
< <
============================================================================== ==============================================================================
9. EVENTS *nvim-tree-events* 9. EVENTS *nvim-tree-events*
@@ -2642,7 +2621,7 @@ Windows WSL and PowerShell
- Some filesystem watcher error related to permissions will not be reported - Some filesystem watcher error related to permissions will not be reported
============================================================================== ==============================================================================
12. NETRW *nvim-tree-netrw* 12. NETRW *nvim-tree-netrw*
|netrw| is a standard neovim plugin that is enabled by default. It provides, |netrw| is a standard neovim plugin that is enabled by default. It provides,
amongst other functionality, a file/directory browser. amongst other functionality, a file/directory browser.
@@ -2662,4 +2641,339 @@ keep using |netrw| without its browser features please ensure:
|nvim-tree.disable_netrw| `= false` |nvim-tree.disable_netrw| `= false`
|nvim-tree.hijack_netrw| ` = true` |nvim-tree.hijack_netrw| ` = true`
==============================================================================
13. LEGACY *nvim-tree-legacy*
Breaking refactors have been made however the legacy versions will be silently
migrated and used.
There are no plans to remove this migration.
==============================================================================
13.1 LEGACY: OPTS *nvim-tree-legacy-opts*
Legacy options are translated to the current, making type and value changes as
needed.
`update_cwd` |nvim-tree.sync_root_with_cwd|
`update_focused_file.update_cwd` |nvim-tree.update_focused_file.update_root|
`open_on_tab` |nvim-tree.tab.sync.open|
`ignore_buf_on_tab_change` |nvim-tree.tab.sync.ignore|
`renderer.root_folder_modifier` |nvim-tree.renderer.root_folder_label|
`update_focused_file.debounce_delay` |nvim-tree.view.debounce_delay|
`trash.require_confirm` |nvim-tree.ui.confirm.trash|
`view.adaptive_size` |nvim-tree.view.width|
`sort_by` |nvim-tree.sort.sorter|
`git.ignore` |nvim-tree.filters.git_ignored|
`renderer.icons.webdev_colors` |nvim-tree.renderer.icons.web_devicons.file.color|
==============================================================================
13.2 LEGACY: HIGHLIGHT *nvim-tree-legacy-highlight*
Legacy highlight group are still obeyed when they are defined and the current
highlight group is not, hard linking as follows: >
NvimTreeModifiedIcon NvimTreeModifiedFile
NvimTreeOpenedHL NvimTreeOpenedFile
NvimTreeBookmarkIcon NvimTreeBookmark
NvimTreeGitDeletedIcon NvimTreeGitDeleted
NvimTreeGitDirtyIcon NvimTreeGitDirty
NvimTreeGitIgnoredIcon NvimTreeGitIgnored
NvimTreeGitMergeIcon NvimTreeGitMerge
NvimTreeGitNewIcon NvimTreeGitNew
NvimTreeGitRenamedIcon NvimTreeGitRenamed
NvimTreeGitStagedIcon NvimTreeGitStaged
NvimTreeGitFileDeletedHL NvimTreeFileDeleted
NvimTreeGitFileDirtyHL NvimTreeFileDirty
NvimTreeGitFileIgnoredHL NvimTreeFileIgnored
NvimTreeGitFileMergeHL NvimTreeFileMerge
NvimTreeGitFileNewHL NvimTreeFileNew
NvimTreeGitFileRenamedHL NvimTreeFileRenamed
NvimTreeGitFileStagedHL NvimTreeFileStaged
NvimTreeGitFolderDeletedHL NvimTreeFolderDeleted
NvimTreeGitFolderDirtyHL NvimTreeFolderDirty
NvimTreeGitFolderIgnoredHL NvimTreeFolderIgnored
NvimTreeGitFolderMergeHL NvimTreeFolderMerge
NvimTreeGitFolderNewHL NvimTreeFolderNew
NvimTreeGitFolderRenamedHL NvimTreeFolderRenamed
NvimTreeGitFolderStagedHL NvimTreeFolderStaged
NvimTreeLspDiagnosticsError NvimTreeDiagnosticErrorIcon
NvimTreeLspDiagnosticsWarning NvimTreeDiagnosticWarnIcon
NvimTreeLspDiagnosticsInformation NvimTreeDiagnosticInfoIcon
NvimTreeLspDiagnosticsHint NvimTreeDiagnosticHintIcon
NvimTreeLspDiagnosticsErrorText NvimTreeDiagnosticErrorFileHL
NvimTreeLspDiagnosticsWarningText NvimTreeDiagnosticWarnFileHL
NvimTreeLspDiagnosticsInformationText NvimTreeDiagnosticInfoFileHL
NvimTreeLspDiagnosticsHintText NvimTreeDiagnosticHintFileHL
NvimTreeLspDiagnosticsErrorFolderText NvimTreeDiagnosticErrorFolderHL
NvimTreeLspDiagnosticsWarningFolderText NvimTreeDiagnosticWarnFolderHL
NvimTreeLspDiagnosticsInformationFolderText NvimTreeDiagnosticInfoFolderHL
NvimTreeLspDiagnosticsHintFolderText NvimTreeDiagnosticHintFolderHL
<
==============================================================================
14 INDEX *nvim-tree-index*
==============================================================================
14.1 INDEX: OPTS *nvim-tree-index-opts*
|nvim-tree.actions.change_dir|
|nvim-tree.actions.change_dir.enable|
|nvim-tree.actions.change_dir.global|
|nvim-tree.actions.change_dir.restrict_above_cwd|
|nvim-tree.actions.expand_all|
|nvim-tree.actions.expand_all.exclude|
|nvim-tree.actions.expand_all.max_folder_discovery|
|nvim-tree.actions.file_popup|
|nvim-tree.actions.file_popup.open_win_config|
|nvim-tree.actions.open_file|
|nvim-tree.actions.open_file.eject|
|nvim-tree.actions.open_file.quit_on_open|
|nvim-tree.actions.open_file.resize_window|
|nvim-tree.actions.open_file.window_picker|
|nvim-tree.actions.open_file.window_picker.chars|
|nvim-tree.actions.open_file.window_picker.enable|
|nvim-tree.actions.open_file.window_picker.exclude|
|nvim-tree.actions.open_file.window_picker.picker|
|nvim-tree.actions.remove_file.close_window|
|nvim-tree.actions.use_system_clipboard|
|nvim-tree.auto_reload_on_write|
|nvim-tree.diagnostics.debounce_delay|
|nvim-tree.diagnostics.enable|
|nvim-tree.diagnostics.icons|
|nvim-tree.diagnostics.severity|
|nvim-tree.diagnostics.severity.max|
|nvim-tree.diagnostics.severity.min|
|nvim-tree.diagnostics.show_on_dirs|
|nvim-tree.diagnostics.show_on_open_dirs|
|nvim-tree.disable_netrw|
|nvim-tree.experimental|
|nvim-tree.filesystem_watchers.debounce_delay|
|nvim-tree.filesystem_watchers.enable|
|nvim-tree.filesystem_watchers.ignore_dirs|
|nvim-tree.filters.custom|
|nvim-tree.filters.dotfiles|
|nvim-tree.filters.exclude|
|nvim-tree.filters.git_clean|
|nvim-tree.filters.git_ignored|
|nvim-tree.filters.no_bookmark|
|nvim-tree.filters.no_buffer|
|nvim-tree.git.cygwin_support|
|nvim-tree.git.disable_for_dirs|
|nvim-tree.git.enable|
|nvim-tree.git.show_on_dirs|
|nvim-tree.git.show_on_open_dirs|
|nvim-tree.git.timeout|
|nvim-tree.help.sort_by|
|nvim-tree.hijack_cursor|
|nvim-tree.hijack_directories.auto_open|
|nvim-tree.hijack_directories.enable|
|nvim-tree.hijack_netrw|
|nvim-tree.hijack_unnamed_buffer_when_opening|
|nvim-tree.live_filter.always_show_folders|
|nvim-tree.live_filter.prefix|
|nvim-tree.log.enable|
|nvim-tree.log.truncate|
|nvim-tree.log.types|
|nvim-tree.log.types.all|
|nvim-tree.log.types.config|
|nvim-tree.log.types.copy_paste|
|nvim-tree.log.types.dev|
|nvim-tree.log.types.diagnostics|
|nvim-tree.log.types.git|
|nvim-tree.log.types.profile|
|nvim-tree.log.types.watcher|
|nvim-tree.modified.enable|
|nvim-tree.modified.show_on_dirs|
|nvim-tree.modified.show_on_open_dirs|
|nvim-tree.notify.threshold|
|nvim-tree.on_attach|
|nvim-tree.prefer_startup_root|
|nvim-tree.reload_on_bufenter|
|nvim-tree.renderer.add_trailing|
|nvim-tree.renderer.full_name|
|nvim-tree.renderer.group_empty|
|nvim-tree.renderer.highlight_bookmarks|
|nvim-tree.renderer.highlight_clipboard|
|nvim-tree.renderer.highlight_diagnostics|
|nvim-tree.renderer.highlight_git|
|nvim-tree.renderer.highlight_modified|
|nvim-tree.renderer.highlight_opened_files|
|nvim-tree.renderer.icons|
|nvim-tree.renderer.icons.bookmarks_placement|
|nvim-tree.renderer.icons.diagnostics_placement|
|nvim-tree.renderer.icons.git_placement|
|nvim-tree.renderer.icons.glyphs|
|nvim-tree.renderer.icons.glyphs.default|
|nvim-tree.renderer.icons.glyphs.folder|
|nvim-tree.renderer.icons.glyphs.git|
|nvim-tree.renderer.icons.glyphs.modified|
|nvim-tree.renderer.icons.glyphs.symlink|
|nvim-tree.renderer.icons.modified_placement|
|nvim-tree.renderer.icons.padding|
|nvim-tree.renderer.icons.show|
|nvim-tree.renderer.icons.show.bookmarks|
|nvim-tree.renderer.icons.show.diagnostics|
|nvim-tree.renderer.icons.show.file|
|nvim-tree.renderer.icons.show.folder|
|nvim-tree.renderer.icons.show.folder_arrow|
|nvim-tree.renderer.icons.show.git|
|nvim-tree.renderer.icons.show.modified|
|nvim-tree.renderer.icons.symlink_arrow|
|nvim-tree.renderer.icons.web_devicons|
|nvim-tree.renderer.icons.web_devicons.file|
|nvim-tree.renderer.icons.web_devicons.file.color|
|nvim-tree.renderer.icons.web_devicons.file.enable|
|nvim-tree.renderer.icons.web_devicons.folder|
|nvim-tree.renderer.icons.web_devicons.folder.color|
|nvim-tree.renderer.icons.web_devicons.folder.enable|
|nvim-tree.renderer.indent_markers|
|nvim-tree.renderer.indent_markers.enable|
|nvim-tree.renderer.indent_markers.icons|
|nvim-tree.renderer.indent_markers.inline_arrows|
|nvim-tree.renderer.indent_width|
|nvim-tree.renderer.root_folder_label|
|nvim-tree.renderer.special_files|
|nvim-tree.renderer.symlink_destination|
|nvim-tree.respect_buf_cwd|
|nvim-tree.root_dirs|
|nvim-tree.select_prompts|
|nvim-tree.sort.files_first|
|nvim-tree.sort.folders_first|
|nvim-tree.sort.sorter|
|nvim-tree.sync_root_with_cwd|
|nvim-tree.system_open.args|
|nvim-tree.system_open.cmd|
|nvim-tree.tab.sync|
|nvim-tree.tab.sync.close|
|nvim-tree.tab.sync.ignore|
|nvim-tree.tab.sync.open|
|nvim-tree.trash.cmd|
|nvim-tree.ui.confirm|
|nvim-tree.ui.confirm.default_yes|
|nvim-tree.ui.confirm.remove|
|nvim-tree.ui.confirm.trash|
|nvim-tree.update_focused_file.enable|
|nvim-tree.update_focused_file.ignore_list|
|nvim-tree.update_focused_file.update_root|
|nvim-tree.view.centralize_selection|
|nvim-tree.view.cursorline|
|nvim-tree.view.debounce_delay|
|nvim-tree.view.float|
|nvim-tree.view.float.enable|
|nvim-tree.view.float.open_win_config|
|nvim-tree.view.float.quit_on_focus_loss|
|nvim-tree.view.number|
|nvim-tree.view.preserve_window_proportions|
|nvim-tree.view.relativenumber|
|nvim-tree.view.side|
|nvim-tree.view.signcolumn|
|nvim-tree.view.width|
|nvim-tree.view.width.max|
|nvim-tree.view.width.min|
|nvim-tree.view.width.padding|
==============================================================================
14.2 INDEX: API *nvim-tree-index-api*
|nvim-tree-api.commands.get()|
|nvim-tree-api.config.mappings.default_on_attach()|
|nvim-tree-api.config.mappings.get_keymap()|
|nvim-tree-api.config.mappings.get_keymap_default()|
|nvim-tree-api.diagnostics.hi_test()|
|nvim-tree-api.events.subscribe()|
|nvim-tree-api.fs.clear_clipboard()|
|nvim-tree-api.fs.copy.absolute_path()|
|nvim-tree-api.fs.copy.filename()|
|nvim-tree-api.fs.copy.node()|
|nvim-tree-api.fs.copy.relative_path()|
|nvim-tree-api.fs.create()|
|nvim-tree-api.fs.cut()|
|nvim-tree-api.fs.paste()|
|nvim-tree-api.fs.print_clipboard()|
|nvim-tree-api.fs.remove()|
|nvim-tree-api.fs.rename()|
|nvim-tree-api.fs.rename_basename()|
|nvim-tree-api.fs.rename_full()|
|nvim-tree-api.fs.rename_node()|
|nvim-tree-api.fs.rename_sub()|
|nvim-tree-api.fs.trash()|
|nvim-tree-api.git.reload()|
|nvim-tree-api.live_filter.clear()|
|nvim-tree-api.live_filter.start()|
|nvim-tree-api.marks.bulk.delete()|
|nvim-tree-api.marks.bulk.move()|
|nvim-tree-api.marks.bulk.trash()|
|nvim-tree-api.marks.clear()|
|nvim-tree-api.marks.get()|
|nvim-tree-api.marks.list()|
|nvim-tree-api.marks.navigate.next()|
|nvim-tree-api.marks.navigate.prev()|
|nvim-tree-api.marks.navigate.select()|
|nvim-tree-api.marks.toggle()|
|nvim-tree-api.node.navigate.diagnostics.next()|
|nvim-tree-api.node.navigate.diagnostics.next_recursive()|
|nvim-tree-api.node.navigate.diagnostics.prev()|
|nvim-tree-api.node.navigate.diagnostics.prev_recursive()|
|nvim-tree-api.node.navigate.git.next()|
|nvim-tree-api.node.navigate.git.next_recursive()|
|nvim-tree-api.node.navigate.git.next_skip_gitignored()|
|nvim-tree-api.node.navigate.git.prev()|
|nvim-tree-api.node.navigate.git.prev_recursive()|
|nvim-tree-api.node.navigate.git.prev_skip_gitignored()|
|nvim-tree-api.node.navigate.opened.next()|
|nvim-tree-api.node.navigate.opened.prev()|
|nvim-tree-api.node.navigate.parent()|
|nvim-tree-api.node.navigate.parent_close()|
|nvim-tree-api.node.navigate.sibling.first()|
|nvim-tree-api.node.navigate.sibling.last()|
|nvim-tree-api.node.navigate.sibling.next()|
|nvim-tree-api.node.navigate.sibling.prev()|
|nvim-tree-api.node.open.drop()|
|nvim-tree-api.node.open.edit()|
|nvim-tree-api.node.open.horizontal()|
|nvim-tree-api.node.open.no_window_picker()|
|nvim-tree-api.node.open.preview()|
|nvim-tree-api.node.open.preview_no_picker()|
|nvim-tree-api.node.open.replace_tree_buffer()|
|nvim-tree-api.node.open.tab()|
|nvim-tree-api.node.open.tab_drop()|
|nvim-tree-api.node.open.toggle_group_empty()|
|nvim-tree-api.node.open.vertical()|
|nvim-tree-api.node.run.cmd()|
|nvim-tree-api.node.run.system()|
|nvim-tree-api.node.show_info_popup()|
|nvim-tree-api.tree.change_root()|
|nvim-tree-api.tree.change_root_to_node()|
|nvim-tree-api.tree.change_root_to_parent()|
|nvim-tree-api.tree.close()|
|nvim-tree-api.tree.close_in_all_tabs()|
|nvim-tree-api.tree.close_in_this_tab()|
|nvim-tree-api.tree.collapse_all()|
|nvim-tree-api.tree.expand_all()|
|nvim-tree-api.tree.find_file()|
|nvim-tree-api.tree.focus()|
|nvim-tree-api.tree.get_nodes()|
|nvim-tree-api.tree.get_node_under_cursor()|
|nvim-tree-api.tree.is_tree_buf()|
|nvim-tree-api.tree.is_visible()|
|nvim-tree-api.tree.open()|
|nvim-tree-api.tree.reload()|
|nvim-tree-api.tree.search_node()|
|nvim-tree-api.tree.toggle()|
|nvim-tree-api.tree.toggle_custom_filter()|
|nvim-tree-api.tree.toggle_git_clean_filter()|
|nvim-tree-api.tree.toggle_gitignore_filter()|
|nvim-tree-api.tree.toggle_help()|
|nvim-tree-api.tree.toggle_hidden_filter()|
|nvim-tree-api.tree.toggle_no_bookmark_filter()|
|nvim-tree-api.tree.toggle_no_buffer_filter()|
|nvim-tree-api.tree.winid()|
==============================================================================
vim:tw=78:ts=4:sw=4:et:ft=help:norl: vim:tw=78:ts=4:sw=4:et:ft=help:norl:

View File

@@ -105,8 +105,8 @@ function M.open_on_directory()
end end
function M.place_cursor_on_node() function M.place_cursor_on_node()
local search = vim.fn.searchcount() local ok, search = pcall(vim.fn.searchcount)
if search and search.exact_match == 1 then if ok and search and search.exact_match == 1 then
return return
end end
@@ -623,6 +623,9 @@ local ACCEPTED_TYPES = {
group_empty = { "boolean", "function" }, group_empty = { "boolean", "function" },
root_folder_label = { "function", "string", "boolean" }, root_folder_label = { "function", "string", "boolean" },
}, },
filters = {
custom = { "function" },
},
actions = { actions = {
open_file = { open_file = {
window_picker = { window_picker = {

View File

@@ -295,6 +295,12 @@ function M.copy_filename(node)
copy_to_clipboard(node.name) copy_to_clipboard(node.name)
end end
---@param node Node
function M.copy_basename(node)
local basename = vim.fn.fnamemodify(node.name, ":r")
copy_to_clipboard(basename)
end
---@param node Node ---@param node Node
function M.copy_path(node) function M.copy_path(node)
local absolute_path = node.absolute_path local absolute_path = node.absolute_path

View File

@@ -9,6 +9,16 @@ local M = {
config = {}, config = {},
} }
---@param iter function iterable
---@return integer
local function get_num_nodes(iter)
local i = 0
for _ in iter do
i = i + 1
end
return i
end
local ALLOWED_MODIFIERS = { local ALLOWED_MODIFIERS = {
[":p"] = true, [":p"] = true,
[":p:h"] = true, [":p:h"] = true,
@@ -31,15 +41,46 @@ function M.rename(node, to)
return return
end end
events._dispatch_will_rename_node(node.absolute_path, to) -- create a folder for each path element if the folder does not exist
local success, err = vim.loop.fs_rename(node.absolute_path, to) local idx = 0
if not success then local path_to_create = ""
notify.warn(err_fmt(notify_from, notify_to, err))
return local num_nodes = get_num_nodes(utils.path_split(utils.path_remove_trailing(to)))
local is_error = false
for path in utils.path_split(to) do
idx = idx + 1
local p = utils.path_remove_trailing(path)
if #path_to_create == 0 and vim.fn.has "win32" == 1 then
path_to_create = utils.path_join { p, path_to_create }
else
path_to_create = utils.path_join { path_to_create, p }
end
if idx == num_nodes then
events._dispatch_will_rename_node(node.absolute_path, to)
local success, err = vim.loop.fs_rename(node.absolute_path, to)
if not success then
notify.warn(err_fmt(notify_from, notify_to, err))
return
end
elseif not utils.file_exists(path_to_create) then
local success = vim.loop.fs_mkdir(path_to_create, 493)
if not success then
notify.error("Could not create folder " .. notify.render_path(path_to_create))
is_error = true
break
end
is_error = false
end
end
if not is_error then
notify.info(string.format("%s -> %s", notify_from, notify_to))
utils.rename_loaded_buffers(node.absolute_path, to)
events._dispatch_node_renamed(node.absolute_path, to)
end end
notify.info(string.format("%s -> %s", notify_from, notify_to))
utils.rename_loaded_buffers(node.absolute_path, to)
events._dispatch_node_renamed(node.absolute_path, to)
end end
---@param default_modifier string|nil ---@param default_modifier string|nil

View File

@@ -163,6 +163,7 @@ Api.fs.print_clipboard = wrap(actions.fs.copy_paste.print_clipboard)
Api.fs.copy.node = wrap_node(actions.fs.copy_paste.copy) Api.fs.copy.node = wrap_node(actions.fs.copy_paste.copy)
Api.fs.copy.absolute_path = wrap_node(actions.fs.copy_paste.copy_absolute_path) Api.fs.copy.absolute_path = wrap_node(actions.fs.copy_paste.copy_absolute_path)
Api.fs.copy.filename = wrap_node(actions.fs.copy_paste.copy_filename) Api.fs.copy.filename = wrap_node(actions.fs.copy_paste.copy_filename)
Api.fs.copy.basename = wrap_node(actions.fs.copy_paste.copy_basename)
Api.fs.copy.relative_path = wrap_node(actions.fs.copy_paste.copy_path) Api.fs.copy.relative_path = wrap_node(actions.fs.copy_paste.copy_path)
---@param mode string ---@param mode string

View File

@@ -4,6 +4,7 @@ local marks = require "nvim-tree.marks"
local M = { local M = {
ignore_list = {}, ignore_list = {},
exclude_list = {}, exclude_list = {},
custom_function = nil,
} }
---@param path string ---@param path string
@@ -84,6 +85,11 @@ local function custom(path)
local basename = utils.path_basename(path) local basename = utils.path_basename(path)
-- filter user's custom function
if M.custom_function and M.custom_function(path) then
return true
end
-- filter custom regexes -- filter custom regexes
local relpath = utils.path_relative(path, vim.loop.cwd()) local relpath = utils.path_relative(path, vim.loop.cwd())
for pat, _ in pairs(M.ignore_list) do for pat, _ in pairs(M.ignore_list) do
@@ -153,9 +159,13 @@ function M.setup(opts)
M.exclude_list = opts.filters.exclude M.exclude_list = opts.filters.exclude
local custom_filter = opts.filters.custom local custom_filter = opts.filters.custom
if custom_filter and #custom_filter > 0 then if type(custom_filter) == "function" then
for _, filter_name in pairs(custom_filter) do M.custom_function = custom_filter
M.ignore_list[filter_name] = true else
if custom_filter and #custom_filter > 0 then
for _, filter_name in pairs(custom_filter) do
M.ignore_list[filter_name] = true
end
end end
end end
end end

View File

@@ -136,6 +136,10 @@ end
---@param path string absolute ---@param path string absolute
---@return string|nil ---@return string|nil
function M.get_toplevel(path) function M.get_toplevel(path)
if not path then
return nil
end
if not M.config.git.enable then if not M.config.git.enable then
return nil return nil
end end

View File

@@ -68,6 +68,7 @@ function M.default_on_attach(bufnr)
vim.keymap.set('n', 'f', api.live_filter.start, opts('Live Filter: Start')) vim.keymap.set('n', 'f', api.live_filter.start, opts('Live Filter: Start'))
vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help')) vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help'))
vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path')) vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path'))
vim.keymap.set('n', 'ge', api.fs.copy.basename, opts('Copy Basename'))
vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Filter: Dotfiles')) vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Filter: Dotfiles'))
vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Filter: Git Ignore')) vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Filter: Git Ignore'))
vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling')) vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling'))

View File

@@ -3,6 +3,7 @@ local notify = require "nvim-tree.notify"
local M = {} local M = {}
-- silently move, please add to help nvim-tree-legacy-opts
local function refactored(opts) local function refactored(opts)
-- 2022/06/20 -- 2022/06/20
utils.move_missing_val(opts, "update_focused_file", "update_cwd", opts, "update_focused_file", "update_root", true) utils.move_missing_val(opts, "update_focused_file", "update_cwd", opts, "update_focused_file", "update_root", true)
@@ -61,12 +62,12 @@ end
local function removed(opts) local function removed(opts)
if opts.auto_close then if opts.auto_close then
notify.warn "auto close feature has been removed, see note in the README (tips & reminder section)" notify.warn "auto close feature has been removed: https://github.com/nvim-tree/nvim-tree.lua/wiki/Auto-Close"
opts.auto_close = nil opts.auto_close = nil
end end
if opts.focus_empty_on_setup then if opts.focus_empty_on_setup then
notify.warn "focus_empty_on_setup has been removed and will be replaced by a new startup configuration. Please remove this option. See https://bit.ly/3yJch2T" notify.warn "focus_empty_on_setup has been removed: https://github.com/nvim-tree/nvim-tree.lua/wiki/Open-At-Startup"
opts.focus_empty_on_setup = nil opts.focus_empty_on_setup = nil
end end

View File

@@ -21,6 +21,39 @@ sed -e "s/^ / /" /tmp/DEFAULT_OPTS.2.lua > /tmp/DEFAULT_OPTS.6.lua
sed -i -e "/${begin}/,/${end}/{ /${begin}/{p; r /tmp/DEFAULT_OPTS.6.lua 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
#
# opts index
#
begin="nvim-tree-index-opts\*"
end="====================="
printf '\n' > /tmp/index-opts.txt
sed -E "
/^ *\*(nvim-tree\..*)\*$/! d ;
s/^.*\*(.*)\*/|\1|/g
" doc/nvim-tree-lua.txt | sort -d >> /tmp/index-opts.txt
printf '\n' >> /tmp/index-opts.txt
sed -i -e "/${begin}/,/${end}/{ /${begin}/{p; r /tmp/index-opts.txt
}; /${end}/p; d; }" doc/nvim-tree-lua.txt
#
# api index
#
begin="nvim-tree-index-api\*"
end="====================="
printf '\n' > /tmp/index-api.txt
sed -E "
/\*(nvim-tree-api.*\(\))\*/! d ;
s/^.*\*(.*)\*/|\1|/g
" doc/nvim-tree-lua.txt | sort -d >> /tmp/index-api.txt
printf '\n' >> /tmp/index-api.txt
sed -i -e "/${begin}/,/${end}/{ /${begin}/{p; r /tmp/index-api.txt
}; /${end}/p; d; }" doc/nvim-tree-lua.txt
# #
# DEFAULT_ON_ATTACH # DEFAULT_ON_ATTACH
# #