blob: 8750a4faf4dc8f0bff1c810fd182914467c03b3f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#!/usr/bin/env bash
if [ "$#" -eq 1 ]; then
selected="$1"
else
selected=$(
find ~/src ~/.dotfiles -maxdepth 2 -type d,f -path '*/.git' -printf '%h\n' -prune |
xargs -I{} sh -c 'stat -c %Y:"{}" $XDG_DATA_HOME/nvim/sessions/$(echo "{}" | sed "s|/|%|g").vim ||
(git -C "{}" rev-parse HEAD &>/dev/null &&
git -C "{}" --no-pager log -1 --all --format="%at:{}" 2>/dev/null ||
stat -c %Y:"{}" "{}"/.git)' | sort -r | cut -d':' -f2- |
fzf-tmux -p -- -d/ --with-nth -2.. --preview="exa --tree --icons --git-ignore {}"
)
fi
if [ -z "$selected" ]; then
exit 0
fi
selected_name=$(basename "$selected" | tr . _)
tmux_running=$(pgrep tmux)
if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
tmux new-session -s "$selected_name" -c "$selected"
exit 0
fi
if ! tmux has-session -t="$selected_name" 2>/dev/null; then
tmux new-session -ds "$selected_name" -c "$selected"
fi
tmux switch-client -t "$selected_name"
|