move the openFileNode() code into TreeFileNode

This commit is contained in:
Martin Grenfell 2009-01-06 20:40:15 +13:00
parent 99afbe9ec8
commit 7874b3c60e

View File

@ -685,6 +685,45 @@ function! s:TreeFileNode.New(path)
endif endif
endfunction endfunction
"FUNCTION: TreeFileNode.open() {{{3
"Open the file represented by the given node in the current window, splitting
"the window if needed
"
"ARGS:
"treenode: file node to open
function! s:TreeFileNode.open()
if b:NERDTreeType == "secondary"
exec 'edit ' . self.path.strForEditCmd()
return
endif
call s:putCursorInTreeWin()
"if the file is already open in this tab then just stick the cursor in it
let winnr = bufwinnr('^' . self.path.strForOS(0) . '$')
if winnr != -1
call s:exec(winnr . "wincmd w")
else
if !s:isWindowUsable(winnr("#")) && s:firstNormalWindow() == -1
call self.openSplit()
else
try
if !s:isWindowUsable(winnr("#"))
call s:exec(s:firstNormalWindow() . "wincmd w")
else
call s:exec('wincmd p')
endif
exec ("edit " . self.path.strForEditCmd())
catch /^Vim\%((\a\+)\)\=:E37/
call s:putCursorInTreeWin()
throw "NERDTree.FileAlreadyOpenAndModifiedError: ". self.path.str(0) ." is already open and modified."
catch /^Vim\%((\a\+)\)\=:/
echo v:exception
endtry
endif
endif
endfunction
"FUNCTION: TreeFileNode.openSplit() {{{3 "FUNCTION: TreeFileNode.openSplit() {{{3
"Open this node in a new window "Open this node in a new window
function! s:TreeFileNode.openSplit() function! s:TreeFileNode.openSplit()
@ -2579,51 +2618,12 @@ function! s:jumpToChild(direction)
endif endif
endif endif
call s:putCursorOnNode(targetNode, 1, 0) call targetNode.putCursorHere(1, 0)
call s:centerView() call s:centerView()
endfunction endfunction
"FUNCTION: s:openFileNode(treenode) {{{2
"Open the file represented by the given node in the current window, splitting
"the window if needed
"
"ARGS:
"treenode: file node to open
function! s:openFileNode(treenode)
if b:NERDTreeType == "secondary"
exec 'edit ' . a:treenode.path.strForEditCmd()
return
endif
call s:putCursorInTreeWin()
"if the file is already open in this tab then just stick the cursor in it
let winnr = bufwinnr('^' . a:treenode.path.strForOS(0) . '$')
if winnr != -1
call s:exec(winnr . "wincmd w")
else
if !s:isWindowUsable(winnr("#")) && s:firstNormalWindow() == -1
call a:treenode.openSplit()
else
try
if !s:isWindowUsable(winnr("#"))
call s:exec(s:firstNormalWindow() . "wincmd w")
else
call s:exec('wincmd p')
endif
exec ("edit " . a:treenode.path.strForEditCmd())
catch /^Vim\%((\a\+)\)\=:E37/
call s:putCursorInTreeWin()
call s:echo("Cannot open file, it is already open and modified")
catch /^Vim\%((\a\+)\)\=:/
echo v:exception
endtry
endif
endif
endfunction
"FUNCTION: s:promptToDelBuffer(bufnum, msg){{{2 "FUNCTION: s:promptToDelBuffer(bufnum, msg){{{2
"prints out the given msg and, if the user responds by pushing 'y' then the "prints out the given msg and, if the user responds by pushing 'y' then the
"buffer with the given bufnum is deleted "buffer with the given bufnum is deleted
@ -2954,7 +2954,7 @@ function! s:activateNode(forceKeepWindowOpen)
call s:renderView() call s:renderView()
call treenode.putCursorHere(0, 0) call treenode.putCursorHere(0, 0)
else else
call s:openFileNode(treenode) call treenode.open()
if !a:forceKeepWindowOpen if !a:forceKeepWindowOpen
call s:closeTreeIfQuitOnOpen() call s:closeTreeIfQuitOnOpen()
end end
@ -2966,7 +2966,7 @@ function! s:activateNode(forceKeepWindowOpen)
call bookmark.toRoot() call bookmark.toRoot()
else else
if bookmark.validate() if bookmark.validate()
call s:openFileNode(s:TreeFileNode.New(bookmark.path)) call (s:TreeFileNode.New(bookmark.path)).open()
endif endif
endif endif
endif endif
@ -3419,7 +3419,7 @@ function! s:openBookmark(name)
if targetNode.path.isDirectory if targetNode.path.isDirectory
call targetNode.openExplorer() call targetNode.openExplorer()
else else
call s:openFileNode(targetNode) call targetNode.open()
endif endif
endfunction endfunction
" FUNCTION: s:openEntrySplit(forceKeepWindowOpen) {{{2 " FUNCTION: s:openEntrySplit(forceKeepWindowOpen) {{{2