Compare commits
13 Commits
nvim-tree-
...
nvim-tree-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2bc725a3eb | ||
|
|
340d3a9795 | ||
|
|
edd4e25fd4 | ||
|
|
78c4c083ed | ||
|
|
acffab931a | ||
|
|
64f61e4c91 | ||
|
|
347e1eb352 | ||
|
|
76db7ed0da | ||
|
|
5a18b98274 | ||
|
|
62008e5cf2 | ||
|
|
ae8e46e8fa | ||
|
|
81eb8d5192 | ||
|
|
d8d3a1590a |
4
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
4
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -59,9 +59,9 @@ body:
|
|||||||
|
|
||||||
If not provided it is very unlikely that the nvim-tree team will be able to address your issue.
|
If not provided it is very unlikely that the nvim-tree team will be able to address your issue.
|
||||||
|
|
||||||
See [wiki: Clean Room Replication](https://github.com/nvim-tree/nvim-tree.lua/wiki/Troubleshooting#clean-room-replication) for instructions.
|
See [wiki: Clean Room Replication](https://github.com/nvim-tree/nvim-tree.lua/wiki/Troubleshooting#clean-room-replication) for instructions and paste the contents of your `/tmp/nvt-min.lua` here.
|
||||||
|
|
||||||
Please paste the contents of your `/tmp/nvt-min.lua` here."
|
Please do NOT post a configuration that uses other plugin managers such as lazy, see [wiki: Lazy Loading](https://github.com/nvim-tree/nvim-tree.lua/wiki/Installation#lazy-loading)"
|
||||||
render: lua
|
render: lua
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
37
.github/workflows/luarocks.yml
vendored
Normal file
37
.github/workflows/luarocks.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
name: Release
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v[0-9]+.[0-9]+.[0-9]+'
|
||||||
|
workflow_dispatch:
|
||||||
|
jobs:
|
||||||
|
luarocks-upload:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: LuaRocks Upload
|
||||||
|
uses: nvim-neorocks/luarocks-tag-release@v5
|
||||||
|
env:
|
||||||
|
LUAROCKS_API_KEY: ${{ secrets.LUAROCKS_API_KEY }}
|
||||||
|
with:
|
||||||
|
summary: A File Explorer For Neovim
|
||||||
|
detailed_description: |
|
||||||
|
Automatic updates
|
||||||
|
|
||||||
|
File type icons
|
||||||
|
|
||||||
|
Git integration
|
||||||
|
|
||||||
|
Diagnostics integration - LSP and COC
|
||||||
|
|
||||||
|
(Live) filtering
|
||||||
|
|
||||||
|
Cut, copy, paste, rename, delete, create etc.
|
||||||
|
|
||||||
|
Highly customisable
|
||||||
|
|
||||||
|
Rich API
|
||||||
|
license: "GPL-3.0"
|
||||||
|
labels: neovim
|
||||||
|
dependencies: |
|
||||||
|
nvim-web-devicons
|
||||||
2
.github/workflows/semantic-pr-subject.yml
vendored
2
.github/workflows/semantic-pr-subject.yml
vendored
@@ -14,6 +14,6 @@ jobs:
|
|||||||
semantic-pr-subject:
|
semantic-pr-subject:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: amannn/action-semantic-pull-request@v5.4.0
|
- uses: amannn/action-semantic-pull-request@v5.5.2
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
".": "1.3.0"
|
".": "1.3.3"
|
||||||
}
|
}
|
||||||
|
|||||||
24
CHANGELOG.md
24
CHANGELOG.md
@@ -1,5 +1,29 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [1.3.3](https://github.com/nvim-tree/nvim-tree.lua/compare/nvim-tree-v1.3.2...nvim-tree-v1.3.3) (2024-05-14)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* nil access exception with git integration when changing branches ([#2774](https://github.com/nvim-tree/nvim-tree.lua/issues/2774)) ([340d3a9](https://github.com/nvim-tree/nvim-tree.lua/commit/340d3a9795e06bdd1814228de398cd510f9bfbb0))
|
||||||
|
|
||||||
|
## [1.3.2](https://github.com/nvim-tree/nvim-tree.lua/compare/nvim-tree-v1.3.1...nvim-tree-v1.3.2) (2024-05-12)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **#2758:** use nvim-webdevicons default file icon, not renderer.icons.glyphs.default, as per :help ([#2759](https://github.com/nvim-tree/nvim-tree.lua/issues/2759)) ([347e1eb](https://github.com/nvim-tree/nvim-tree.lua/commit/347e1eb35264677f66a79466bb5e3d111968e12c))
|
||||||
|
* **#2758:** use nvim-webdevicons default for default files ([347e1eb](https://github.com/nvim-tree/nvim-tree.lua/commit/347e1eb35264677f66a79466bb5e3d111968e12c))
|
||||||
|
* **#925:** handle newlines in file names ([#2754](https://github.com/nvim-tree/nvim-tree.lua/issues/2754)) ([64f61e4](https://github.com/nvim-tree/nvim-tree.lua/commit/64f61e4c913047a045ff90bd188dd3b54ee443cf))
|
||||||
|
|
||||||
|
## [1.3.1](https://github.com/nvim-tree/nvim-tree.lua/compare/nvim-tree-v1.3.0...nvim-tree-v1.3.1) (2024-04-25)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **#2535:** TextYankPost event sends vim.v.event ([#2734](https://github.com/nvim-tree/nvim-tree.lua/issues/2734)) ([d8d3a15](https://github.com/nvim-tree/nvim-tree.lua/commit/d8d3a1590a05b2d8b5eb26e2ed1c6052b1b47a77))
|
||||||
|
* **#2733:** escape trash path ([#2735](https://github.com/nvim-tree/nvim-tree.lua/issues/2735)) ([81eb8d5](https://github.com/nvim-tree/nvim-tree.lua/commit/81eb8d519233c105f30dc0a278607e62b20502fd))
|
||||||
|
|
||||||
## [1.3.0](https://github.com/nvim-tree/nvim-tree.lua/compare/nvim-tree-v1.2.0...nvim-tree-v1.3.0) (2024-03-30)
|
## [1.3.0](https://github.com/nvim-tree/nvim-tree.lua/compare/nvim-tree-v1.2.0...nvim-tree-v1.3.0) (2024-03-30)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -276,17 +276,24 @@ end
|
|||||||
---@param content string
|
---@param content string
|
||||||
local function copy_to_clipboard(content)
|
local function copy_to_clipboard(content)
|
||||||
local clipboard_name
|
local clipboard_name
|
||||||
|
local reg
|
||||||
if M.config.actions.use_system_clipboard == true then
|
if M.config.actions.use_system_clipboard == true then
|
||||||
vim.fn.setreg("+", content)
|
|
||||||
vim.fn.setreg('"', content)
|
|
||||||
clipboard_name = "system"
|
clipboard_name = "system"
|
||||||
|
reg = "+"
|
||||||
else
|
else
|
||||||
vim.fn.setreg('"', content)
|
|
||||||
vim.fn.setreg("1", content)
|
|
||||||
clipboard_name = "neovim"
|
clipboard_name = "neovim"
|
||||||
|
reg = "1"
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.api.nvim_exec_autocmds("TextYankPost", {})
|
-- manually firing TextYankPost does not set vim.v.event
|
||||||
|
-- workaround: create a scratch buffer with the clipboard contents and send a yank command
|
||||||
|
local temp_buf = vim.api.nvim_create_buf(false, true)
|
||||||
|
vim.api.nvim_buf_set_text(temp_buf, 0, 0, 0, 0, { content })
|
||||||
|
vim.api.nvim_buf_call(temp_buf, function()
|
||||||
|
vim.cmd(string.format('normal! "%sy$', reg))
|
||||||
|
end)
|
||||||
|
vim.api.nvim_buf_delete(temp_buf, {})
|
||||||
|
|
||||||
notify.info(string.format("Copied %s to %s clipboard!", content, clipboard_name))
|
notify.info(string.format("Copied %s to %s clipboard!", content, clipboard_name))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ function M.remove(node)
|
|||||||
-- trashes a path (file or folder)
|
-- trashes a path (file or folder)
|
||||||
local function trash_path(on_exit)
|
local function trash_path(on_exit)
|
||||||
local need_sync_wait = utils.is_windows
|
local need_sync_wait = utils.is_windows
|
||||||
local job = vim.fn.jobstart(M.config.trash.cmd .. ' "' .. node.absolute_path .. '"', {
|
local job = vim.fn.jobstart(M.config.trash.cmd .. " " .. vim.fn.shellescape(node.absolute_path), {
|
||||||
detach = not need_sync_wait,
|
detach = not need_sync_wait,
|
||||||
on_exit = on_exit,
|
on_exit = on_exit,
|
||||||
on_stderr = on_stderr,
|
on_stderr = on_stderr,
|
||||||
|
|||||||
@@ -268,13 +268,14 @@ local function open_in_new_window(filename, mode)
|
|||||||
local fname = vim.fn.fnameescape(filename)
|
local fname = vim.fn.fnameescape(filename)
|
||||||
fname = utils.escape_special_chars(fname)
|
fname = utils.escape_special_chars(fname)
|
||||||
|
|
||||||
local cmd
|
local command
|
||||||
if create_new_window then
|
if create_new_window then
|
||||||
cmd = string.format("%s vsplit %s", new_window_side, fname)
|
-- generated from vim.api.nvim_parse_cmd("belowright vsplit foo", {})
|
||||||
|
command = { cmd = "vsplit", mods = { split = new_window_side }, args = { fname } }
|
||||||
elseif mode:match "split$" then
|
elseif mode:match "split$" then
|
||||||
cmd = string.format("%s %s", mode, fname)
|
command = { cmd = mode, args = { fname } }
|
||||||
else
|
else
|
||||||
cmd = string.format("edit %s", fname)
|
command = { cmd = "edit", args = { fname } }
|
||||||
end
|
end
|
||||||
|
|
||||||
if (mode == "preview" or mode == "preview_no_picker") and view.View.float.enable then
|
if (mode == "preview" or mode == "preview_no_picker") and view.View.float.enable then
|
||||||
@@ -286,7 +287,7 @@ local function open_in_new_window(filename, mode)
|
|||||||
set_current_win_no_autocmd(target_winid, { "BufEnter" })
|
set_current_win_no_autocmd(target_winid, { "BufEnter" })
|
||||||
end
|
end
|
||||||
|
|
||||||
pcall(vim.cmd, cmd)
|
pcall(vim.cmd, command)
|
||||||
lib.set_target_win()
|
lib.set_target_win()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ end
|
|||||||
---@param absolute_path string
|
---@param absolute_path string
|
||||||
---@return GitStatus
|
---@return GitStatus
|
||||||
local function get_git_status(parent_ignored, status, absolute_path)
|
local function get_git_status(parent_ignored, status, absolute_path)
|
||||||
local file_status = parent_ignored and "!!" or status.files and status.files[absolute_path]
|
local file_status = parent_ignored and "!!" or (status and status.files and status.files[absolute_path])
|
||||||
return { file = file_status }
|
return { file = file_status }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -422,11 +422,21 @@ function Builder:build_header()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---Sanitize lines for rendering.
|
||||||
|
---Replace newlines with literal \n
|
||||||
|
---@private
|
||||||
|
function Builder:sanitize_lines()
|
||||||
|
self.lines = vim.tbl_map(function(line)
|
||||||
|
return line and line:gsub("\n", "\\n") or ""
|
||||||
|
end, self.lines)
|
||||||
|
end
|
||||||
|
|
||||||
---Build all lines with highlights and signs
|
---Build all lines with highlights and signs
|
||||||
---@return Builder
|
---@return Builder
|
||||||
function Builder:build()
|
function Builder:build()
|
||||||
self:build_header()
|
self:build_header()
|
||||||
self:build_lines()
|
self:build_lines()
|
||||||
|
self:sanitize_lines()
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,12 @@ local function get_file_icon_webdev(fname, extension)
|
|||||||
-- If there are more extensions to the file, try to grab the icon for them recursively
|
-- If there are more extensions to the file, try to grab the icon for them recursively
|
||||||
return get_file_icon_webdev(fname, string.match(extension, "%.(.*)"))
|
return get_file_icon_webdev(fname, string.match(extension, "%.(.*)"))
|
||||||
else
|
else
|
||||||
return get_file_icon_default()
|
local devicons_default = M.devicons.get_default_icon()
|
||||||
|
if devicons_default and type(devicons_default.icon) == "string" and type(devicons_default.name) == "string" then
|
||||||
|
return devicons_default.icon, "DevIcon" .. devicons_default.name
|
||||||
|
else
|
||||||
|
return get_file_icon_default()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user