blob: e9704f43bc365f049a044497bc4c31abf65e1632 (
plain)
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 | "plugin from http://got-ravings.blogspot.com/2010/07/vim-pr0n-sample-nerd-tree-plugins.html
"guard against sourcing the script twice
if exists("g:loaded_nerdtree_start_shell_mapping")
    finish
endif
let g:loaded_nerdtree_start_shell_mapping = 1
"bind 'S' to NERDTreeStartShell()
call NERDTreeAddKeyMap({
    \ 'key': 'S',
    \ 'callback': 'NERDTreeStartShell',
    \ 'quickhelpText': 'start a :shell in this dir' })
"change to the dir of the current node and start a :shell
function! NERDTreeStartShell()
    "grab the currently selected dir node (returns 
    "the parent dir if a file is selected)
    let n = g:NERDTreeDirNode.GetSelected()
    "save the cwd so we can restore it after the :shell exits
    let oldCWD = getcwd()
    try
        ":lcd to to the selected dir and :shell out
        exec 'lcd ' . n.path.str({'format': 'Cd'})
        redraw!
        shell
    "make sure we restore the cwd to its original state
    finally
        exec 'lcd ' . oldCWD
    endtry
endfunction
 |