mirror of
				https://github.com/tmux-plugins/tmux-resurrect.git
				synced 2025-11-04 00:46:04 +00:00 
			
		
		
		
	Restoring programs with arguments; improve process matching
Closes #20, closes #19
This commit is contained in:
		@@ -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"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user