From 4ac07f52a312a24d82deba715ee489e6c5b00259 Mon Sep 17 00:00:00 2001 From: Phil Runninger Date: Wed, 10 Jul 2019 09:45:58 -0400 Subject: [PATCH] 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. --- CHANGELOG.md | 1 + autoload/nerdtree.vim | 20 ++++++++++++++++++-- autoload/nerdtree/ui_glue.vim | 6 +++--- lib/nerdtree/menu_controller.vim | 4 ++-- nerdtree_plugin/fs_menu.vim | 10 +++++----- 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58a23bf..232fe7b 100644 --- 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 index 20ef1be..d441859 100644 --- 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 index 045e8ad..76572fd 100644 --- 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 index 1182c53..f027249 100644 --- 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 index 5c37e4d..4ba653f 100644 --- 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