diff --git a/plugin/vimux.vim b/plugin/vimux.vim index 4765d65..5e79867 100644 --- a/plugin/vimux.vim +++ b/plugin/vimux.vim @@ -91,18 +91,26 @@ class TmuxSession end def inspect_runner - run("select-pane -t #{target(:pane => runner_pane)}") - run("copy-mode") + _run("select-pane -t #{target(:pane => runner_pane)}") + _run("copy-mode") + Vim.command("let g:_VimTmuxInspecting = 1") + end + + def stop_inspecting_runner + if Vim.evaluate('exists("g:_VimTmuxInspecting")') != 0 + _run("send-keys -t #{target(:pane => runner_pane)} q") + Vim.command("unlet g:_VimTmuxInspecting") + end end def current_panes - run('list-panes').split("\n").map do |line| + _run('list-panes').split("\n").map do |line| line.split(':').first end end def active_pane_id - run('list-panes').split("\n").map do |line| + _run('list-panes').split("\n").map do |line| return line.split[-2] if line =~ /\(active\)/ end end @@ -113,12 +121,12 @@ class TmuxSession def runner_pane if @runner_pane.nil? - run("split-window -p #{height}") + _run("split-window -p #{height}") @runner_pane = active_pane_id Vim.command("let g:_VimTmuxRunnerPane = '#{@runner_pane}'") end - run('list-panes').split("\n").map do |line| + _run('list-panes').split("\n").map do |line| return line.split(':').first if line =~ /#{@runner_pane}/ end @@ -128,30 +136,33 @@ class TmuxSession end def interrupt_runner - run("send-keys -t #{target(:pane => runner_pane)} ^c") + stop_inspecting_runner + _run("send-keys -t #{target(:pane => runner_pane)} ^c") end def run_shell_command(command) - send_command(command, target(:pane => runner_pane)) - move_up_pane + stop_inspecting_runner + _send_command(command, target(:pane => runner_pane)) + _move_up_pane end def close_other_panes - # if run("list-panes").split("\n").length > 1 - run("kill-pane -a") - # end + stop_inspecting_runner + if _run("list-panes").split("\n").length > 1 + _run("kill-pane -a") + end end - def move_up_pane - run("select-pane -t #{target}") + def _move_up_pane + _run("select-pane -t #{target}") end - def send_command(command, target) - run("send-keys -t #{target} '#{command.gsub("'", "\'")}'") - run("send-keys -t #{target} Enter") + def _send_command(command, target) + _run("send-keys -t #{target} '#{command.gsub("'", "\'")}'") + _run("send-keys -t #{target} Enter") end - def run(command) + def _run(command) `tmux #{command}` end end @@ -166,7 +177,7 @@ class CurrentTmuxSession < TmuxSession end def get_property(match, type) - run("list-#{type.to_s}").split("\n").each do |line| + _run("list-#{type.to_s}").split("\n").each do |line| return line.split(':').first if line =~ /\(#{match.to_s}\)/ end end