diff --git a/lib/nerdtree/path.vim b/lib/nerdtree/path.vim index 2d8de23..2af280f 100644 --- 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 index 03c3545..17d9c7f 100644 --- 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 index 35b47c3..eb02eaa 100644 --- 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")