diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim index 048303f..8d3bdc7 100644 --- a/plugin/NERD_tree.vim +++ b/plugin/NERD_tree.vim @@ -180,6 +180,15 @@ function! s:CompareNodes(n1, n2) return a:n1.path.CompareTo(a:n2.path) endfunction +"FUNCTION: oTreeFileNode.ClearMarks() {{{3 +function! s:oTreeFileNode.ClearMarks() dict + let marks = s:GetMarks() + for i in keys(marks) + if marks[i].Equals(self.path) + call remove(marks, i) + end + endfor +endfunction "FUNCTION: oTreeFileNode.Copy(dest) {{{3 function! s:oTreeFileNode.Copy(dest) dict call self.path.Copy(a:dest) @@ -2528,7 +2537,7 @@ function! s:BindMappings() command! -buffer -nargs=1 Mark :call MarkNode('') command! -buffer -complete=customlist,s:FindMarks -nargs=1 RecallMark :call RecallMark('') command! -buffer -complete=customlist,s:FindMarks -nargs=1 OpenMark :call OpenMark('') - command! -buffer -complete=customlist,s:FindMarks -nargs=+ ClearMarks call ClearMarks('') + command! -buffer -complete=customlist,s:FindMarks -nargs=* ClearMarks call ClearMarks('') command! -buffer -complete=customlist,s:FindMarks -nargs=+ MarkToRoot call MarkToRoot('') command! -buffer -nargs=0 ClearAllMarks call ClearAllMarks() call RenderView() command! -buffer -nargs=0 ReadMarks call ReadMarks() call RenderView() @@ -2596,11 +2605,18 @@ endfunction " FUNCTION: s:ClearMarks(marks) {{{2 function! s:ClearMarks(marks) let marks = s:GetMarks() - for name in split(a:marks, ' ') - if count(keys(marks), name) - call remove(marks, name) + if a:marks == '' + let currentNode = s:GetSelectedNode() + if currentNode != {} + call currentNode.ClearMarks() endif - endfor + else + for name in split(a:marks, ' ') + if count(keys(marks), name) + call remove(marks, name) + endif + endfor + endif call s:RenderView() endfunction " FUNCTION: s:CloseChildren() {{{2