mirror of
https://github.com/preservim/nerdtree.git
synced 2024-10-19 14:10:33 +03:00
67 lines
2.4 KiB
VimL
67 lines
2.4 KiB
VimL
" ============================================================================
|
|
" File: fs_menu.vim
|
|
" Description: plugin for the NERD Tree that provides a file system menu
|
|
" Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
|
|
" Last Change: 17 July, 2009
|
|
" License: This program is free software. It comes without any warranty,
|
|
" to the extent permitted by applicable law. You can redistribute
|
|
" it and/or modify it under the terms of the Do What The Fuck You
|
|
" Want To Public License, Version 2, as published by Sam Hocevar.
|
|
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
|
"
|
|
" ============================================================================
|
|
if exists("g:loaded_nerdtree_cxx_class_menu")
|
|
finish
|
|
endif
|
|
let g:loaded_nerdtree_cxx_class_menu = 1
|
|
|
|
|
|
call NERDTreeAddMenuItem({'text': 'create C++ header/class (p)air', 'shortcut': 'p', 'callback': 'NERDTreeAddCxxClass'})
|
|
|
|
"FUNCTION: s:echo(msg){{{1
|
|
function! s:echo(msg)
|
|
redraw
|
|
echomsg "NERDTree: " . a:msg
|
|
endfunction
|
|
|
|
"FUNCTION: s:echoWarning(msg){{{1
|
|
function! s:echoWarning(msg)
|
|
echohl warningmsg
|
|
call s:echo(a:msg)
|
|
echohl normal
|
|
endfunction
|
|
|
|
"FUNCTION: NERDTreeAddNode(){{{1
|
|
function! NERDTreeAddCxxClass()
|
|
let curDirNode = g:NERDTreeDirNode.GetSelected()
|
|
|
|
let newNodeName = input("Create a C++ class\n".
|
|
\ "==========================================================\n".
|
|
\ "Create a new C++ .h/.cpp file pair with the given name\n" .
|
|
\ "", "", "file")
|
|
|
|
if newNodeName ==# ''
|
|
call s:echo("Node Creation Aborted.")
|
|
return
|
|
endif
|
|
|
|
try
|
|
let newPathPrefix = curDirNode.path.str() . g:NERDTreePath.Slash() . newNodeName
|
|
let newPathH = g:NERDTreePath.Create(newPathPrefix . ".h")
|
|
let newPathCpp = g:NERDTreePath.Create(newPathPrefix . ".cpp")
|
|
let parentNode = b:NERDTreeRoot.findNode(newPathH.getParent())
|
|
|
|
let newTreeNodeH = g:NERDTreeFileNode.New(newPathH)
|
|
let newTreeNodeCpp = g:NERDTreeFileNode.New(newPathCpp)
|
|
if parentNode.isOpen || !empty(parentNode.children)
|
|
call parentNode.addChild(newTreeNodeH, 1)
|
|
call parentNode.addChild(newTreeNodeCpp, 1)
|
|
call NERDTreeRender()
|
|
call newTreeNodeH.putCursorHere(1, 0)
|
|
endif
|
|
catch /^NERDTree/
|
|
call s:echoWarning("Node Not Created.")
|
|
endtry
|
|
endfunction
|
|
|