mirror of
https://github.com/tmux-plugins/tmux-resurrect.git
synced 2024-11-05 02:18:49 +00:00
Restoring programs with arguments; improve process matching
Closes #20, closes #19
This commit is contained in:
parent
093627ce0a
commit
cfe8e7979b
@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
### master
|
### master
|
||||||
- bugfix: with vim 'session' strategy, if the session file does not exist - make
|
- bugfix: with vim 'session' strategy, if the session file does not exist - make
|
||||||
sure wim does not contain `-S` flag
|
sure vim does not contain `-S` flag
|
||||||
|
- enable restoring programs with arguments (e.g. "rails console") and also
|
||||||
|
processes that contain program name
|
||||||
|
|
||||||
### v0.1.0, 2014-08-28
|
### v0.1.0, 2014-08-28
|
||||||
- refactor checking if saved tmux session exists
|
- refactor checking if saved tmux session exists
|
||||||
|
12
README.md
12
README.md
@ -67,13 +67,21 @@ You should now be able to use the plugin.
|
|||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
Only a conservative list of programs is restored by default:
|
Only a conservative list of programs is restored by default:
|
||||||
`vi vim emacs man less more tail top htop irssi irb pry`.
|
`vi vim emacs man less more tail top htop irssi irb pry "~rails console"`.
|
||||||
Open a github issue if you think some other program should be on the default list.
|
Open a github issue if you think some other program should be on the default list.
|
||||||
|
|
||||||
- Restore additional programs by putting the following in `.tmux.conf`:
|
- Restore additional programs with the setting in `.tmux.conf`:
|
||||||
|
|
||||||
set -g @session-saver-processes 'ssh psql mysql sqlite3'
|
set -g @session-saver-processes 'ssh psql mysql sqlite3'
|
||||||
|
|
||||||
|
- Programs with arguments should be double quoted:
|
||||||
|
|
||||||
|
set -g @session-saver-processes 'some_program "git log"'
|
||||||
|
|
||||||
|
- Start with tilde to restore a program whose process contains target name:
|
||||||
|
|
||||||
|
set -g @session-saver-processes 'some_program "~rails server"'
|
||||||
|
|
||||||
- Don't restore any programs:
|
- Don't restore any programs:
|
||||||
|
|
||||||
set -g @session-saver-processes 'false'
|
set -g @session-saver-processes 'false'
|
||||||
|
@ -46,6 +46,10 @@ supported_tmux_version_ok() {
|
|||||||
$CURRENT_DIR/check_tmux_version.sh "$SUPPORTED_VERSION"
|
$CURRENT_DIR/check_tmux_version.sh "$SUPPORTED_VERSION"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remove_first_char() {
|
||||||
|
echo "$1" | cut -c2-
|
||||||
|
}
|
||||||
|
|
||||||
# path helpers
|
# path helpers
|
||||||
|
|
||||||
sessions_dir() {
|
sessions_dir() {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# default processes that are restored
|
# default processes that are restored
|
||||||
default_proc_list_option="@session-saver-default-processes"
|
default_proc_list_option="@session-saver-default-processes"
|
||||||
default_proc_list="vi vim emacs man less more tail top htop irssi irb pry"
|
default_proc_list='vi vim emacs man less more tail top htop irssi irb pry "~rails console"'
|
||||||
|
|
||||||
# User defined processes that are restored
|
# User defined processes that are restored
|
||||||
# 'false' - nothing is restored
|
# 'false' - nothing is restored
|
||||||
@ -71,12 +71,21 @@ _restore_all_processes() {
|
|||||||
|
|
||||||
_process_on_the_restore_list() {
|
_process_on_the_restore_list() {
|
||||||
local pane_full_command="$1"
|
local pane_full_command="$1"
|
||||||
local restore_list="$(_restore_list)"
|
# TODO: make this work without eval
|
||||||
|
eval set $(_restore_list)
|
||||||
local proc
|
local proc
|
||||||
for proc in $restore_list; do
|
for proc in "$@"; do
|
||||||
# regex matching the command makes sure process is a "word"
|
if _proc_starts_with_tildae "$proc"; then
|
||||||
if [[ "$pane_full_command" =~ (^${proc} ) ]] || [[ "$pane_full_command" =~ (^${proc}$) ]]; then
|
proc="$(remove_first_char "$proc")"
|
||||||
return 0
|
# regex matching the command makes sure `$proc` string is somewhere the command string
|
||||||
|
if [[ "$pane_full_command" =~ ($proc) ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# regex matching the command makes sure process is a "word"
|
||||||
|
if [[ "$pane_full_command" =~ (^${proc} ) ]] || [[ "$pane_full_command" =~ (^${proc}$) ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
return 1
|
return 1
|
||||||
@ -93,6 +102,10 @@ _restore_list() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_proc_starts_with_tildae() {
|
||||||
|
[[ "$1" =~ (^~) ]]
|
||||||
|
}
|
||||||
|
|
||||||
_strategy_exists() {
|
_strategy_exists() {
|
||||||
local pane_full_command="$1"
|
local pane_full_command="$1"
|
||||||
local strategy="$(_get_command_strategy "$pane_full_command")"
|
local strategy="$(_get_command_strategy "$pane_full_command")"
|
||||||
|
@ -41,10 +41,6 @@ tmux_socket() {
|
|||||||
echo $TMUX | cut -d',' -f1
|
echo $TMUX | cut -d',' -f1
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_first_char() {
|
|
||||||
echo "$1" | cut -c2-
|
|
||||||
}
|
|
||||||
|
|
||||||
new_window() {
|
new_window() {
|
||||||
local session_name="$1"
|
local session_name="$1"
|
||||||
local window_number="$2"
|
local window_number="$2"
|
||||||
|
Loading…
Reference in New Issue
Block a user