From 567f34f1067769eb851d934390463d4a01cf32ae Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Mon, 28 Jan 2019 18:52:04 +0200 Subject: [PATCH 1/5] general: Added select all --- fff | 49 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/fff b/fff index 6742fd4..a76d088 100755 --- a/fff +++ b/fff @@ -330,26 +330,39 @@ mark() { [[ $PWD != "$mark_dir" ]] && marked_files=() - if [[ ${marked_files[$1]} == "${list[$1]}" ]]; then - unset 'marked_files[scroll]' + if [[ $1 == all ]]; then + if ((select_all == 0)); then + marked_files=("${list[@]}") + mark_dir="$PWD" + select_all=1 + else + marked_files=() + select_all=0 + fi + redraw else - marked_files[$1]="${list[$1]}" - mark_dir="$PWD" - fi + if [[ ${marked_files[$1]} == "${list[$1]}" ]]; then + unset 'marked_files[scroll]' + + else + marked_files[$1]="${list[$1]}" + mark_dir="$PWD" + fi - # Clear line before changing it. - printf '\e[K' - print_line "$1" + # Clear line before changing it. + printf '\e[K' + print_line "$1" + fi # Find the program to use. case "$2" in - y) file_program=(cp -iR) ;; - m) file_program=(mv -i) ;; + y|Y) file_program=(cp -iR) ;; + m|M) file_program=(mv -i) ;; # These are 'fff' functions. - d) file_program=(trash) ;; - b) file_program=(bulk_rename) ;; + d|D) file_program=(trash) ;; + b|B) file_program=(bulk_rename) ;; esac status_line @@ -368,7 +381,7 @@ trash() { "$FFF_TRASH_CMD" "${@:1:$#-1}" else - cd "$FFF_TRASH" && "mv" "$@" + cd "$FFF_TRASH" && mv "$@" # Go back to where we were. cd - &>/dev/null ||: @@ -709,6 +722,14 @@ key() { mark "$scroll" "$1" ;; + # Mark all files for operation. + "${FFF_KEY_YANK_ALL:=Y}"|\ + "${FFF_KEY_MOVE_ALL:=M}"|\ + "${FFF_KEY_TRASH_ALL:=D}"|\ + "${FFF_KEY_BULK_RENAME_ALL:=B}") + mark all "$1" + ;; + # Do the file operation. "${FFF_KEY_PASTE:=p}") [[ ${marked_files[*]} ]] && { @@ -727,6 +748,7 @@ key() { printf '\e[?25l' marked_files=() + select_all=0 redraw full } ;; @@ -734,6 +756,7 @@ key() { # Clear all marked files. "${FFF_KEY_CLEAR:=c}") marked_files=() + select_all=0 redraw ;; From 59df5a8bb0d7744a6f730acf6d28b2d50a487930 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Mon, 28 Jan 2019 18:55:17 +0200 Subject: [PATCH 2/5] general: Added select all --- fff | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fff b/fff index a76d088..310bfb8 100755 --- a/fff +++ b/fff @@ -327,14 +327,15 @@ mark() { # Mark file for operation. # If an item is marked in a second directory, # clear the marked files. - [[ $PWD != "$mark_dir" ]] && + [[ $PWD != "$mark_dir" ]] && { marked_files=() + select_all=0 + } if [[ $1 == all ]]; then if ((select_all == 0)); then marked_files=("${list[@]}") mark_dir="$PWD" - select_all=1 else marked_files=() select_all=0 From a635c45c98822d080099829db48bcf13885152d6 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Mon, 28 Jan 2019 18:59:12 +0200 Subject: [PATCH 3/5] docs: update --- README.md | 11 +++++++++++ fff.1 | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/README.md b/README.md index b6006eb..c310626 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,12 @@ y: mark copy m: mark move d: mark trash (~/.cache/fff/trash/) b: mark bulk rename + +Y: mark all for copy +M: mark all for move +D: mark all for trash (~/.cache/fff/trash/) +B: mark all for bulk rename + p: paste/move/delete/bulk_rename c: clear file selections @@ -232,6 +238,11 @@ export FFF_KEY_MOVE="m" export FFF_KEY_TRASH="d" export FFF_KEY_BULK_RENAME="b" +export FFF_KEY_YANK_ALL="Y" +export FFF_KEY_MOVE_ALL="M" +export FFF_KEY_TRASH_ALL="D" +export FFF_KEY_BULK_RENAME_ALL="B" + export FFF_KEY_PASTE="p" export FFF_KEY_CLEAR="c" diff --git a/fff.1 b/fff.1 index 611dcfa..94d0ed5 100644 --- a/fff.1 +++ b/fff.1 @@ -46,6 +46,12 @@ y: mark copy m: mark move d: mark trash (~/\.cache/fff/trash/) b: mark bulk rename + +Y: mark all for copy +M: mark all for move +D: mark all for trash (~/\.cache/fff/trash/) +B: mark all for bulk rename + p: paste/move/delete/bulk_rename c: clear file selections @@ -164,6 +170,11 @@ export FFF_KEY_MOVE="m" export FFF_KEY_TRASH="d" export FFF_KEY_BULK_RENAME="b" +export FFF_KEY_YANK_ALL="Y" +export FFF_KEY_MOVE_ALL="M" +export FFF_KEY_TRASH_ALL="D" +export FFF_KEY_BULK_RENAME_ALL="B" + export FFF_KEY_PASTE="p" export FFF_KEY_CLEAR="c" From 364431f16b9ffb9d36384080be2000f05830d3b9 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Mon, 28 Jan 2019 19:02:37 +0200 Subject: [PATCH 4/5] general: Added select all --- fff | 1 + 1 file changed, 1 insertion(+) diff --git a/fff b/fff index 310bfb8..66e7493 100755 --- a/fff +++ b/fff @@ -335,6 +335,7 @@ mark() { if [[ $1 == all ]]; then if ((select_all == 0)); then marked_files=("${list[@]}") + select_all=1 mark_dir="$PWD" else marked_files=() From 3249a6d3cd58db1e3ae4c2226d90c556e8df0820 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Mon, 28 Jan 2019 19:07:29 +0200 Subject: [PATCH 5/5] general: Added select all --- fff | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/fff b/fff index 66e7493..b1e39a5 100755 --- a/fff +++ b/fff @@ -327,19 +327,15 @@ mark() { # Mark file for operation. # If an item is marked in a second directory, # clear the marked files. - [[ $PWD != "$mark_dir" ]] && { + [[ $PWD != "$mark_dir" ]] && marked_files=() - select_all=0 - } if [[ $1 == all ]]; then - if ((select_all == 0)); then + if ((${#marked_files[@]} != ${#list[@]})); then marked_files=("${list[@]}") - select_all=1 mark_dir="$PWD" else marked_files=() - select_all=0 fi redraw @@ -750,7 +746,6 @@ key() { printf '\e[?25l' marked_files=() - select_all=0 redraw full } ;; @@ -758,7 +753,6 @@ key() { # Clear all marked files. "${FFF_KEY_CLEAR:=c}") marked_files=() - select_all=0 redraw ;;