Updated readme presentation
[iomenu.git] / io-files
blobd42189427c73b1f1625c84ad4c890d8842df5091
1 # Prompt a file to open in PAGER, with an history.  In less(1), 'v' to edit.
4 CACHE="${XDG_CACHE_HOME:-$HOME/.cache}"
7 path()
9         if [ "$1" ]
10         then
11                 printf '%s\n' "$(cd "${1%/*}"; pwd)/${1##*/}"
12         else
13                 {
14                         printf '#\n# Recent files\n'
15                         [ -f "$CACHE/iomenu/files" ] &&
16                         tac "$CACHE/iomenu/files"
18                         printf '#\n# Current directory\n'
19                         find "$PWD" -maxdepth 1 -type f
21                         printf '#\n# All files\n'
22                         find ~ -type f ! -path '*/.cache/*' ! -path '*/.git/*'
24                 } | sed "s|$HOME|~|" | iomenu -l 256 -s '#' | sed "s|~|$HOME|"
26         fi | tee -a "$CACHE/iomenu/files"
30 history()
32         sort "$CACHE/iomenu/files" | uniq -d | while IFS='' read -r f
33         do
34                 printf '%s\n' "$(
35                         grep -Fxv "$f" "$CACHE/iomenu/files"
36                 )" "$f" > "$CACHE/iomenu/files"
37         done
39         printf '%s\n' "$(tail "$CACHE/iomenu/files")" > "$CACHE/iomenu/files"
43 main()
45         mkdir -p "$CACHE/iomenu"
47         file="$(path "$1")"
49         # terminal name
50         printf '\033]0;%s\007' "$(printf %s "$file" | sed "s|$HOME|~|")"
52         history
54         [ "$file" ] && [ -d "${file%/*}" ] && exec $EDITOR "$file"
58 main "$@"