diff options
| -rw-r--r-- | README.md (renamed from README) | 12 | ||||
| -rw-r--r-- | cmdtree.c | 1 | ||||
| -rw-r--r-- | command.c | 20 |
3 files changed, 25 insertions, 8 deletions
@@ -2,14 +2,16 @@ cmdtree ======= + + cmdtree is a command launcher in the form of a trie. Commands are launched by a sequence of keys that form a path in this trie. Configuring cmdtree is easy (this format is still WIP): -~/.cmdtreerc or ~/.config/cmdtree/cmdtreerc: +`~/.cmdtreerc` or `~/.config/cmdtree/cmdtreerc`: -(a application - (b chrome --force-device-scale-factor=1.25) - (e emacs) -)
\ No newline at end of file + (a application + (b chrome --force-device-scale-factor=1.25) + (e emacs) + ) @@ -257,6 +257,7 @@ draw_tree(Drw *drw, int x, int y, int w, int h) { static void cleanup(Drw *drw, int code) { drw_free(drw); + tal_free(rootcmds); exit(0); } @@ -4,6 +4,8 @@ #include "ccan/tal/tal.h" #include "ccan/tal/str/str.h" +#include "util.h" + void command_init(struct command *cmd) { cmd->children = NULL; @@ -15,6 +17,12 @@ command_is_prefix(struct command *cmd) { return count > 0; } +static const struct command examples[] = { + { .bind = "f", .name = "firefox" }, + { .bind = "m", .name = "misc" }, + { .bind = "e", .name = "spacemacs" }, + { .bind = "N", .name = "networking" }, +}; struct command * test_root_commands(tal_t *ctx) { @@ -22,12 +30,18 @@ test_root_commands(tal_t *ctx) { struct command *cmds = NULL; struct command *child = NULL; - cmds = tal_arr(ctx, struct command, 5); + cmds = tal_arr(ctx, struct command, 10); const unsigned long c = 'a'; for (i = 0; i < tal_count(cmds); i++) { - cmds[i].name = tal_fmt(cmds, "hello-%d", (int)i); - cmds[i].bind = tal_fmt(cmds, "%c", (int)(c+i)); + if (i < LENGTH(examples)) { + cmds[i].name = examples[i].name; + cmds[i].bind = examples[i].bind; + } + else { + cmds[i].name = tal_fmt(cmds, "example-%d", (int)i); + cmds[i].bind = tal_fmt(cmds, "%c", (int)(c+i)); + } child = cmds[i].children = tal_arr(cmds, struct command, i % 2); for (j = 0; j < tal_count(child); j++) { child[j].name = tal_fmt(child, "child-%d-%d", (int)i, (int)j); |
