nerdtree

A tree explorer plugin for vim.
Index Commits Files Refs
commit 1f2e28d4766e661435e423f6dbae62b61a69b7ce
parent 6895e5259eea5af37556139dd9f7a974e5001041
Author: Ali Rezvani <3788964+rzvxa@users.noreply.github.com>
Date:   Sun,  3 Sep 2023 07:15:35 +0330

Add horizontal position options to `g:NERDTreeWinPos` (#1363)


Diffstat:
Mdoc/NERDTree.txt | 9++++++++-
Mlib/nerdtree/creator.vim | 9+++++----
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/doc/NERDTree.txt b/doc/NERDTree.txt
@@ -1128,7 +1128,7 @@ setting is used.
 
 ------------------------------------------------------------------------------
                                                                 *NERDTreeWinPos*
-Values: "left" or "right"
+Values: "left", "right", "top" or "bottom"
 Default: "left".
 
 This setting is used to determine where NERDTree window is placed on the
@@ -1138,6 +1138,13 @@ This setting makes it possible to use two different explorer plugins
 simultaneously. For example, you could have the taglist plugin on the left of
 the window and the NERDTree on the right.
 
+When setting this variable to "top" or "bottom" make sure to also change the
+|NERDTreeWinSize| to a more reasonable size.
+
+For example:
+>
+    let g:NERDTreeWinSize = 15
+<
 ------------------------------------------------------------------------------
                                                                *NERDTreeWinSize*
 Values: a positive integer.
diff --git a/lib/nerdtree/creator.vim b/lib/nerdtree/creator.vim
@@ -182,16 +182,17 @@ endfunction
 " Initialize the NERDTree window.  Open the window, size it properly, set all
 " local options, etc.
 function! s:Creator._createTreeWin()
-    let l:splitLocation = g:NERDTreeWinPos ==# 'left' ? 'topleft ' : 'botright '
+    let l:splitLocation = g:NERDTreeWinPos ==# 'left' || g:NERDTreeWinPos ==# 'top' ? 'topleft ' : 'botright '
+    let l:splitDirection = g:NERDTreeWinPos ==# 'left' || g:NERDTreeWinPos ==# 'right' ? 'vertical' : ''
     let l:splitSize = g:NERDTreeWinSize
 
     if !g:NERDTree.ExistsForTab()
         let t:NERDTreeBufName = self._nextBufferName()
-        silent! execute l:splitLocation . 'vertical ' . l:splitSize . ' new'
+        silent! execute l:splitLocation . l:splitDirection . ' ' . l:splitSize . ' new'
         silent! execute 'edit ' . t:NERDTreeBufName
-        silent! execute 'vertical resize '. l:splitSize
+        silent! execute l:splitDirection . ' resize '. l:splitSize
     else
-        silent! execute l:splitLocation . 'vertical ' . l:splitSize . ' split'
+        silent! execute l:splitLocation . l:splitDirection . ' ' . l:splitSize . ' split'
         silent! execute 'buffer ' . t:NERDTreeBufName
     endif