Add an option to save the full pane contents

By default only the visible pane area is captured and restored.
The @resurrect-pane-contents-area option lets the full pane area be
captured instead.
This commit is contained in:
quentin 2015-03-17 04:13:54 +01:00
parent b22b2a7203
commit 4f685d5c3d
2 changed files with 14 additions and 5 deletions

View File

@ -78,7 +78,8 @@ state_format() {
} }
dump_panes_raw() { dump_panes_raw() {
tmux list-panes -a -F "$(pane_format)" local format="${1:-$(pane_format)}"
tmux list-panes -a -F "$format"
} }
dump_windows_raw(){ dump_windows_raw(){
@ -110,7 +111,9 @@ pane_full_command() {
capture_pane_contents() { capture_pane_contents() {
local pane_id="$1" local pane_id="$1"
tmux capture-pane -ep -t "$pane_id" > "$(resurrect_pane_file "$pane_id")" local start_line="0"
[[ "$(get_tmux_option "$pane_contents_area_option" "visible")" == "full" ]] && start_line="-$2"
tmux capture-pane -ep -S "$start_line" -t "$pane_id" > "$(resurrect_pane_file "$pane_id")"
} }
save_shell_history() { save_shell_history() {
@ -207,9 +210,9 @@ dump_state() {
} }
dump_pane_contents() { dump_pane_contents() {
dump_panes | paste -d"$d" <(dump_panes) <(dump_panes_raw "#{history_size}") |
while IFS=$d read line_type session_name window_number window_name window_active window_flags pane_index dir pane_active pane_command full_command; do while IFS=$d read line_type session_name window_number window_name window_active window_flags pane_index dir pane_active pane_command full_command history_size; do
capture_pane_contents "$session_name:$window_number.$pane_index" capture_pane_contents "$session_name:$window_number.$pane_index" "$history_size"
done done
} }

View File

@ -29,7 +29,13 @@ inline_strategy_token="->"
save_command_strategy_option="@resurrect-save-command-strategy" save_command_strategy_option="@resurrect-save-command-strategy"
default_save_command_strategy="ps" default_save_command_strategy="ps"
# Pane contents capture options.
# @resurrect-pane-contents-area option can be:
# 'visible' - capture only the visible pane area (default)
# 'full' - capture the full pane contents
pane_contents_option="@resurrect-capture-pane-contents" pane_contents_option="@resurrect-capture-pane-contents"
pane_contents_area_option="@resurrect-pane-contents-area"
bash_history_option="@resurrect-save-bash-history" bash_history_option="@resurrect-save-bash-history"
# set to 'on' to ensure panes are never ever overwritten # set to 'on' to ensure panes are never ever overwritten