commit a053925279b2b7a060a7714a7d98a8c5576878bf
parent 703e1ef4fe8350afbc61ce8271f72cef2d5c363a
Author: Phil Runninger (mac) <prunninger@vhtcx.com>
Date: Sun, 1 Jul 2018 19:57:02 -0400
Recalculate the node's sortkey every time.
The cached _sortkey wasn't being recalculated after changing the
NERDTreeSortOrder, resulting in incorrect sort orders.
Diffstat:
3 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/lib/nerdtree/path.vim b/lib/nerdtree/path.vim
@@ -7,10 +7,6 @@
" ============================================================================
-" This constant is used throughout this script for sorting purposes.
-let s:NERDTreeSortStarIndex = index(g:NERDTreeSortOrder, '*')
-lockvar s:NERDTreeSortStarIndex
-
let s:Path = {}
let g:NERDTreePath = s:Path
@@ -374,7 +370,8 @@ function! s:Path.getSortOrderIndex()
endif
let i = i + 1
endwhile
- return s:NERDTreeSortStarIndex
+
+ return index(g:NERDTreeSortOrder, '*')
endfunction
" FUNCTION: Path._splitChunks(path) {{{1
@@ -395,7 +392,6 @@ endfunction
" FUNCTION: Path.getSortKey() {{{1
" returns a key used in compare function for sorting
function! s:Path.getSortKey()
- if !exists("self._sortKey")
let path = self.getLastPathComponent(1)
if !g:NERDTreeSortHiddenFirst
let path = substitute(path, '^[._]', '', '')
@@ -408,7 +404,6 @@ function! s:Path.getSortKey()
else
let self._sortKey = [self.getSortOrderIndex()] + self._splitChunks(path)
endif
- endif
return self._sortKey
endfunction
diff --git a/lib/nerdtree/tree_dir_node.vim b/lib/nerdtree/tree_dir_node.vim
@@ -607,6 +607,7 @@ endfunction
" FUNCTION: TreeDirNode.sortChildren() {{{1
" Sort "self.children" by alphabetical order and directory priority.
function! s:TreeDirNode.sortChildren()
+ call AddDefaultGroupToSortOrder()
let CompareFunc = function("nerdtree#compareNodesBySortKey")
call sort(self.children, CompareFunc)
endfunction
diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim
@@ -24,6 +24,15 @@ let loaded_nerd_tree = 1
let s:old_cpo = &cpo
set cpo&vim
+"Function: AddDefaultGroupToSortOrder() function {{{2
+"This function adds the default grouping '*' to the sort sequence if it's not
+"already in the list.
+function! AddDefaultGroupToSortOrder()
+ if count(g:NERDTreeSortOrder, '*') < 1
+ call add(g:NERDTreeSortOrder, '*')
+ endif
+endfunction
+
"Function: s:initVariable() function {{{2
"This function is used to initialise a given variable to a given value. The
"variable is only initialised if it does not exist prior
@@ -82,10 +91,7 @@ call s:initVariable("g:NERDTreeCascadeSingleChildDir", 1)
if !exists("g:NERDTreeSortOrder")
let g:NERDTreeSortOrder = ['\/$', '*', '\.swp$', '\.bak$', '\~$']
else
- "if there isnt a * in the sort sequence then add one
- if count(g:NERDTreeSortOrder, '*') < 1
- call add(g:NERDTreeSortOrder, '*')
- endif
+ call AddDefaultGroupToSortOrder()
endif
call s:initVariable("g:NERDTreeGlyphReadOnly", "RO")