Removed some unnecessary +refreshes, no longer enable cursor by default,
but instead have ask() etc. make the cursor visible. Also cleaned up some of the failure cases for better feedback.
This commit is contained in:
parent
97bae88a1e
commit
7f0fcdeea4
12
Makefile
12
Makefile
@ -24,16 +24,16 @@ endif
|
|||||||
ifneq (, $(PICKER))
|
ifneq (, $(PICKER))
|
||||||
PICKER_FLAG=-D"PICK=\"$(PICKER) --prompt=\\\"$$1\\\"\""
|
PICKER_FLAG=-D"PICK=\"$(PICKER) --prompt=\\\"$$1\\\"\""
|
||||||
ifeq ($(shell which $(PICKER)),$(shell which fzy 2>/dev/null || echo '<none>'))
|
ifeq ($(shell which $(PICKER)),$(shell which fzy 2>/dev/null || echo '<none>'))
|
||||||
PICKER_FLAG=-D'PICK="printf \"\\033[3A\" >/dev/tty; fzy --lines=3 --prompt=\"\033[1m$$1\033[0m\""'
|
PICKER_FLAG=-D'PICK="printf \"\\033[3A\\033[?25h\" >/dev/tty; fzy --lines=3 --prompt=\"\033[1m$$1\033[0m\""'
|
||||||
endif
|
endif
|
||||||
ifeq ($(shell which $(PICKER)),$(shell which fzf 2>/dev/null || echo '<none>'))
|
ifeq ($(shell which $(PICKER)),$(shell which fzf 2>/dev/null || echo '<none>'))
|
||||||
PICKER_FLAG=-D'PICK="printf \"\\033[3A\" >/dev/tty; fzf --height=4 --prompt=\"$$1\""'
|
PICKER_FLAG=-D'PICK="printf \"\\033[3A\\033[?25h\" >/dev/tty; fzf --height=4 --prompt=\"$$1\""'
|
||||||
endif
|
endif
|
||||||
ifeq ($(shell which $(PICKER)),$(shell which ask 2>/dev/null || echo '<none>'))
|
ifeq ($(shell which $(PICKER)),$(shell which ask 2>/dev/null || echo '<none>'))
|
||||||
PICKER_FLAG=-D'PICK="/usr/bin/env ask --prompt=\"$$1\""'
|
PICKER_FLAG=-D'PICK="/usr/bin/env ask --prompt=\"$$1\033[?25h\""'
|
||||||
endif
|
endif
|
||||||
ifeq ($(shell which $(PICKER)),$(shell which pick 2>/dev/null || echo '<none>'))
|
ifeq ($(shell which $(PICKER)),$(shell which pick 2>/dev/null || echo '<none>'))
|
||||||
PICKER_FLAG=-D'PICK="pick"'
|
PICKER_FLAG=-D'PICK="printf \"\\033[?25h\" >/dev/tty; pick"'
|
||||||
endif
|
endif
|
||||||
ifeq ($(shell which $(PICKER)),$(shell which dmenu 2>/dev/null || echo '<none>'))
|
ifeq ($(shell which $(PICKER)),$(shell which dmenu 2>/dev/null || echo '<none>'))
|
||||||
PICKER_FLAG=-D'PICK="dmenu -i -l 10 -p \"$$1\""'
|
PICKER_FLAG=-D'PICK="dmenu -i -l 10 -p \"$$1\""'
|
||||||
@ -44,8 +44,8 @@ CFLAGS += $(PICKER_FLAG)
|
|||||||
ifneq (, $(ASKER))
|
ifneq (, $(ASKER))
|
||||||
PERCENT := %
|
PERCENT := %
|
||||||
ifeq ($(shell which $(ASKER)),$(shell which ask 2>/dev/null || echo '<none>'))
|
ifeq ($(shell which $(ASKER)),$(shell which ask 2>/dev/null || echo '<none>'))
|
||||||
CFLAGS += -D'ASK="eval \"$$1=\\$$(/usr/bin/env ask --history=bb.hist --prompt=\\\"$$2\\\" --query=\\\"$$3\\\")\""'
|
CFLAGS += -D'ASK="eval \"$$1=\\$$(/usr/bin/env ask --history=bb.hist --prompt=\\\"$$2\033[?25h\\\" --query=\\\"$$3\\\")\""'
|
||||||
CFLAGS += -D'CONFIRM="/usr/bin/env ask -n \"Is that okay?\""'
|
CFLAGS += -D'CONFIRM="/usr/bin/env ask -n \"Is that okay?\033[?25h\""'
|
||||||
endif
|
endif
|
||||||
ifeq ($(shell which $(ASKER)),$(shell which dmenu 2>/dev/null || echo '<none>'))
|
ifeq ($(shell which $(ASKER)),$(shell which dmenu 2>/dev/null || echo '<none>'))
|
||||||
CFLAGS += -D'ASK="eval \"$$1=\\$$(echo \"$$3\" | dmenu -p \"$$2\")\""'
|
CFLAGS += -D'ASK="eval \"$$1=\\$$(echo \"$$3\" | dmenu -p \"$$2\")\""'
|
||||||
|
1
bb.c
1
bb.c
@ -159,7 +159,6 @@ void bb_browse(bb_t *bb, const char *path)
|
|||||||
process_cmd(bb, binding->script);
|
process_cmd(bb, binding->script);
|
||||||
} else {
|
} else {
|
||||||
move_cursor(tty_out, 0, termheight-1);
|
move_cursor(tty_out, 0, termheight-1);
|
||||||
fputs(T_ON(T_SHOW_CURSOR), tty_out);
|
|
||||||
restore_term(&default_termios);
|
restore_term(&default_termios);
|
||||||
run_script(bb, binding->script);
|
run_script(bb, binding->script);
|
||||||
init_term();
|
init_term();
|
||||||
|
3
bb.h
3
bb.h
@ -240,7 +240,8 @@ static const char *bbcmdfn = "bb() {\n"
|
|||||||
#ifdef ASK
|
#ifdef ASK
|
||||||
ASK ";\n"
|
ASK ";\n"
|
||||||
#else
|
#else
|
||||||
" printf \"\033[1m%s\033[0m\" \"$2\" >/dev/tty;\n"
|
" [ $# -lt 2 ] && printf '\033[31;1mNot enough args to ask!\033[0m\n' && return 1;\n"
|
||||||
|
" printf \"\033[1m%s\033[0m\033[?25h\" \"$2\" >/dev/tty;\n"
|
||||||
" read $1 </dev/tty >/dev/tty\n"
|
" read $1 </dev/tty >/dev/tty\n"
|
||||||
#endif
|
#endif
|
||||||
"}\n"
|
"}\n"
|
||||||
|
34
bindings.bb
34
bindings.bb
@ -69,8 +69,7 @@ Ctrl-s: # Save the selection
|
|||||||
Ctrl-o: # Open a saved selection
|
Ctrl-o: # Open a saved selection
|
||||||
loadpath="$(find ~/.config/bb -maxdepth 1 -type f | pick "Load selection: ")" &&
|
loadpath="$(find ~/.config/bb -maxdepth 1 -type f | pick "Load selection: ")" &&
|
||||||
[ -e "$loadpath" ] && bb +deselect &&
|
[ -e "$loadpath" ] && bb +deselect &&
|
||||||
while IFS= read -r -d $'\0'; do bb +select:"$REPLY"; done < "$loadpath" &&
|
while IFS= read -r -d $'\0'; do bb +select:"$REPLY"; done < "$loadpath"
|
||||||
bb +refresh
|
|
||||||
J: # Spread selection down
|
J: # Spread selection down
|
||||||
bb +spread:+1
|
bb +spread:+1
|
||||||
K: # Spread selection up
|
K: # Spread selection up
|
||||||
@ -133,21 +132,29 @@ p: # Page through a file with $PAGER
|
|||||||
>: # Open a shell
|
>: # Open a shell
|
||||||
tput rmcup; $SHELL; bb +r
|
tput rmcup; $SHELL; bb +r
|
||||||
r,F2: # Rename a file
|
r,F2: # Rename a file
|
||||||
ask newname "Rename \033[33m$(basename "$BBCURSOR")\033[39m: " "$(basename "$BBCURSOR")" || exit
|
ask newname "Rename $(printf "\033[33m%s\033[39m" "$(basename "$BBCURSOR")"): " "$(basename "$BBCURSOR")" || exit
|
||||||
r="$(dirname "$BBCURSOR")/$newname" || exit
|
r="$(dirname "$BBCURSOR")/$newname" || exit
|
||||||
[ "$r" != "$BBCURSOR" ] && mv -i "$BBCURSOR" "$r" && bb +refresh &&
|
[ "$r" = "$BBCURSOR" ] && exit
|
||||||
|
[ -e "$r" ] && printf "\033[31;1m$r already exists! It will be overwritten.\033[0m " &&
|
||||||
|
confirm && { rm -rf "$r" || { pause; exit; }; }
|
||||||
|
mv "$BBCURSOR" "$r" && bb +refresh &&
|
||||||
while [ $# -gt 0 ]; do "$1" = "$BBCURSOR" && bb +deselect:"$BBCURSOR" +select:"$r"; shift; done &&
|
while [ $# -gt 0 ]; do "$1" = "$BBCURSOR" && bb +deselect:"$BBCURSOR" +select:"$r"; shift; done &&
|
||||||
bb +goto:"$r" +refresh
|
bb +goto:"$r" || { pause; exit; }
|
||||||
R: # Rename all selected files
|
R: # Rename all selected files
|
||||||
bb +refresh;
|
|
||||||
for f; do
|
for f; do
|
||||||
ask newname "Rename \033[33m$(basename "$f")\033[39m: " "$(basename "$f")" || break;
|
ask newname "Rename $(printf "\033[33m%s\033[39m" "$(basename "$f")"): " "$(basename "$f")" || break;
|
||||||
r="$(dirname "$f")/$newname";
|
r="$(dirname "$f")/$newname";
|
||||||
[ "$r" != "$f" ] && mv -i "$f" "$r" && bb +deselect:"$f" +select:"$r";
|
[ "$r" = "$f" ] && continue;
|
||||||
[ "$f" = "$BBCURSOR" ] && bb +goto:"$r" +refresh;
|
[ -e "$r" ] && printf "\033[31;1m$r already exists! It will be overwritten.\033[0m "
|
||||||
done
|
&& confirm && { rm -rf "$r" || { pause; exit; }; }
|
||||||
|
mv "$f" "$r" || { pause; exit; }
|
||||||
|
bb +deselect:"$f" +select:"$r";
|
||||||
|
[ "$f" = "$BBCURSOR" ] && bb +goto:"$r";
|
||||||
|
done;
|
||||||
|
bb +refresh
|
||||||
Ctrl-r: # Regex rename files
|
Ctrl-r: # Regex rename files
|
||||||
command -v rename >/dev/null || { echo 'The `rename` command is not installed. Please install it to use this key binding.'; pause; exit; };
|
command -v rename >/dev/null ||
|
||||||
|
{ printf '\033[31;1mThe `rename` command is not installed. Please install it to use this key binding.\033[0m\n'; pause; exit; };
|
||||||
ask patt "Replace pattern: " && ask rep "Replacement: " &&
|
ask patt "Replace pattern: " && ask rep "Replacement: " &&
|
||||||
printf "\033[1mRenaming:\n\033[33m$(if [ $# -gt 0 ]; then rename -nv "$patt" "$rep" "$@"; else rename -nv "$patt" "$rep" *; fi)\033[0m" | more &&
|
printf "\033[1mRenaming:\n\033[33m$(if [ $# -gt 0 ]; then rename -nv "$patt" "$rep" "$@"; else rename -nv "$patt" "$rep" *; fi)\033[0m" | more &&
|
||||||
confirm &&
|
confirm &&
|
||||||
@ -157,7 +164,7 @@ Ctrl-r: # Regex rename files
|
|||||||
Section: Viewing Options
|
Section: Viewing Options
|
||||||
s: # Sort by...
|
s: # Sort by...
|
||||||
ask1 sort "Sort (n)ame (s)ize (m)odification (c)reation (a)ccess (r)andom (p)ermissions: " &&
|
ask1 sort "Sort (n)ame (s)ize (m)odification (c)reation (a)ccess (r)andom (p)ermissions: " &&
|
||||||
bb +sort:"~$sort" +refresh
|
bb +sort:"~$sort"
|
||||||
---,#: # Set columns
|
---,#: # Set columns
|
||||||
ask columns "Set columns (*)selected (a)ccessed (c)reated (m)odified (n)ame (p)ermissions (r)andom (s)ize: " &&
|
ask columns "Set columns (*)selected (a)ccessed (c)reated (m)odified (n)ame (p)ermissions (r)andom (s)ize: " &&
|
||||||
bb +col:"$columns"
|
bb +col:"$columns"
|
||||||
@ -168,6 +175,7 @@ i: # Toggle interleaving files and directories
|
|||||||
F5: # Refresh view
|
F5: # Refresh view
|
||||||
bb +refresh
|
bb +refresh
|
||||||
Ctrl-b: # Bind a key to a script
|
Ctrl-b: # Bind a key to a script
|
||||||
ask1 key "Press key to bind..." && echo && ask script "Bind script: " && bb +bind:"$(printf "$key:$script")"
|
ask1 key "Press key to bind..." && echo && ask script "Bind script: " &&
|
||||||
|
bb +bind:"$key":"{ $script; } || pause" || pause
|
||||||
|
|
||||||
Section: User Bindings
|
Section: User Bindings
|
||||||
|
Loading…
Reference in New Issue
Block a user