nerdtree

A tree explorer plugin for vim.
Index Commits Files Refs
commit 3a9d533f3de86a43b69f6c47d3394c0d866fdb08
parent d3f9fc44caaa5688b65ccc508af6fac7defa120f
Author: Phil Runninger <PhilRunninger@users.noreply.github.com>
Date:   Wed, 10 Feb 2021 22:20:04 -0500

Restore the default behavior of the <CR> key. (#1221)

* Restore <CR>'s default behavior to be the same as o's.

* Remove the dictionary validation, and simplify initCustomOpenArgs().

There was a bug in the validation logic that caused a valid integer
value of 'keepopen' to always be overwritten with the defaultOpenArgs'
value. It was always comparing its type to the type of a string.

I fixed this by removing all the type validation, and wrapping the code
with a try-catch block. If NERDTreeCustomOpenArgs is not a dictionary,
an error message will print and the defaults will be used instead.

* Add fold markers to new functions.

* Update version number in change log.
Diffstat:
MCHANGELOG.md | 1+
Mautoload/nerdtree.vim | 4++--
Mautoload/nerdtree/ui_glue.vim | 44++++++++++----------------------------------
3 files changed, 13 insertions(+), 36 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
@@ -5,6 +5,7 @@
         - **.PATCH**: Pull Request Title (PR Author) [PR Number](Link to PR)
 -->
 #### 6.10
+- **.6**: Restore the default behavior of the <CR> key. (PhilRunninger) [#1221](https://github.com/preservim/nerdtree/pull/1221)
 - **.5**: Fix `{'keepopen':0}` in NERDTreeCustomOpenArgs (PhilRunninger) [#1217](https://github.com/preservim/nerdtree/pull/1217)
 - **.4**: Removed directory separator from sort key (Daniel E) [#1219](https://github.com/preservim/nerdtree/pull/1219)
 - **.3**: Add new FAQ and answer: How to prevent buffers replacing NERDTree. (PhilRunninger) [#1215](https://github.com/preservim/nerdtree/pull/1215)
diff --git a/autoload/nerdtree.vim b/autoload/nerdtree.vim
@@ -30,12 +30,12 @@ endfunction
 " SECTION: General Functions {{{1
 "============================================================
 
-" FUNCTION: nerdtree#closeTreeOnOpen()
+" FUNCTION: nerdtree#closeTreeOnOpen() {{{2
 function! nerdtree#closeTreeOnOpen() abort
     return g:NERDTreeQuitOnOpen == 1 || g:NERDTreeQuitOnOpen == 3
 endfunction
 
-" FUNCTION: nerdtree#closeBookmarksOnOpen()
+" FUNCTION: nerdtree#closeBookmarksOnOpen() {{{2
 function! nerdtree#closeBookmarksOnOpen() abort
     return g:NERDTreeQuitOnOpen == 2 || g:NERDTreeQuitOnOpen == 3
 endfunction
diff --git a/autoload/nerdtree/ui_glue.vim b/autoload/nerdtree/ui_glue.vim
@@ -109,40 +109,16 @@ endfunction
 
 "FUNCTION: s:initCustomOpenArgs() {{{1
 function! s:initCustomOpenArgs() abort
-    let l:defaultOpenArgs = {'file': {'reuse': 'all', 'where': 'p'}, 'dir': {}}
-    let l:customOpenArgs = get(g:, 'NERDTreeCustomOpenArgs', {})
-
-    if !s:validateType(l:customOpenArgs, type({})) || empty(l:customOpenArgs)
-        let g:NERDTreeCustomOpenArgs = l:customOpenArgs
-        return l:defaultOpenArgs
-    endif
-
-    for l:typeKey in keys(l:defaultOpenArgs)
-        if !s:validateType(get(l:customOpenArgs, l:typeKey, {}), type({}))
-              \ || !has_key(l:customOpenArgs, l:typeKey)
-            let l:customOpenArgs[l:typeKey] = l:defaultOpenArgs[l:typeKey]
-            continue
-        endif
-
-        for l:optionName in keys(l:defaultOpenArgs[l:typeKey])
-            if s:validateType(get(l:customOpenArgs[l:typeKey], l:optionName, v:null), type(''))
-                continue
-            endif
-            let l:customOpenArgs[l:typeKey][l:optionName] = l:defaultOpenArgs[l:typeKey][l:optionName]
-        endfor
-    endfor
-
-    let g:NERDTreeCustomOpenArgs = l:customOpenArgs
-
-    return extend(l:customOpenArgs, l:defaultOpenArgs, 'keep')
-endfunction
-
-function! s:validateType(variable, type) abort
-    if type(a:variable) == a:type
-        return v:true
-    endif
-
-    return v:false
+    let l:defaultOpenArgs = {'file': {'reuse': 'all', 'where': 'p', 'keepopen':!nerdtree#closeTreeOnOpen()}, 'dir': {}}
+    try
+        let g:NERDTreeCustomOpenArgs = get(g:, 'NERDTreeCustomOpenArgs', {})
+        call  extend(g:NERDTreeCustomOpenArgs, l:defaultOpenArgs, 'keep')
+    catch /^Vim(\a\+):E712:/
+        call nerdtree#echoWarning('g:NERDTreeCustomOpenArgs is not set properly. Using default value.')
+        let g:NERDTreeCustomOpenArgs = l:defaultOpenArgs
+    finally
+        return g:NERDTreeCustomOpenArgs
+    endtry
 endfunction
 
 "FUNCTION: s:activateAll() {{{1