nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit caef3128ebcb252b96ea97c2f0b8176cf8a809a2
parent 856a6ecde33726a00d02c1633b0da7af9665ebd3
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Sat, 12 Dec 2020 14:50:20 +0100

search: suppress the cursor when highlighting a match

Having a block cursor present when highlighting a match...
does not look nice.  So... hide the cursor until the next
keystroke, unless --showcursor or 'set showcursor' is used.

Diffstat:
Msrc/global.c | 2++
Msrc/help.c | 3+++
Msrc/nano.c | 1+
Msrc/prototypes.h | 1+
Msrc/search.c | 2++
Msrc/winio.c | 2+-
6 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/global.c b/src/global.c @@ -80,6 +80,8 @@ linestruct *pletion_line = NULL; bool also_the_last = FALSE; /* Whether indenting/commenting should include the last line of * the marked region. */ +bool hide_cursor = FALSE; + /* Whether to suppress the cursor when highlighting a search match. */ char *answer = NULL; /* The answer string used by the status-bar prompt. */ diff --git a/src/help.c b/src/help.c @@ -457,6 +457,9 @@ void show_help(void) /* Show the cursor when we searched and found something. */ kbinput = get_kbinput(edit, didfind == 1 || ISSET(SHOW_CURSOR)); + + openfile->mark = NULL; + hide_cursor = FALSE; didfind = 0; #ifndef NANO_TINY diff --git a/src/nano.c b/src/nano.c @@ -1514,6 +1514,7 @@ void process_a_keystroke(void) input = get_kbinput(edit, VISIBLE); lastmessage = VACUUM; + hide_cursor = FALSE; #ifndef NANO_TINY if (input == KEY_WINCH) diff --git a/src/prototypes.h b/src/prototypes.h @@ -53,6 +53,7 @@ extern message_type lastmessage; extern linestruct *pletion_line; extern bool also_the_last; +extern bool hide_cursor; extern char *answer; diff --git a/src/search.c b/src/search.c @@ -327,6 +327,8 @@ int findnextstr(const char *needle, bool whole_word_only, int modus, openfile->mark = line; openfile->mark_x = found_x + found_len; openfile->softmark = TRUE; + if (!ISSET(SHOW_CURSOR)) + hide_cursor = TRUE; shift_held = TRUE; } #endif diff --git a/src/winio.c b/src/winio.c @@ -181,7 +181,7 @@ void read_keys_from(WINDOW *win) /* Before reading the first keycode, display any pending screen updates. */ doupdate(); - if (reveal_cursor) + if (reveal_cursor && !hide_cursor) curs_set(1); #ifndef NANO_TINY