diff options
author | Dylan Araps <dylan.araps@gmail.com> | 2019-01-05 00:13:26 +0200 |
---|---|---|
committer | Dylan Araps <dylan.araps@gmail.com> | 2019-01-05 00:13:26 +0200 |
commit | fcaea000170b00a757e183a8dd19266aceb78ffe (patch) | |
tree | 6551a341b4fc34da3c0365b3542a2ba7ca40018d | |
parent | 79894d0484eb3159a6f36dca086cf6efb59d841a (diff) |
fully working multi select copy paste
-rw-r--r-- | README.md | 4 | ||||
-rwxr-xr-x | fff | 19 | ||||
-rw-r--r-- | fff.1 | 6 |
3 files changed, 23 insertions, 6 deletions
@@ -62,6 +62,7 @@ n: new dir y: mark copy m: mark move p: paste/move +c: clear file selections r: rename d: trash (~/.cache/fff/trash/) @@ -80,6 +81,9 @@ export FFF_COL2=7 # Selection color [0-9] (copied/moved files) export FFF_COL3=6 +# Cursor color [0-9] +export FFF_COL4=1 + # Text Editor export FFF_EDITOR="vim" # alternative: export EDITOR="vim" @@ -20,18 +20,23 @@ f_print() { for((i=${k:=0};i<j;i++)); { ((c<=0)) && { get_dir; f_print; return; } || path="${f[i]##*/}" [[ -d ${f[i]} ]] && { fo+='\e[1m\e[3'"${FFF_COL1:-2}m"; path+=/; } - [[ ${f[i]} == "${f[l]}" ]] && fo+='\e[7m' - [[ $co == "${f[i]}" ]] && { fo+='\e[1m\e[3'"${FFF_COL:-6}m"'\e[7m'; } + [[ ${co[i]} == "${f[i]}" ]] && fo+='\e[7m\e[1m\e[3'"${FFF_COL4:-1}m" + [[ ${f[i]} == "${f[l]}" ]] && fo+='\e[7m\e[1m\e[3'"${FFF_COL3:-6}m" printf '\e[K%b%s\e[m\n' "$fo" "$path"; fo= } printf '\e[3%sm\e[%s;H\e[K\n\e[K%s\e[m\e[H' "${FFF_COL2:-7}" "$((LINES-2))" \ - "${PWD/\/\///} (${l:-1}/$((c-1))) ${co:+${pr[*]}: ${co##*/} [p]}" + "${PWD/\/\///} (${l:-1}/$((c-1))) ${co[*]:+${pr[*]}: ${#co[@]}^ [p]}" } hist() { l2[((n=n<0?0:++n))]="$l:$k" } +mark() { + [[ "$PWD" != "$copwd" ]] && co=() + [[ ${co[l]} == "${f[l]}" ]] && unset 'co[l]' || co[l]="${f[l]}"; copwd="$PWD" +} + open() { [[ -d $1/ ]] && { l=0; refresh; PWD="${1:-/}"; get_dir; f_print; } [[ -f $1 ]] && { @@ -70,9 +75,11 @@ key() { .) a=(u s); shopt -"${a[((h=h>0?0:++h))]}" dotglob l=0; refresh; get_dir ;; - y) [[ $co != "${f[l]}" ]] && { co="${f[l]}"; pr=(cp -r); } || co= ;; - m) [[ $co != "${f[l]}" ]] && { co="${f[l]}"; pr=(mv); } || co= ;; - p) [[ $co ]] && "${pr[@]}" "$co" "$PWD" && { refresh; get_dir; co=; } ;; + y) mark; pr=(cp -rt) ;; + m) mark; pr=(mv -t) ;; + p) [[ ${co[*]} ]] && "${pr[@]}" "$PWD" "${co[@]}" && { + refresh; get_dir; co=(); copwd=; } ;; + c) co=() ;; r|d|n|f|/) prompt "$1" ;; \~) g="$PWD"; hist; open ~ ;; @@ -81,6 +81,9 @@ mark move \fBp\fR paste/move .TP +\fBc\fR +clear file selections +.TP \fBr\fR rename .TP @@ -104,6 +107,9 @@ export FFF_COL2=7 \fBSelection color [0-9] (copied/moved files)\fR export FFF_COL3=6 .TP +\fBCursor color [0-9]\fR +export FFF_COL4=1 +.TP \fBText Editor\fR export FFF_EDITOR="vim" # alternative: export EDITOR="vim" .TP |