From 626531af5d41f38949fd80b11676c2060e133260 Mon Sep 17 00:00:00 2001 From: Chris Toomey Date: Wed, 5 Jun 2013 21:28:58 -0400 Subject: [PATCH] Strip whitespace when sending lines Closes #12 - Trim leading whitespace before sending --- plugin/vim-tmux-runner.vim | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/plugin/vim-tmux-runner.vim b/plugin/vim-tmux-runner.vim index 8d254d8..e60d55f 100644 --- a/plugin/vim-tmux-runner.vim +++ b/plugin/vim-tmux-runner.vim @@ -309,23 +309,25 @@ function! s:GetVisualSelection() let lines = getline(lnum1, lnum2) let lines[-1] = lines[-1][: col2 - 2] let lines[0] = lines[0][col1 - 1:] - return join(lines, "\n") + return lines endfunction function! s:SendLineToRunner() - let line = getline('.') + let line = [getline('.')] call s:SendTextToRunner(line) endfunction function! s:SendSelectedToRunner() - let selected_text = s:GetVisualSelection() - call s:SendTextToRunner(selected_text) + let lines = s:GetVisualSelection() + call s:SendTextToRunner(lines) endfunction -function! s:SendTextToRunner(text) - let escaped_text = substitute(a:text, "'", "'\\\\''", 'g') - call s:SendTmuxCommand(join(["set-buffer", "'" . escaped_text . "'"])) - let targeted_cmd = s:TargetedTmuxCommand("paste-buffer", s:runner_pane) +function! s:SendTextToRunner(lines) + let whitespace_stripped = map(a:lines, 'substitute(v:val,"^\\s*","","")') + let without_empty_lines = filter(whitespace_stripped, "!empty(v:val)") + let joined_lines = join(without_empty_lines, "\r") + let send_keys_cmd = s:TargetedTmuxCommand("send-keys", s:runner_pane) + let targeted_cmd = send_keys_cmd . ' ' . shellescape(joined_lines) call s:SendTmuxCommand(targeted_cmd) call s:SendEnterSequence() endfunction