summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDylan Araps <dylan.araps@gmail.com>2019-01-05 00:13:26 +0200
committerDylan Araps <dylan.araps@gmail.com>2019-01-05 00:13:26 +0200
commitfcaea000170b00a757e183a8dd19266aceb78ffe (patch)
tree6551a341b4fc34da3c0365b3542a2ba7ca40018d
parent79894d0484eb3159a6f36dca086cf6efb59d841a (diff)
fully working multi select copy paste
-rw-r--r--README.md4
-rwxr-xr-xfff19
-rw-r--r--fff.16
3 files changed, 23 insertions, 6 deletions
diff --git a/README.md b/README.md
index ed1547e..fa0c697 100644
--- a/README.md
+++ b/README.md
@@ -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"
diff --git a/fff b/fff
index 129d2d9..98fa501 100755
--- a/fff
+++ b/fff
@@ -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 ~ ;;
diff --git a/fff.1 b/fff.1
index f86271e..e5dec4f 100644
--- a/fff.1
+++ b/fff.1
@@ -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