diff options
Diffstat (limited to 'archive/dm-recent-edit')
| -rw-r--r-- | archive/dm-recent-edit | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/archive/dm-recent-edit b/archive/dm-recent-edit new file mode 100644 index 0000000..583094f --- /dev/null +++ b/archive/dm-recent-edit @@ -0,0 +1,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" |
