From 79f5efb621f9c2bb2fa436070d698099c9dd324c Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Tue, 29 Jan 2019 12:41:11 +0200 Subject: [PATCH 1/5] general: Change how marking files works --- fff | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/fff b/fff index af5c282..12eeadf 100755 --- a/fff +++ b/fff @@ -113,7 +113,7 @@ get_ls_colors() { status_line() { # Status_line to print when files are marked for operation. - local mark_ui="[${#marked_files[@]}] selected (${file_program[*]}) [p] ->" + local mark_ui="[${#marked_files[@]}] selected (${file_program[*]:-[y,m,d,b,s]}) [p] ->" # Escape the directory string. # Remove all non-printable characters. @@ -138,7 +138,7 @@ status_line() { "${FFF_COL2:-1}" \ "$COLUMNS" "" \ "($((scroll+1))/$((list_total+1)))" \ - "${marked_files[*]:+${mark_ui}}" \ + "${marked_files[*]:+$mark_ui}" \ "${PWD_escaped:-/}" } @@ -353,17 +353,6 @@ mark() { print_line "$1" fi - # Find the program to use. - case "$2" in - y|Y) file_program=(cp -iR) ;; - m|M) file_program=(mv -i) ;; - s|S) file_program=(ln -s) ;; - - # These are 'fff' functions. - d|D) file_program=(trash) ;; - b|B) file_program=(bulk_rename) ;; - esac - status_line } @@ -729,15 +718,27 @@ key() { "${FFF_KEY_TRASH:=d}"|\ "${FFF_KEY_LINK:=s}"|\ "${FFF_KEY_BULK_RENAME:=b}") + # Find the program to use. + case "$1" in + y|Y) file_program=(cp -iR) ;; + m|M) file_program=(mv -i) ;; + s|S) file_program=(ln -s) ;; + + # These are 'fff' functions. + d|D) file_program=(trash) ;; + b|B) file_program=(bulk_rename) ;; + esac + + status_line + ;; + + # Mark files for operation. + "${FFF_KEY_MARK:=" "}") 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_LINK_ALL:=S}"|\ - "${FFF_KEY_BULK_RENAME_ALL:=B}") + "${FFF_KEY_MARK_ALL:=v}") mark all "$1" ;; From 219693d00b8583094bba681d242dce84c4808be7 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Tue, 29 Jan 2019 12:56:34 +0200 Subject: [PATCH 2/5] general: Change how marking files works --- fff | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/fff b/fff index 12eeadf..b54df45 100755 --- a/fff +++ b/fff @@ -336,6 +336,7 @@ mark() { mark_dir="$PWD" else marked_files=() + file_program=() fi redraw @@ -353,6 +354,10 @@ mark() { print_line "$1" fi + # If no programs are marked, clear the type of operation. + [[ -z ${marked_files[*]} ]] && + file_program=() + status_line } @@ -718,6 +723,8 @@ key() { "${FFF_KEY_TRASH:=d}"|\ "${FFF_KEY_LINK:=s}"|\ "${FFF_KEY_BULK_RENAME:=b}") + previous_program="${file_program[0]}" + # Find the program to use. case "$1" in y|Y) file_program=(cp -iR) ;; @@ -729,6 +736,10 @@ key() { b|B) file_program=(bulk_rename) ;; esac + # Toggle the file progam if the same key was pressed. + [[ $previous_program == "${file_program[0]}" ]] && + file_program=() + status_line ;; @@ -750,6 +761,11 @@ key() { return } + [[ -z ${file_program[0]} ]] && { + cmd_line "warn: no operation selected [y,m,d,b,s]." + return + } + # Clear the screen to make room for a prompt if needed. clear_screen printf '\e[?25h' @@ -760,6 +776,7 @@ key() { printf '\e[?25l' marked_files=() + file_program=() redraw full } ;; From 6d06f59db08dc79f6e34dab9648506e1465c8bb5 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Tue, 29 Jan 2019 13:02:31 +0200 Subject: [PATCH 3/5] general: Change how marking files works --- fff | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/fff b/fff index b54df45..b855a40 100755 --- a/fff +++ b/fff @@ -113,7 +113,8 @@ get_ls_colors() { status_line() { # Status_line to print when files are marked for operation. - local mark_ui="[${#marked_files[@]}] selected (${file_program[*]:-[y,m,d,b,s]}) [p] ->" + local mark_ui="[${#marked_files[@]}] selected " + mark_ui+="[${file_program[*]:-y,m,d,b,s}] [p] ->" # Escape the directory string. # Remove all non-printable characters. @@ -723,6 +724,9 @@ key() { "${FFF_KEY_TRASH:=d}"|\ "${FFF_KEY_LINK:=s}"|\ "${FFF_KEY_BULK_RENAME:=b}") + [[ -z "${marked_files[*]}" ]] && + return + previous_program="${file_program[0]}" # Find the program to use. @@ -785,6 +789,7 @@ key() { "${FFF_KEY_CLEAR:=c}") [[ ${marked_files[*]} ]] && { marked_files=() + file_program=() redraw } ;; From 240a72f226c63e1fcb407934679cbbf457507763 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Tue, 29 Jan 2019 13:06:02 +0200 Subject: [PATCH 4/5] docs: update --- fff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fff b/fff index b855a40..78e9aae 100755 --- a/fff +++ b/fff @@ -139,7 +139,7 @@ status_line() { "${FFF_COL2:-1}" \ "$COLUMNS" "" \ "($((scroll+1))/$((list_total+1)))" \ - "${marked_files[*]:+$mark_ui}" \ + "${marked_files[*]:+${mark_ui}}" \ "${PWD_escaped:-/}" } From ecc64c8c06bed785850d288c986cd76113742b61 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Tue, 29 Jan 2019 13:08:44 +0200 Subject: [PATCH 5/5] docs: update --- fff | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fff b/fff index 78e9aae..141ee06 100755 --- a/fff +++ b/fff @@ -731,13 +731,13 @@ key() { # Find the program to use. case "$1" in - y|Y) file_program=(cp -iR) ;; - m|M) file_program=(mv -i) ;; - s|S) file_program=(ln -s) ;; + y) file_program=(cp -iR) ;; + m) file_program=(mv -i) ;; + s) file_program=(ln -s) ;; # These are 'fff' functions. - d|D) file_program=(trash) ;; - b|B) file_program=(bulk_rename) ;; + d) file_program=(trash) ;; + b) file_program=(bulk_rename) ;; esac # Toggle the file progam if the same key was pressed.