Parcourir la source

support other pager/selector and none at all

Daniel Sheffield il y a 3 mois
Parent
commit
1b637b27b9
3 fichiers modifiés avec 45 ajouts et 2 suppressions
  1. 3 0
      helpers/common.sh
  2. 0 1
      helpers/fzf.sh
  3. 42 1
      recall.sh

+ 3 - 0
helpers/common.sh

@@ -8,6 +8,7 @@ ESSENTIAL_GENERIC=(
 	echo
 	ls
 	sort
+	tee
 )
 ESSENTIAL_SYSTEM_SPECIFIC=(
 	find
@@ -16,6 +17,8 @@ ESSENTIAL_SYSTEM_SPECIFIC=(
 	xargs
 )
 NONESSENTIAL=(
+	iselect
+	vipe
 )
 
 get_subprog () {

+ 0 - 1
helpers/fzf.sh

@@ -2,7 +2,6 @@
 # Copyright (c) Daniel Sheffield 2024 - 2025
 
 NONESSENTIAL+=(
-	# TODO: add built-in minimal replacement for fzf
 	fzf
 )
 

+ 42 - 1
recall.sh

@@ -18,6 +18,9 @@ stderr_deps=/dev/null
 #stderr_deps='/proc/self/fd/2'
 check_deps 3>&2 2>"$stderr_deps" 1>/dev/null
 
+: "${RECALL_FZF_ENABLE:=true}"
+: "${RECALL_ISELECT_ENABLE:=true}"
+: "${RECALL_VIPE_ENABLE:=true}"
 INCLUDE_STDERR=false
 EXIT_SUCCESS=false
 LIST_MODE=false
@@ -152,6 +155,44 @@ sort_rw0 () {
 	fi
 }
 
+preview_rw0 (){
+	header_size="$1"
+	if "$RECALL_FZF_ENABLE" && which fzf 1>/dev/null 2>&1
+	then
+		fzf_rw0_inplace_preview "$header_size"
+	elif "$RECALL_ISELECT_ENABLE" && which iselect 1>/dev/null 2>&1
+	then
+		while read -rd "" line
+		do
+			echo -n "#"
+			head -n1 "$line"/info
+			echo "<s>$line"
+		done \
+		| iselect -fmt recall -n history \
+		| awk \
+			-v RS='\n' \
+			-v ORS='\0' \
+			'{print $0}' \
+		&& :
+	elif "$RECALL_VIPE_ENABLE" && which vipe 1>/dev/null 2>&1
+	then
+		while read -rd "" line
+		do
+			echo -n "#"
+			head -n1 "$line"/info
+			echo "$line"
+		done \
+		| vipe \
+		| awk \
+			-v RS='\n' \
+			-v ORS='\0' \
+			'/^[^#]/ {print $0}' \
+		&& :
+	else
+		cat
+	fi
+}
+
 list_r0 (){
 	ors="$1"
 	if ! "$CMD_STRING"
@@ -190,7 +231,7 @@ then
 		find_w0_leaf_directories "${find_name[@]}"\
 		| sort_rw0 "$sort_opt" \
 		| head -zn "${NUM:--0}" \
-		| fzf_rw0_inplace_preview "2" \
+		| preview_rw0 "2" \
 		| list_r0 "$ORS" \
 		&& :
 	)