|
|
@@ -23,19 +23,30 @@ if [ -z "$TMUX" ]; then
|
|
|
fi
|
|
|
fi
|
|
|
|
|
|
-# tmux project launcher function
|
|
|
function tmuxLauncher {
|
|
|
- selected_dir=$(/bin/fd --base-directory ~/Dev --search-path . -t d -d 2 | fzf)
|
|
|
- if [[ -n "$selected_dir" ]]; then
|
|
|
- if git rev-parse --git-dir &>/dev/null; then
|
|
|
- tmux rename-window "$selected_dir"
|
|
|
- cd "$HOME/Dev/$selected_dir"
|
|
|
- else
|
|
|
- tmux new-window -n "$selected_dir" -c "$HOME/Dev/$selected_dir"
|
|
|
- fi
|
|
|
+ local selected_dir full_path session_name
|
|
|
+
|
|
|
+ selected_dir=$(fd --base-directory ~/Dev --search-path . -t d -d 2 | fzf)
|
|
|
+ [[ -z "$selected_dir" ]] && { zle reset-prompt; return }
|
|
|
+
|
|
|
+ selected_dir="${selected_dir#./}"
|
|
|
+ selected_dir="${selected_dir%/}"
|
|
|
+ full_path="$HOME/Dev/$selected_dir"
|
|
|
+
|
|
|
+ session_name="${selected_dir//\//-}"
|
|
|
+ session_name="${session_name%-}"
|
|
|
+
|
|
|
+ if [[ -n "$TMUX" ]]; then
|
|
|
+ tmux new-window -n "$session_name" -c "$full_path"
|
|
|
+ zle reset-prompt
|
|
|
+ else
|
|
|
+ echo "tmux new-session -s '$session_name' -c '$full_path'" > /tmp/tmux_cmd
|
|
|
+ zle accept-line
|
|
|
+ BUFFER="source /tmp/tmux_cmd && rm /tmp/tmux_cmd"
|
|
|
+ zle accept-line
|
|
|
fi
|
|
|
- zle reset-prompt
|
|
|
}
|
|
|
|
|
|
zle -N tmuxLauncher
|
|
|
bindkey "^t" tmuxLauncher
|
|
|
+
|