]> git.r.bdr.sh - rbdr/dotfiles/blame - vim/nerdtree_plugin/exec_menuitem.vim
Move EasyMotion and LargeFile to pathogen bundle
[rbdr/dotfiles] / vim / nerdtree_plugin / exec_menuitem.vim
CommitLineData
0d23b6e5
BB
1" ============================================================================
2" File: exec_menuitem.vim
3" Description: plugin for NERD Tree that provides an execute file menu item
4" Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
5" Last Change: 22 July, 2009
6" License: This program is free software. It comes without any warranty,
7" to the extent permitted by applicable law. You can redistribute
8" it and/or modify it under the terms of the Do What The Fuck You
9" Want To Public License, Version 2, as published by Sam Hocevar.
10" See http://sam.zoy.org/wtfpl/COPYING for more details.
11"
12" ============================================================================
13if exists("g:loaded_nerdtree_exec_menuitem")
14 finish
15endif
16let g:loaded_nerdtree_exec_menuitem = 1
17
18call NERDTreeAddMenuItem({
19 \ 'text': '(!)Execute file',
20 \ 'shortcut': '!',
21 \ 'callback': 'NERDTreeExecFile',
22 \ 'isActiveCallback': 'NERDTreeExecFileActive' })
23
24function! NERDTreeExecFileActive()
25 let node = g:NERDTreeFileNode.GetSelected()
26 return !node.path.isDirectory && node.path.isExecutable
27endfunction
28
29function! NERDTreeExecFile()
30 let treenode = g:NERDTreeFileNode.GetSelected()
31 echo "==========================================================\n"
32 echo "Complete the command to execute (add arguments etc):\n"
33 let cmd = treenode.path.str({'escape': 1})
34 let cmd = input(':!', cmd . ' ')
35
36 if cmd != ''
37 exec ':!' . cmd
38 else
39 echo "Aborted"
40 endif
41endfunction