mirror of
https://github.com/preservim/nerdtree.git
synced 2025-11-08 11:23:48 -05:00
New menu command: Run a system command in this directory. (#1214)
* New menu command: Run system command in this directory. * Echo the output from the system command. * Update version number in change log. * Address Vim linter message: change "\n" to nr2char(10) * Use single quoted strings. * Use system() instead of systemlist() for greater version compatibility. systemlist() was introduced sometime in Vim 8+, so I switched to system() for 7.4 compatibility.
This commit is contained in:
@@ -49,6 +49,10 @@ else
|
||||
call NERDTreeAddMenuItem({'text': '(l)ist the current node', 'shortcut': 'l', 'callback': 'NERDTreeListNodeWin32'})
|
||||
endif
|
||||
|
||||
if exists('*system')
|
||||
call NERDTreeAddMenuItem({'text': 'Run (s)ystem command in this directory', 'shortcut':'s', 'callback': 'NERDTreeSystemCommand'})
|
||||
endif
|
||||
|
||||
"FUNCTION: s:inputPrompt(action){{{1
|
||||
"returns the string that should be prompted to the user for the given action
|
||||
"
|
||||
@@ -460,4 +464,21 @@ function! NERDTreeExecuteFileWindows()
|
||||
call system('cmd.exe /c start "" ' . shellescape(l:node.path.str()))
|
||||
endfunction
|
||||
|
||||
" FUNCTION: NERDTreeSystemCommand() {{{1
|
||||
function! NERDTreeSystemCommand()
|
||||
let l:node = g:NERDTreeFileNode.GetSelected()
|
||||
|
||||
if empty(l:node)
|
||||
return
|
||||
endif
|
||||
|
||||
let l:cwd = getcwd()
|
||||
let l:directory = l:node.path.isDirectory ? l:node.path.str() : l:node.parent.path.str()
|
||||
execute 'cd '.l:directory
|
||||
|
||||
let l:nl = nr2char(10)
|
||||
echo l:nl . system(input(l:directory . (nerdtree#runningWindows() ? '> ' : ' $ ')))
|
||||
execute 'cd '.l:cwd
|
||||
endfunction
|
||||
|
||||
" vim: set sw=4 sts=4 et fdm=marker:
|
||||
|
||||
Reference in New Issue
Block a user