From 2342a12037725468a09e7997a9f6e61faa832a2c Mon Sep 17 00:00:00 2001 From: booperlv Date: Sat, 18 Sep 2021 12:14:53 +0800 Subject: [PATCH 1/6] feat: option to create in parent directory when cursor is on a closed folder --- lua/nvim-tree/fs.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lua/nvim-tree/fs.lua b/lua/nvim-tree/fs.lua index 84e3e732b08..476dcc22c42 100644 --- a/lua/nvim-tree/fs.lua +++ b/lua/nvim-tree/fs.lua @@ -64,6 +64,13 @@ function M.create(node) add_into = node.absolute_path:sub(0, -(#node.name + 1)) end + local create_in_closed_folder = vim.g.nvim_tree_create_in_closed_folder or 1 + if create_in_closed_folder == 0 then + if node.open == false then + add_into = node.absolute_path:sub(0, -(#node.name + 1)) + end + end + local ans = vim.fn.input('Create file ', add_into) utils.clear_prompt() if not ans or #ans == 0 or luv.fs_access(ans, 'r') then return end From 175c4ed90240f6bcb166d0f208299187cad907a9 Mon Sep 17 00:00:00 2001 From: booperlv Date: Sat, 18 Sep 2021 12:38:54 +0800 Subject: [PATCH 2/6] docs: add documentation for g:nvim_tree_create_in_closed_folder --- README.md | 1 + doc/nvim-tree-lua.txt | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/README.md b/README.md index a3e1f25ea99..c188d7ab550 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,7 @@ let g:nvim_tree_icon_padding = ' ' "one space by default, used for rendering the let g:nvim_tree_symlink_arrow = ' >> ' " defaults to ' ➛ '. used as a separator between symlinks' source and target. let g:nvim_tree_update_cwd = 1 "0 by default, will update the tree cwd when changing nvim's directory (DirChanged event). Behaves strangely with autochdir set. let g:nvim_tree_respect_buf_cwd = 1 "0 by default, will change cwd of nvim-tree to that of new buffer's when opening nvim-tree. +let g:nvim_tree_create_in_closed_folder = 0 "1 by default, sets the path destination of a file when cursor is on a closed folder. Sets to the parent folder when 0, and inside the folder when 1. let g:nvim_tree_refresh_wait = 500 "1000 by default, control how often the tree can be refreshed, 1000 means the tree can be refresh once per 1000ms. let g:nvim_tree_window_picker_exclude = { \ 'filetype': [ diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index 66a433968e9..bba36bb08f5 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -349,6 +349,12 @@ WARNING: Behaves strangely with autochdir set. Can be 0 or 1. 0 by default. Will change cwd of nvim-tree to that of new buffer's when opening nvim-tree. +|g:nvim_tree_create_in_closed_folder| *g:nvim_tree_create_in_closed_folder* + +Can be 0 or 1. 1 by default. +Creating a file when the cursor is on a closed folder will set the +path to be inside the closed folder when 1, and on the parent folder when 0. + ============================================================================== INFORMATIONS *nvim-tree-info* From 11e2a6c279cfa02164a7544e7381e72f37477b73 Mon Sep 17 00:00:00 2001 From: booperlv Date: Sat, 18 Sep 2021 12:43:02 +0800 Subject: [PATCH 3/6] docs: rephrase g:nvim_tree_create_in_closed_folder --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c188d7ab550..4291787379e 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ let g:nvim_tree_icon_padding = ' ' "one space by default, used for rendering the let g:nvim_tree_symlink_arrow = ' >> ' " defaults to ' ➛ '. used as a separator between symlinks' source and target. let g:nvim_tree_update_cwd = 1 "0 by default, will update the tree cwd when changing nvim's directory (DirChanged event). Behaves strangely with autochdir set. let g:nvim_tree_respect_buf_cwd = 1 "0 by default, will change cwd of nvim-tree to that of new buffer's when opening nvim-tree. -let g:nvim_tree_create_in_closed_folder = 0 "1 by default, sets the path destination of a file when cursor is on a closed folder. Sets to the parent folder when 0, and inside the folder when 1. +let g:nvim_tree_create_in_closed_folder = 0 "1 by default, When creating files, sets the path of a file when cursor is on a closed folder to the parent folder when 0, and inside the folder when 1. let g:nvim_tree_refresh_wait = 500 "1000 by default, control how often the tree can be refreshed, 1000 means the tree can be refresh once per 1000ms. let g:nvim_tree_window_picker_exclude = { \ 'filetype': [ From 336290c17ca5f2ddef23686ff299cebf8817b9ab Mon Sep 17 00:00:00 2001 From: booperlv Date: Sat, 18 Sep 2021 14:26:22 +0800 Subject: [PATCH 4/6] refactor: g:nvim_tree_create_in_closed_folder only checked if the selection is a folder --- lua/nvim-tree/fs.lua | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lua/nvim-tree/fs.lua b/lua/nvim-tree/fs.lua index 476dcc22c42..dea9db94622 100644 --- a/lua/nvim-tree/fs.lua +++ b/lua/nvim-tree/fs.lua @@ -60,17 +60,16 @@ function M.create(node) local add_into if node.entries ~= nil then add_into = utils.path_add_trailing(node.absolute_path) + local create_in_closed_folder = vim.g.nvim_tree_create_in_closed_folder or 1 + if create_in_closed_folder == 0 then + if node.open == false then + add_into = node.absolute_path:sub(0, -(#node.name + 1)) + end + end else add_into = node.absolute_path:sub(0, -(#node.name + 1)) end - local create_in_closed_folder = vim.g.nvim_tree_create_in_closed_folder or 1 - if create_in_closed_folder == 0 then - if node.open == false then - add_into = node.absolute_path:sub(0, -(#node.name + 1)) - end - end - local ans = vim.fn.input('Create file ', add_into) utils.clear_prompt() if not ans or #ans == 0 or luv.fs_access(ans, 'r') then return end From 278ee3b6bfe45c41d0f1e2a80ab3edc086883b61 Mon Sep 17 00:00:00 2001 From: booperlv Date: Wed, 22 Sep 2021 01:20:48 +0800 Subject: [PATCH 5/6] refactor: g:nvim_tree_create_in_closed_folder --- lua/nvim-tree/fs.lua | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lua/nvim-tree/fs.lua b/lua/nvim-tree/fs.lua index dea9db94622..c68047b98bb 100644 --- a/lua/nvim-tree/fs.lua +++ b/lua/nvim-tree/fs.lua @@ -57,15 +57,14 @@ function M.create(node) } end + local node_is_open = ( + vim.g.nvim_tree_create_in_closed_folder == 0 + and node.open or false + ) + local add_into - if node.entries ~= nil then + if node.entries ~= nil and node_is_open then add_into = utils.path_add_trailing(node.absolute_path) - local create_in_closed_folder = vim.g.nvim_tree_create_in_closed_folder or 1 - if create_in_closed_folder == 0 then - if node.open == false then - add_into = node.absolute_path:sub(0, -(#node.name + 1)) - end - end else add_into = node.absolute_path:sub(0, -(#node.name + 1)) end From 15afe3a8b4a058e7b841a67da1e61b420465e40f Mon Sep 17 00:00:00 2001 From: booperlv Date: Sun, 26 Sep 2021 11:29:11 +0800 Subject: [PATCH 6/6] fix: nvim_tree_create_in_closed_folder overriding default behavior, not working --- lua/nvim-tree/fs.lua | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lua/nvim-tree/fs.lua b/lua/nvim-tree/fs.lua index c68047b98bb..e71ecad5849 100644 --- a/lua/nvim-tree/fs.lua +++ b/lua/nvim-tree/fs.lua @@ -57,10 +57,7 @@ function M.create(node) } end - local node_is_open = ( - vim.g.nvim_tree_create_in_closed_folder == 0 - and node.open or false - ) + local node_is_open = vim.g.nvim_tree_create_in_closed_folder == 1 or node.open local add_into if node.entries ~= nil and node_is_open then