From f3c4cec24a6bed55eb81ca9e4fb824db2afe951b Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch Date: Thu, 23 Dec 2021 20:36:00 +0100 Subject: Add and bind an action to center the cursor "z" stands for VIM's "zz". --- nncmpp.actions | 1 + nncmpp.c | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/nncmpp.actions b/nncmpp.actions index 2fde391..06ac727 100644 --- a/nncmpp.actions +++ b/nncmpp.actions @@ -42,6 +42,7 @@ INCREMENTAL_SEARCH, Incremental search SCROLL_UP, Scroll up SCROLL_DOWN, Scroll down +CENTER_CURSOR, Center the cursor MOVE_UP, Move selection up MOVE_DOWN, Move selection down diff --git a/nncmpp.c b/nncmpp.c index 3e4383b..d915d24 100644 --- a/nncmpp.c +++ b/nncmpp.c @@ -2212,6 +2212,19 @@ app_ensure_selection_visible (void) app_scroll (too_low); } +static bool +app_center_cursor (void) +{ + struct tab *tab = g.active_tab; + if (tab->item_selected < 0 || !tab->item_count) + return false; + + int offset = tab->item_selected - tab->item_top; + int target = app_visible_items () / 2; + app_scroll (offset - target); + return true; +} + static bool app_move_selection (int diff) { @@ -2509,9 +2522,10 @@ app_process_action (enum action action) case ACTION_PULSE_MUTE: return pulse_volume_mute (&g.pulse); #endif // WITH_PULSE - // XXX: these should rather be parametrized + // XXX: these two should rather be parametrized case ACTION_SCROLL_UP: return app_scroll (-3); - case ACTION_SCROLL_DOWN: return app_scroll (3); + case ACTION_SCROLL_DOWN: return app_scroll (+3); + case ACTION_CENTER_CURSOR: return app_center_cursor (); case ACTION_GOTO_TOP: if (tab->item_count) @@ -2737,6 +2751,7 @@ g_normal_defaults[] = { "C-f", ACTION_GOTO_PAGE_NEXT }, { "C-y", ACTION_SCROLL_UP }, { "C-e", ACTION_SCROLL_DOWN }, + { "z", ACTION_CENTER_CURSOR }, { "H", ACTION_GOTO_VIEW_TOP }, { "M", ACTION_GOTO_VIEW_CENTER }, -- cgit v1.2.3-70-g09d2