"" Line Feeder 3
"" by David B. Dahl
"" December 2010

"" Note: This is just a copy from configs repository.  Make changes there.

function! LineFeederNextLine()
  call system("tmux select-pane -D")
  call system("tmux send-keys " . shellescape(getline('.') . ""))
  call system("tmux select-pane -U")
  normal j
endfunction

function! LineFeederSetUp()
  let lastline = getline(line('$'))
  let cmd = substitute(lastline,'^\S*\s*LF\s*\(.*\)','\=submatch(1)',"")
  if cmd == lastline
    let ext = expand("%:e")
    if ext == "R"
      let cmd = "R"
    elseif ext == "rb"
      let cmd = "irb"
    elseif ext == "scala"
      let cmd = "scala"
    else
      let cmd = "bash"
    endif
  endif
  let cmd = input("Command to execute: ",cmd)
  if cmd != ""
    "call system("tmux set-option default-path " . shellescape(expand("%:p:h")))
    "call system("tmux split-window -d -p 34 " . shellescape("exec " . cmd))
    call system("tmux split-window -d -p 34")
    if cmd != "bash"
      call system("tmux select-pane -D")
      call system("tmux send-keys " . shellescape(cmd . ""))
      call system("tmux select-pane -U")
    endif
  endif
endfunction

nnoremap <silent> <C-k> :call LineFeederSetUp()<cr>
nnoremap <silent> <C-j> :call LineFeederNextLine()<cr>
nnoremap <silent> <C-h> :%call LineFeederNextLine()<cr>

