diff options
-rw-r--r-- | doc/imv.1.txt | 4 | ||||
-rw-r--r-- | src/imv.c | 27 |
2 files changed, 31 insertions, 0 deletions
diff --git a/doc/imv.1.txt b/doc/imv.1.txt index 6ea53ee..0bf36a7 100644 --- a/doc/imv.1.txt +++ b/doc/imv.1.txt @@ -88,6 +88,10 @@ Commands can be entered by pressing *:*. imv supports the following commands: Zoom into the image by the given amount. Negative values zoom out. 'actual' resets the zoom to 100%, showing the image at its actual size. +*open* [-r] <paths ...>:: + Add the given paths to the list of open images. If the '-r' option is + specified, do so recursively. Shell expansions may be used. + *close*:: Close the currently selected image. @@ -101,6 +101,7 @@ void command_pan(struct list *args, const char *argstr, void *data); void command_select_rel(struct list *args, const char *argstr, void *data); void command_select_abs(struct list *args, const char *argstr, void *data); void command_zoom(struct list *args, const char *argstr, void *data); +void command_open(struct list *args, const char *argstr, void *data); void command_close(struct list *args, const char *argstr, void *data); void command_fullscreen(struct list *args, const char *argstr, void *data); void command_overlay(struct list *args, const char *argstr, void *data); @@ -190,6 +191,7 @@ struct imv *imv_create(void) imv_command_register(imv->commands, "select_rel", &command_select_rel); imv_command_register(imv->commands, "select_abs", &command_select_abs); imv_command_register(imv->commands, "zoom", &command_zoom); + imv_command_register(imv->commands, "open", &command_open); imv_command_register(imv->commands, "close", &command_close); imv_command_register(imv->commands, "fullscreen", &command_fullscreen); imv_command_register(imv->commands, "overlay", &command_overlay); @@ -1118,6 +1120,31 @@ void command_zoom(struct list *args, const char *argstr, void *data) } } +void command_open(struct list *args, const char *argstr, void *data) +{ + (void)argstr; + struct imv *imv = data; + bool recursive = imv->recursive_load; + + update_env_vars(imv); + for (size_t i = 1; i < args->len; ++i) { + + /* allow -r arg to specify recursive */ + if (i == 1 && !strcmp(args->items[i], "-r")) { + recursive = true; + continue; + } + + wordexp_t word; + if(wordexp(args->items[i], &word, 0) == 0) { + for(size_t j = 0; j < word.we_wordc; ++j) { + imv_navigator_add(imv->navigator, word.we_wordv[j], recursive); + } + wordfree(&word); + } + } +} + void command_close(struct list *args, const char *argstr, void *data) { (void)args; |