From 7c3a23bbee378b60ac63fe7bfba936650c36798d Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sat, 25 May 2019 20:56:38 -0700 Subject: [PATCH] Default config wasn't keeping up. --- config.def.h | 134 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 80 insertions(+), 54 deletions(-) diff --git a/config.def.h b/config.def.h index f2aced1..5dcd264 100644 --- a/config.def.h +++ b/config.def.h @@ -4,83 +4,109 @@ #include "keys.h" #define PIPE_SELECTION_TO " printf '%s\\n' \"$@\" | " -#define AND_PAUSE " && read -n1 -p '\n\e[2m...press any key to continue...\e[0m\e[?25l'" - -#define SCROLLOFF 5 +#define PAUSE " read -n1 -p '\033[2m...press any key to continue...\033[0m\033[?25l'" #define NORMAL_TERM (1<<0) +#define SHOW_CURSOR (1<<1) #define MAX_REBINDINGS 8 -struct { - int keys[MAX_REBINDINGS]; +typedef struct { + int keys[MAX_REBINDINGS+1]; const char *command; const char *description; int flags; -} bindings[] = { +} binding_t; + +extern const char *startupcmds[]; +const char *startupcmds[] = { + "+mark:0", + "+mark:~;~", + "+mark:h;~", + "+mark:/;/", + "+mark:c;~/.config", + "+mark:l;~/.local", + "+columns:smpn", + "+sort:n", + NULL, +}; + +extern binding_t bindings[]; +binding_t bindings[] = { //////////////////////////////////////////////////////////////////////// // User-defined custom scripts go here // Please note that these are sh scripts, not bash scripts, so bash-isms // won't work unless you make your script use `bash -c ""` //////////////////////////////////////////////////////////////////////// - {{'?'}, "bb -b | less -r", "Show the help menu", NORMAL_TERM}, - {{'M'}, "man bb", "Show the bb manpage", NORMAL_TERM}, - {{'q', 'Q'}, "bb -c quit", "Quit"}, - {{'k', KEY_ARROW_UP}, "bb -c 'move:-1'", "Move up"}, - {{'j', KEY_ARROW_DOWN}, "bb -c 'move:+1'", "Move down"}, - {{'h', KEY_ARROW_LEFT}, "bb -c \"cd:..\"", "Go up a folder"}, - {{'l', KEY_ARROW_RIGHT}, "test -d \"$BBCURSOR\" && bb -c \"cd:$BBCURSOR\"", "Enter a folder"}, - {{' '}, "bb -c \"toggle:$BBCURSOR\"", "Toggle selection"}, + {{KEY_CTRL_H}, "", "Figure out what key does"}, + {{'q', 'Q'}, "bb +q", "Quit"}, + {{'k', KEY_ARROW_UP}, "+m:-1", "Move up"}, + {{'j', KEY_ARROW_DOWN}, "+m:+1", "Move down"}, + {{'h', KEY_ARROW_LEFT}, "bb \"+cd:..\"", "Go up a folder"}, + {{'l', KEY_ARROW_RIGHT}, "test -d \"$BBCURSOR\" && bb \"+cd:$BBCURSOR\"", "Enter a folder"}, + {{' ','v','V'}, "bb \"+t:$BBCURSOR\"", "Toggle selection"}, {{'e'}, "$EDITOR \"$@\"", "Edit file in $EDITOR", NORMAL_TERM}, - {{'\r'}, + {{'\r', KEY_MOUSE_DOUBLE_LEFT}, #ifdef __APPLE__ -"if test -d \"$BBCURSOR\"; then bb -c \"cd:$BBCURSOR\";\n\ +"if test -d \"$BBCURSOR\"; then bb \"+cd:$BBCURSOR\";\n\ elif test -x \"$BBCURSOR\"; then \"$BBCURSOR\";\n\ - read -n1 -p '\n\e[2m...press any key to continue...\e[0m\e[?25l';\n\ -elif file -bI \"$BBCURSOR\" | grep '^text/' >/dev/null; then $EDITOR \"$BBCURSOR\";\n\ + read -n1 -p '\n\033[2m...press any key to continue...\033[0m';\n\ +elif file -bI \"$BBCURSOR\" | grep '^\\(text/\\|inode/empty\\)' >/dev/null; then $EDITOR \"$BBCURSOR\";\n\ else open \"$BBCURSOR\"; fi", #else -"if test -d \"$BBCURSOR\"; then bb -c \"cd:$BBCURSOR\";\n\ +"if test -d \"$BBCURSOR\"; then bb \"+cd:$BBCURSOR\";\n\ elif test -x \"$BBCURSOR\"; then \"$BBCURSOR\";\n\ - read -n1 -p '\n\e[2m...press any key to continue...\e[0m\e[?25l';\n\ -elif file -bi \"$BBCURSOR\" | grep '^text/' >/dev/null; then $EDITOR \"$BBCURSOR\";\n\ + read -n1 -p '\n\033[2m...press any key to continue...\033[0m';\n\ +elif file -bi \"$BBCURSOR\" | grep '^\\(text/\\|inode/empty\\)' >/dev/null; then $EDITOR \"$BBCURSOR\";\n\ else xdg-open \"$BBCURSOR\"; fi", #endif "Open file", NORMAL_TERM}, - {{'f'}, "bb -c \"cursor:`fzf`\"", "Fuzzy search for file", NORMAL_TERM}, - {{'/'}, "bb -c \"cursor:`ls -a|fzf`\"", "Fuzzy select file", NORMAL_TERM}, + {{'f'}, "bb \"+g:`fzf`\"", "Fuzzy search for file", NORMAL_TERM}, + {{'/'}, "bb \"+g:`ls -a|fzf`\"", "Fuzzy select file", NORMAL_TERM}, {{'L'}, PIPE_SELECTION_TO "less", "List all selected files", NORMAL_TERM}, - {{'d'}, "rm -rfi \"$@\"; bb -c 'deselect:*' refresh", "Delete files"}, - {{'D'}, "rm -rf \"$@\"; bb -c 'deselect:*' refresh", "Delete files without confirmation"}, - {{'m'}, "mv -i \"$@\" .; bb -c 'deselect:*' refresh", "Move files to current folder"}, - {{'c'}, "cp -i \"$@\" .; bb -c refresh", "Copy files to current folder"}, - {{'C'}, "for f; do cp \"$f\" \"$f.copy\"; done; bb -c refresh", "Clone files"}, - {{'n'}, "read -p '\e[33;1mNew file:\e[0m \e[K\e[?25h' name && touch \"$name\"; bb -c refresh", "New file"}, - {{'N'}, "read -p '\e[33;1mNew dir:\e[0m \e[K\e[?25h' name && mkdir \"$name\"; bb -c refresh", "New folder"}, - {{'|'}, "read -p '\e[33;1m|>\e[0m \e[K\e[?25h' cmd && " PIPE_SELECTION_TO "$SHELL -c \"$cmd\"" AND_PAUSE " && bb -c refresh", - "Pipe selected files to a command"}, - {{':'}, "read -p '\e[33;1m:>\e[0m \e[K\e[?25h' cmd && $SHELL -c \"$cmd\" -- \"$@\"" AND_PAUSE "&& bb -c refresh", - "Run a command"}, - {{'>'}, "$SHELL", "Open a shell", NORMAL_TERM}, - {{'r'}, "for f; do read -p \"Rename $f: \e[K\e[?25h\" renamed && mv \"$f\" \"$renamed\"; done; " - "bb -c 'deselect:*' refresh", - "Rename files"}, - {{'J'}, "bb -c 'move:x+1'", "Spread selection down"}, - {{'K'}, "bb -c 'move:x-1'", "Spread selection up"}, - {{'s'}, "read -n1 -p '\e[33mSort \e[1m(a)\e[22mlphabetic \e[1m(s)\e[22mize \e[1m(t)\e[22mime " - "\e[1m(p)\e[22mermissions:\e[0m \e[K\e[?25h' sort " - "&& bb -c \"sort:$sort\"", "Sort by..."}, - {{'g', KEY_HOME}, "bb -c move:0", "Go to first file"}, - {{'G', KEY_END}, "bb -c move:999999999", "Go to last file"}, - {{KEY_ESC}, "bb -c 'deselect:*'", "Clear selection"}, - {{KEY_F5, KEY_CTRL_R}, "bb -c refresh", "Refresh"}, - {{KEY_CTRL_A}, "bb -c 'select:*'", "Select all files in current folder"}, - {{KEY_PGDN}, "bb -c 'scroll:+100%'", "Page down"}, - {{KEY_PGUP}, "bb -c 'scroll:-100%'", "Page up"}, - {{KEY_CTRL_D}, "bb -c 'scroll:+50%'", "Half page down"}, - {{KEY_CTRL_U}, "bb -c 'scroll:-50%'", "Half page up"}, - {{KEY_MOUSE_WHEEL_DOWN}, "bb -c 'scroll:+3'", "Scroll down"}, - {{KEY_MOUSE_WHEEL_UP}, "bb -c 'scroll:-3'", "Scroll up"}, + {{'d', KEY_DELETE}, "rm -rfi \"$@\"; bb '+d:*' +r", "Delete files", SHOW_CURSOR}, + {{'D'}, "rm -rf \"$@\"; bb '+d:*' +r", "Delete files without confirmation"}, + {{'M'}, "mv -i \"$@\" .; bb '+d:*' +r", "Move files to current folder", SHOW_CURSOR}, + {{'c'}, "cp -i \"$@\" .; bb +r", "Copy files to current folder", SHOW_CURSOR}, + {{'C'}, "for f; do cp \"$f\" \"$f.copy\"; done; bb +r", "Clone files"}, + {{'n'}, "read -p 'New file: ' name && touch \"$name\"; bb +r", "New file", SHOW_CURSOR}, + {{'N'}, "read -p 'New dir: ' name && mkdir \"$name\"; bb +r", "New folder", SHOW_CURSOR}, + {{'|'}, "read -p '| ' cmd && " PIPE_SELECTION_TO "sh -c \"$cmd\" && " PAUSE "; bb +r", + "Pipe selected files to a command", SHOW_CURSOR}, + {{':'}, "read -p ': ' cmd && sh -c \"$cmd\" -- \"$@\"; " PAUSE "; bb +r", + "Run a command", SHOW_CURSOR}, + {{'>'}, "sh", "Open a shell", NORMAL_TERM}, + {{'m'}, "read -n1 -p 'Mark: ' m && bb \"+mark:$m;$PWD\"", "Set mark", SHOW_CURSOR}, + {{'\''}, "read -n1 -p 'Jump: ' j && bb \"+jump:$j\"", "Jump to mark", SHOW_CURSOR}, + {{'r'}, "for f; do read -p \"Rename $f: \" renamed && mv \"$f\" \"$renamed\"; done; " + "bb '+d:*' +r", + "Rename files", SHOW_CURSOR}, + {{'R'}, "read -p 'Rename pattern: ' patt && " + "for f; do mv -i \"$f\" \"`echo \"$f\" | sed \"$patt\"`\"; done &&" PAUSE, + "Regex rename files", SHOW_CURSOR}, + // TODO debug: + {{'P'}, "read -p 'Select pattern: ' patt && " + "for f; do echo \"$f\" | grep \"$patt\" >/dev/null 2>/dev/null && bb \"+sel:$f\"; done", + "Regex select files"}, + {{'J'}, "bb '+spread:+1'", "Spread selection down"}, + {{'K'}, "bb '+spread:-1'", "Spread selection up"}, + {{'s'}, "read -n1 -p 'Sort \033[1m(a)\033[22mlphabetic " + "\033[1m(s)\033[22mize \033[1m(m)\033[22modification \033[1m(c)\033[22mcreation " + "\033[1m(a)\033[22maccess \033[1m(r)\033[22mandom \033[1m(p)\033[22mermissions:\033[0m ' sort " + "&& bb \"+sort:$sort\"", "Sort by..."}, + {{'#'}, "read -p 'Set columns: ' cols && bb \"+cols:$cols\"", "Set columns"}, + {{'.'}, "bb +dots", "Toggle dotfiles"}, + {{'g', KEY_HOME}, "bb +m:0", "Go to first file"}, + {{'G', KEY_END}, "bb +m:100%n", "Go to last file"}, + {{KEY_ESC}, "bb '+d:*'", "Clear selection"}, + {{KEY_F5, KEY_CTRL_R}, "bb +r", "Refresh"}, + {{KEY_CTRL_A}, "bb '+select:*'", "Select all files in current folder"}, + {{KEY_PGDN}, "bb '+scroll:+100%'", "Page down"}, + {{KEY_PGUP}, "bb '+scroll:-100%'", "Page up"}, + {{KEY_CTRL_D}, "bb '+scroll:+50%'", "Half page down"}, + {{KEY_CTRL_U}, "bb '+scroll:-50%'", "Half page up"}, + {{KEY_MOUSE_WHEEL_DOWN}, "bb '+scroll:+3'", "Scroll down"}, + {{KEY_MOUSE_WHEEL_UP}, "bb '+scroll:-3'", "Scroll up"}, {0}, };