nerdtree

A tree explorer plugin for vim.
Index Commits Files Refs
commit 4ac07f52a312a24d82deba715ee489e6c5b00259
parent 2f0d48d632dc303095084b382cb665ae57ad2e63
Author: Phil Runninger <PhilRunninger@users.noreply.github.com>
Date:   Wed, 10 Jul 2019 09:45:58 -0400

Use :mode only in neovim. MacVim still needs to use :redraw! (#1019)

* Use :mode only in neovim. MacVim still needs to use :redraw!

* Make nerdtree#redraw do both redraw and redraw! based on a parameter.

* Make bang a required parameter.

* Replace all redraw statments with call nerdtree#redraw function calls.

* Update version in change log.

Diffstat:
MCHANGELOG.md | 1+
Mautoload/nerdtree.vim | 20++++++++++++++++++--
Mautoload/nerdtree/ui_glue.vim | 6+++---
Mlib/nerdtree/menu_controller.vim | 4++--
Mnerdtree_plugin/fs_menu.vim | 10+++++-----
5 files changed, 29 insertions(+), 12 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
@@ -1,6 +1,7 @@
 # Change Log
 
 #### 5.2...
+- **.7**: Use :mode only in neovim. MacVim still needs to use :redraw! [#1019](https://github.com/scrooloose/nerdtree/pull/1019)
 - **.6**: In CHANGELOG.md and PR template, make reference to PR a true HTML link. [#1017](https://github.com/scrooloose/nerdtree/pull/1017)
 - **.5**: Use `:mode` instead of `:redraw!` when updating menu. (PhilRunninger) [#1016](https://github.com/scrooloose/nerdtree/pull/1016)
 - **.4**: When searching for root line num, stop at end of file. (PhilRunninger) [#1015](https://github.com/scrooloose/nerdtree/pull/1015)
diff --git a/autoload/nerdtree.vim b/autoload/nerdtree.vim
@@ -22,8 +22,24 @@ endfunction
 " SECTION: General Functions {{{1
 "============================================================
 
-function! nerdtree#slash()
+"FUNCTION: nerdtree#redraw(bang)
+" Redraws the screen (Neovim uses the mode statement). If bang is TRUE, use
+" redraw! instead of redraw.
+function! nerdtree#redraw(bang)
+    if has('nvim')
+        mode
+    else
+        if a:bang
+            redraw!
+        else
+            redraw
+        endif
+    endif
+endfunction
 
+"FUNCTION: nerdtree#slash()
+" Returns the directory separator based on OS and &shellslash
+function! nerdtree#slash()
     if nerdtree#runningWindows()
         if exists('+shellslash') && &shellslash
             return '/'
@@ -216,7 +232,7 @@ endfunction
 "Args:
 "msg: the message to echo
 function! nerdtree#echo(msg)
-    redraw
+    call nerdtree#redraw(0)
     echomsg empty(a:msg) ? "" : ("NERDTree: " . a:msg)
 endfunction
 
diff --git a/autoload/nerdtree/ui_glue.vim b/autoload/nerdtree/ui_glue.vim
@@ -254,7 +254,7 @@ function! s:deleteBookmark(bookmark)
 
     let l:choices = "&Yes\n&No"
 
-    echo | redraw
+    echo | call nerdtree#redraw(0)
     let l:selection = confirm(l:message, l:choices, 1, 'Warning')
 
     if l:selection != 1
@@ -266,7 +266,7 @@ function! s:deleteBookmark(bookmark)
         call a:bookmark.delete()
         silent call b:NERDTree.root.refresh()
         call b:NERDTree.render()
-        echo | redraw
+        echo | call nerdtree#redraw(0)
     catch /^NERDTree/
         call nerdtree#echoWarning('could not remove bookmark')
     endtry
@@ -577,7 +577,7 @@ function! s:refreshRoot()
     call nerdtree#exec(g:NERDTree.GetWinNum() . "wincmd w")
     call b:NERDTree.root.refresh()
     call b:NERDTree.render()
-    redraw
+    call nerdtree#redraw(0)
     call nerdtree#exec(l:curWin . "wincmd w")
     call nerdtree#echo("")
 endfunction
diff --git a/lib/nerdtree/menu_controller.vim b/lib/nerdtree/menu_controller.vim
@@ -31,7 +31,7 @@ function! s:MenuController.showMenu()
         let l:done = 0
 
         while !l:done
-            mode
+            call nerdtree#redraw(1)
             call self._echoPrompt()
 
             let l:key = nr2char(getchar())
@@ -42,7 +42,7 @@ function! s:MenuController.showMenu()
 
         " Redraw when "Ctrl-C" or "Esc" is received.
         if !l:done || self.selection == -1
-            redraw!
+            call nerdtree#redraw(1)
         endif
     endtry
 
diff --git a/nerdtree_plugin/fs_menu.vim b/nerdtree_plugin/fs_menu.vim
@@ -78,7 +78,7 @@ function! s:inputPrompt(action)
     endif
 
     if g:NERDTreeMenuController.isMinimal()
-        redraw! " Clear the menu
+        call nerdtree#redraw(1) " Clear the menu
         return minimal . " "
     else
         let divider = "=========================================================="
@@ -185,7 +185,7 @@ function! NERDTreeAddNode()
             call newTreeNode.putCursorHere(1, 0)
         endif
 
-        redraw!
+        call nerdtree#redraw(1)
     catch /^NERDTree/
         call nerdtree#echoWarning("Node Not Created.")
     endtry
@@ -234,7 +234,7 @@ function! NERDTreeMoveNode()
 
         call curNode.putCursorHere(1, 0)
 
-        redraw!
+        call nerdtree#redraw(1)
     catch /^NERDTree/
         call nerdtree#echoWarning("Node Not Renamed.")
     endtry
@@ -272,7 +272,7 @@ function! NERDTreeDeleteNode()
                 call s:promptToDelBuffer(bufnum, prompt)
             endif
 
-            redraw!
+            call nerdtree#redraw(1)
         catch /^NERDTree/
             call nerdtree#echoWarning("Could not remove node")
         endtry
@@ -362,7 +362,7 @@ function! NERDTreeCopyNode()
         call nerdtree#echo("Copy aborted.")
     endif
     let &shellslash = l:shellslash
-    redraw!
+    call nerdtree#redraw(1)
 endfunction
 
 " FUNCTION: NERDTreeCopyPath() {{{1