mirror of
https://github.com/preservim/nerdtree.git
synced 2025-11-08 11:23:48 -05:00
Refactor sort comparison functions, removing redundancy (#1166)
* Add a function to compare path objects. * Remove redundant node comparison function, and rename the ones left. * Remove the compareTo function in the Path object. Use nerdtree#compareNodePaths(p1,p2) instead. There was no need for two comparison functions that do the same thing. They were a little different in their details, but that shouldn't be the case. Having only one such function makes better sense and is easier to maintain. * Update version number in change log.
This commit is contained in:
@@ -99,50 +99,6 @@ function! s:Path.changeToDir()
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" FUNCTION: Path.compareTo() {{{1
|
||||
"
|
||||
" Compares this Path to the given path and returns 0 if they are equal, -1 if
|
||||
" this Path is 'less than' the given path, or 1 if it is 'greater'.
|
||||
"
|
||||
" Args:
|
||||
" path: the path object to compare this to
|
||||
"
|
||||
" Return:
|
||||
" 1, -1 or 0
|
||||
function! s:Path.compareTo(path)
|
||||
let thisPath = self.getLastPathComponent(1)
|
||||
let thatPath = a:path.getLastPathComponent(1)
|
||||
|
||||
"if the paths are the same then clearly we return 0
|
||||
if thisPath ==# thatPath
|
||||
return 0
|
||||
endif
|
||||
|
||||
let thisSS = self.getSortOrderIndex()
|
||||
let thatSS = a:path.getSortOrderIndex()
|
||||
|
||||
"compare the sort sequences, if they are different then the return
|
||||
"value is easy
|
||||
if thisSS < thatSS
|
||||
return -1
|
||||
elseif thisSS > thatSS
|
||||
return 1
|
||||
else
|
||||
if !g:NERDTreeSortHiddenFirst
|
||||
let thisPath = substitute(thisPath, '^[._]', '', '')
|
||||
let thatPath = substitute(thatPath, '^[._]', '', '')
|
||||
endif
|
||||
"if the sort sequences are the same then compare the paths
|
||||
"alphabetically
|
||||
let pathCompare = g:NERDTreeCaseSensitiveSort ? thisPath <# thatPath : thisPath <? thatPath
|
||||
if pathCompare
|
||||
return -1
|
||||
else
|
||||
return 1
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" FUNCTION: Path.Create(fullpath) {{{1
|
||||
"
|
||||
" Factory method.
|
||||
|
||||
@@ -236,7 +236,7 @@ function! s:TreeDirNode.getChildIndex(path)
|
||||
let z = self.getChildCount()
|
||||
while a < z
|
||||
let mid = (a+z)/2
|
||||
let diff = a:path.compareTo(self.children[mid].path)
|
||||
let diff = nerdtree#compareNodePaths(a:path, self.children[mid].path)
|
||||
|
||||
if diff ==# -1
|
||||
let z = mid
|
||||
@@ -666,7 +666,7 @@ function! s:TreeDirNode.sortChildren()
|
||||
if count(g:NERDTreeSortOrder, '*') < 1
|
||||
call add(g:NERDTreeSortOrder, '*')
|
||||
endif
|
||||
let CompareFunc = function('nerdtree#compareNodesBySortKey')
|
||||
let CompareFunc = function('nerdtree#compareNodes')
|
||||
call sort(self.children, CompareFunc)
|
||||
let g:NERDTreeOldSortOrder = g:NERDTreeSortOrder
|
||||
endfunction
|
||||
|
||||
Reference in New Issue
Block a user