From 733916ad70b5b2d92e7adfecdf53a74dd4617b74 Mon Sep 17 00:00:00 2001 From: eylles Date: Fri, 14 Apr 2023 19:45:39 +0000 Subject: add a pick quit keybind (#432) The last time[0] this was discussed, no-one was against it but no-one was confident in it either and so it was added to nsxiv-extra as a patch. But now that enough time has passed, it seems like there's a pretty high demand for something like this because there's plenty of use-cases that use nsxiv as a "picker" where it's meant to quickly pick a single file. And so add this as a convenient default key-bind. [0]: https://codeberg.org/nsxiv/nsxiv-record/pulls/42 Co-authored-by: eylles Co-authored-by: NRK Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/432 Reviewed-by: NRK Co-authored-by: eylles Co-committed-by: eylles --- commands.c | 7 +++++++ commands.h | 2 ++ config.def.h | 1 + etc/nsxiv.1 | 4 ++++ 4 files changed, 14 insertions(+) diff --git a/commands.c b/commands.c index 7c44ace..97cadf2 100644 --- a/commands.c +++ b/commands.c @@ -59,6 +59,13 @@ bool cg_quit(arg_t status) return None; /* silence tcc warning */ } +bool cg_pick_quit(arg_t status) +{ + if (options->to_stdout && markcnt == 0) + printf("%s%c", files[fileidx].name, options->using_null ? '\0' : '\n'); + return cg_quit(status); +} + bool cg_switch_mode(arg_t _) { if (mode == MODE_IMAGE) { diff --git a/commands.h b/commands.h index 76b1330..4e694f0 100644 --- a/commands.h +++ b/commands.h @@ -12,6 +12,7 @@ bool cg_n_or_last(arg_t); bool cg_navigate_marked(arg_t); bool cg_prefix_external(arg_t); bool cg_quit(arg_t); +bool cg_pick_quit(arg_t); bool cg_reload_image(arg_t); bool cg_remove_image(arg_t); bool cg_reverse_marks(arg_t); @@ -57,6 +58,7 @@ bool ct_select(arg_t); #define g_navigate_marked { cg_navigate_marked, MODE_ALL } #define g_prefix_external { cg_prefix_external, MODE_ALL } #define g_quit { cg_quit, MODE_ALL } +#define g_pick_quit { cg_pick_quit, MODE_ALL } #define g_reload_image { cg_reload_image, MODE_ALL } #define g_remove_image { cg_remove_image, MODE_ALL } #define g_reverse_marks { cg_reverse_marks, MODE_ALL } diff --git a/config.def.h b/config.def.h index a0935f6..5d4e97a 100644 --- a/config.def.h +++ b/config.def.h @@ -92,6 +92,7 @@ static const KeySym KEYHANDLER_ABORT = XK_Escape; static const keymap_t keys[] = { /* modifiers key function argument */ { 0, XK_q, g_quit, 0 }, + { 0, XK_Q, g_pick_quit, 0 }, { 0, XK_Return, g_switch_mode, None }, { 0, XK_f, g_toggle_fullscreen, None }, { 0, XK_b, g_toggle_bar, None }, diff --git a/etc/nsxiv.1 b/etc/nsxiv.1 index a75a0a0..10f131a 100644 --- a/etc/nsxiv.1 +++ b/etc/nsxiv.1 @@ -135,6 +135,10 @@ Prefix the next command with a number (denoted via .B q Quit nsxiv. .TP +.B Q +Quit nsxiv, but additionally print the current filename when \-o is active and +no files have been marked. +.TP .B Return Switch to thumbnail mode / open selected image in image mode. .TP -- cgit v1.2.3-54-g00ecf