From 3c924b457dd4d81a95a139cc7a9d7c9b281d316b Mon Sep 17 00:00:00 2001 From: Mitchell Sibal <20745877+msibal6@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:52:34 -0800 Subject: [PATCH 1/7] create a explorer command that opens a window tree at specified directory --- CHANGELOG.md | 1 + autoload/nerdtree/ui_glue.vim | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5381e59f..18263c7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - Pull Request Title n (PR Author) [PR Number](Link to PR) --> #### 7.0 +- **.2**: Add split explorer capability to NERDTREE (tempoz) [#1237](https://github.com/preservim/nerdtree/pull/1237) - **.1**: - Fix NERDTreeFind to handle directory case sensitivity. (dangibson) [#1387](https://github.com/preservim/nerdtree/pull/1387) - New Show file lines toggle. (hsnks100) [#1384](https://github.com/preservim/nerdtree/pull/1384) diff --git a/autoload/nerdtree/ui_glue.vim b/autoload/nerdtree/ui_glue.vim index eae817cf..4d6a88b3 100644 --- a/autoload/nerdtree/ui_glue.vim +++ b/autoload/nerdtree/ui_glue.vim @@ -642,6 +642,7 @@ endfunction function! nerdtree#ui_glue#setupCommands() abort command! -n=? -complete=dir -bar NERDTree :call g:NERDTreeCreator.CreateTabTree('') command! -n=? -complete=dir -bar NERDTreeToggle :call g:NERDTreeCreator.ToggleTabTree('') + command! -n=? -complete=dir -bar NERDTreeExplorer :call g:NERDTreeCreator.CreateWindowTree('') command! -n=0 -bar NERDTreeClose :call g:NERDTree.Close() command! -n=1 -complete=customlist,nerdtree#completeBookmarks -bar NERDTreeFromBookmark call g:NERDTreeCreator.CreateTabTree('') command! -n=0 -bar NERDTreeMirror call g:NERDTreeCreator.CreateMirror() From 18cf1c69d90790f2187941af31a4a811836d21de Mon Sep 17 00:00:00 2001 From: Mitchell Sibal <20745877+msibal6@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:58:57 -0800 Subject: [PATCH 2/7] update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18263c7c..12d322ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ - Pull Request Title n (PR Author) [PR Number](Link to PR) --> #### 7.0 -- **.2**: Add split explorer capability to NERDTREE (tempoz) [#1237](https://github.com/preservim/nerdtree/pull/1237) +- **.2**: Add split explorer capability to NERDTREE (msibal6) [#1368](https://github.com/preservim/nerdtree/pull/1368) - **.1**: - Fix NERDTreeFind to handle directory case sensitivity. (dangibson) [#1387](https://github.com/preservim/nerdtree/pull/1387) - New Show file lines toggle. (hsnks100) [#1384](https://github.com/preservim/nerdtree/pull/1384) From 3cb4f900ee58e0c669be0c63174c40aac8e6bebd Mon Sep 17 00:00:00 2001 From: msibal6 <20745877+msibal6@users.noreply.github.com> Date: Mon, 11 Dec 2023 20:15:33 -0800 Subject: [PATCH 3/7] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12d322ba..ee00fc1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ - Pull Request Title n (PR Author) [PR Number](Link to PR) --> #### 7.0 -- **.2**: Add split explorer capability to NERDTREE (msibal6) [#1368](https://github.com/preservim/nerdtree/pull/1368) +- **.2**: Add split explorer capability to NERDTREE (msibal6) [#1389](https://github.com/preservim/nerdtree/pull/1389) - **.1**: - Fix NERDTreeFind to handle directory case sensitivity. (dangibson) [#1387](https://github.com/preservim/nerdtree/pull/1387) - New Show file lines toggle. (hsnks100) [#1384](https://github.com/preservim/nerdtree/pull/1384) From 92528d68e62f0831a0a598158b3eebfd3ad13964 Mon Sep 17 00:00:00 2001 From: Mitchell Sibal <20745877+msibal6@users.noreply.github.com> Date: Tue, 12 Dec 2023 07:08:04 -0800 Subject: [PATCH 4/7] revert CHANGELOG.md --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee00fc1f..5381e59f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,6 @@ - Pull Request Title n (PR Author) [PR Number](Link to PR) --> #### 7.0 -- **.2**: Add split explorer capability to NERDTREE (msibal6) [#1389](https://github.com/preservim/nerdtree/pull/1389) - **.1**: - Fix NERDTreeFind to handle directory case sensitivity. (dangibson) [#1387](https://github.com/preservim/nerdtree/pull/1387) - New Show file lines toggle. (hsnks100) [#1384](https://github.com/preservim/nerdtree/pull/1384) From 5b36ce5d556a7ca376643b7b03f34b5e3e59514e Mon Sep 17 00:00:00 2001 From: Mitchell Sibal <20745877+msibal6@users.noreply.github.com> Date: Tue, 12 Dec 2023 09:42:37 -0800 Subject: [PATCH 5/7] CreateExplorerTree matches :Explore command --- autoload/nerdtree/ui_glue.vim | 2 +- lib/nerdtree/creator.vim | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/autoload/nerdtree/ui_glue.vim b/autoload/nerdtree/ui_glue.vim index 4d6a88b3..548cd250 100644 --- a/autoload/nerdtree/ui_glue.vim +++ b/autoload/nerdtree/ui_glue.vim @@ -642,7 +642,7 @@ endfunction function! nerdtree#ui_glue#setupCommands() abort command! -n=? -complete=dir -bar NERDTree :call g:NERDTreeCreator.CreateTabTree('') command! -n=? -complete=dir -bar NERDTreeToggle :call g:NERDTreeCreator.ToggleTabTree('') - command! -n=? -complete=dir -bar NERDTreeExplorer :call g:NERDTreeCreator.CreateWindowTree('') + command! -n=? -complete=dir -bar NERDTreeExplorer :call g:NERDTreeCreator.CreateExplorerTree('') command! -n=0 -bar NERDTreeClose :call g:NERDTree.Close() command! -n=1 -complete=customlist,nerdtree#completeBookmarks -bar NERDTreeFromBookmark call g:NERDTreeCreator.CreateTabTree('') command! -n=0 -bar NERDTreeMirror call g:NERDTreeCreator.CreateMirror() diff --git a/lib/nerdtree/creator.vim b/lib/nerdtree/creator.vim index 4dd7a310..bd918590 100644 --- a/lib/nerdtree/creator.vim +++ b/lib/nerdtree/creator.vim @@ -38,6 +38,17 @@ function! s:Creator.BufNamePrefix() return 'NERD_tree_' endfunction +" FUNCTION: s:Creator.CreateExplorerTree(dir) {{{1 +function! s:Creator.CreateExplorerTree(dir) + let creator = s:Creator.New() + if getbufinfo('%')[0].changed + let l:splitLocation = g:NERDTreeWinPos ==# 'left' || g:NERDTreeWinPos ==# 'top' ? 'topleft ' : 'botright ' + let l:splitDirection = g:NERDTreeWinPos ==# 'left' || g:NERDTreeWinPos ==# 'right' ? 'vertical' : '' + endif + silent! execute l:splitLocation . l:splitDirection . ' new' + call creator.createWindowTree(a:dir) +endfunction + " FUNCTION: s:Creator.CreateTabTree(a:name) {{{1 function! s:Creator.CreateTabTree(name) let creator = s:Creator.New() From 035e5d6c57988b37bc480cb4ff3cb8c95c1820ee Mon Sep 17 00:00:00 2001 From: Mitchell Sibal <20745877+msibal6@users.noreply.github.com> Date: Tue, 12 Dec 2023 10:01:04 -0800 Subject: [PATCH 6/7] prevent empty split when calling NERDTreeExplorer with invalid arg from modified buffer --- lib/nerdtree/creator.vim | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/nerdtree/creator.vim b/lib/nerdtree/creator.vim index bd918590..d4e27fd8 100644 --- a/lib/nerdtree/creator.vim +++ b/lib/nerdtree/creator.vim @@ -40,6 +40,13 @@ endfunction " FUNCTION: s:Creator.CreateExplorerTree(dir) {{{1 function! s:Creator.CreateExplorerTree(dir) + try + let path = g:NERDTreePath.New(a:dir) + catch /^NERDTree.InvalidArgumentsError/ + call nerdtree#echo('Invalid directory name:' . a:dir) + return + endtry + let creator = s:Creator.New() if getbufinfo('%')[0].changed let l:splitLocation = g:NERDTreeWinPos ==# 'left' || g:NERDTreeWinPos ==# 'top' ? 'topleft ' : 'botright ' From d6fc8410378b25d08dd866759d4ab3a5abba33b4 Mon Sep 17 00:00:00 2001 From: Mitchell Sibal <20745877+msibal6@users.noreply.github.com> Date: Thu, 21 Dec 2023 09:19:38 -0800 Subject: [PATCH 7/7] NERDTreeExplore/CreateExploreTree checks for hidden and autowriteall settings --- autoload/nerdtree/ui_glue.vim | 2 +- lib/nerdtree/creator.vim | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/autoload/nerdtree/ui_glue.vim b/autoload/nerdtree/ui_glue.vim index 548cd250..1610d098 100644 --- a/autoload/nerdtree/ui_glue.vim +++ b/autoload/nerdtree/ui_glue.vim @@ -642,7 +642,7 @@ endfunction function! nerdtree#ui_glue#setupCommands() abort command! -n=? -complete=dir -bar NERDTree :call g:NERDTreeCreator.CreateTabTree('') command! -n=? -complete=dir -bar NERDTreeToggle :call g:NERDTreeCreator.ToggleTabTree('') - command! -n=? -complete=dir -bar NERDTreeExplorer :call g:NERDTreeCreator.CreateExplorerTree('') + command! -n=? -complete=dir -bar NERDTreeExplore :call g:NERDTreeCreator.CreateExploreTree('') command! -n=0 -bar NERDTreeClose :call g:NERDTree.Close() command! -n=1 -complete=customlist,nerdtree#completeBookmarks -bar NERDTreeFromBookmark call g:NERDTreeCreator.CreateTabTree('') command! -n=0 -bar NERDTreeMirror call g:NERDTreeCreator.CreateMirror() diff --git a/lib/nerdtree/creator.vim b/lib/nerdtree/creator.vim index d4e27fd8..7e1940b8 100644 --- a/lib/nerdtree/creator.vim +++ b/lib/nerdtree/creator.vim @@ -38,8 +38,8 @@ function! s:Creator.BufNamePrefix() return 'NERD_tree_' endfunction -" FUNCTION: s:Creator.CreateExplorerTree(dir) {{{1 -function! s:Creator.CreateExplorerTree(dir) +" FUNCTION: s:Creator.CreateExploreTree(dir) {{{1 +function! s:Creator.CreateExploreTree(dir) try let path = g:NERDTreePath.New(a:dir) catch /^NERDTree.InvalidArgumentsError/ @@ -48,12 +48,17 @@ function! s:Creator.CreateExplorerTree(dir) endtry let creator = s:Creator.New() - if getbufinfo('%')[0].changed + if getbufinfo('%')[0].changed && !&hidden && !&autowriteall let l:splitLocation = g:NERDTreeWinPos ==# 'left' || g:NERDTreeWinPos ==# 'top' ? 'topleft ' : 'botright ' let l:splitDirection = g:NERDTreeWinPos ==# 'left' || g:NERDTreeWinPos ==# 'right' ? 'vertical' : '' + silent! execute l:splitLocation . l:splitDirection . ' new' + else + silent! execute 'enew' endif - silent! execute l:splitLocation . l:splitDirection . ' new' + call creator.createWindowTree(a:dir) + "we want windowTree buffer to disappear after moving to any other buffer + setlocal bufhidden=wipe endfunction " FUNCTION: s:Creator.CreateTabTree(a:name) {{{1