aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2019-05-25 20:56:38 -0700
committerBruce Hill <bruce@bruce-hill.com>2019-05-25 20:56:38 -0700
commit7c3a23bbee378b60ac63fe7bfba936650c36798d (patch)
tree7177a6bf5711586d335e6f5cffa8b4dfbde07b2a
parentc9bb7f49441d632cf3e45b2f81ee3646fa1def15 (diff)
Default config wasn't keeping up.
-rw-r--r--config.def.h134
1 files 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 "<your script>"`
////////////////////////////////////////////////////////////////////////
-
{{'?'}, "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},
};