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:
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