aboutsummaryrefslogtreecommitdiff
path: root/archive/dm-recent-edit
blob: 583094ffc567ccb80dac98b84f2ff8cd3fbae8ea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env sh
# Pick a recently-edited file from vim's :oldfiles, open in st -e vim.
set -eu

VIMINFO="${VIMINFO:-$HOME/.vim/.viminfo}"

file=$(
  vim -e -c "rviminfo! $VIMINFO" \
         -c 'redir >> /dev/stdout | silent oldfiles | redir END | qa!' \
         2>/dev/null \
    | sed 's/^[[:space:]]*[0-9]*:[[:space:]]*//' \
    | sed "s|^~|$HOME|" \
    | awk 'NF && !seen[$0]++' \
    | while IFS= read -r f; do [ -f "$f" ] && printf '%s\n' "$f"; done \
    | dmenu -l 20 -i -p 'recent:'
) || exit 0
[ -n "$file" ] || exit 0

exec st -e vim "$file"