tweaks: elide an unneeded global variable

The constant cursor display must be suppressed whenever a message
was printed to the status bar.  That is: whenever 'lastmessage' is
something other than 'VACUUM'.
master
Benno Schulenberg 2020-07-03 09:32:25 +02:00
parent 80ff5e76d6
commit 2e6886406c
7 changed files with 18 additions and 32 deletions

View File

@ -70,9 +70,6 @@ bool as_an_at = TRUE;
bool control_C_was_pressed = FALSE; bool control_C_was_pressed = FALSE;
/* Whether Ctrl+C was pressed (when a keyboard interrupt is enabled). */ /* Whether Ctrl+C was pressed (when a keyboard interrupt is enabled). */
bool suppress_cursorpos = FALSE;
/* Should we skip constant position display for current keystroke? */
message_type lastmessage = HUSH; message_type lastmessage = HUSH;
/* Messages of type HUSH should not overwrite type MILD nor ALERT. */ /* Messages of type HUSH should not overwrite type MILD nor ALERT. */

View File

@ -178,7 +178,7 @@ void show_help(void)
edit_refresh(); edit_refresh();
while (TRUE) { while (TRUE) {
lastmessage = HUSH; lastmessage = VACUUM;
focusing = TRUE; focusing = TRUE;
/* Show the cursor when we searched and found something. */ /* Show the cursor when we searched and found something. */

View File

@ -944,7 +944,7 @@ RETSIGTYPE do_suspend(int signal)
fflush(stdout); fflush(stdout);
/* The suspend keystroke must not elicit cursor-position display. */ /* The suspend keystroke must not elicit cursor-position display. */
suppress_cursorpos=TRUE; lastmessage = HUSH;
#ifdef SIGSTOP #ifdef SIGSTOP
/* Do what mutt does: send ourselves a SIGSTOP. */ /* Do what mutt does: send ourselves a SIGSTOP. */
@ -2481,13 +2481,13 @@ int main(int argc, char **argv)
if (currmenu != MMAIN) if (currmenu != MMAIN)
bottombars(MMAIN); bottombars(MMAIN);
lastmessage = VACUUM;
as_an_at = TRUE;
/* Update the displayed current cursor position only when there /* Update the displayed current cursor position only when there
* are no keys waiting in the input buffer. */ * are no keys waiting in the input buffer. */
if (ISSET(CONSTANT_SHOW) && get_key_buffer_len() == 0) if (ISSET(CONSTANT_SHOW) && get_key_buffer_len() == 0)
do_cursorpos(FALSE); report_cursor_position();
lastmessage = VACUUM;
as_an_at = TRUE;
/* Refresh just the cursor position or the entire edit window. */ /* Refresh just the cursor position or the entire edit window. */
if (!refresh_needed) { if (!refresh_needed) {

View File

@ -48,8 +48,6 @@ extern bool as_an_at;
extern bool control_C_was_pressed; extern bool control_C_was_pressed;
extern bool suppress_cursorpos;
extern message_type lastmessage; extern message_type lastmessage;
extern linestruct *pletion_line; extern linestruct *pletion_line;
@ -636,7 +634,7 @@ void edit_refresh(void);
void adjust_viewport(update_type manner); void adjust_viewport(update_type manner);
void full_refresh(void); void full_refresh(void);
void draw_all_subwindows(void); void draw_all_subwindows(void);
void do_cursorpos(bool force); void report_cursor_position(void);
void do_cursorpos_void(void); void do_cursorpos_void(void);
void spotlight(size_t from_col, size_t to_col); void spotlight(size_t from_col, size_t to_col);
#ifndef NANO_TINY #ifndef NANO_TINY

View File

@ -307,10 +307,10 @@ int findnextstr(const char *needle, bool whole_word_only, int modus,
if (match_len != NULL) if (match_len != NULL)
*match_len = found_len; *match_len = found_len;
/* Wipe the "Searching..." message and unset the suppression flag. */ /* Wipe the "Searching..." message and unsuppress cursor-position display. */
if (feedback > 0) { if (feedback > 0) {
wipe_statusbar(); wipe_statusbar();
suppress_cursorpos = FALSE; lastmessage = VACUUM;
} }
return 1; return 1;

View File

@ -3018,7 +3018,7 @@ void do_verbatim_input(void)
/* Unsuppress cursor-position display or blank the status bar. */ /* Unsuppress cursor-position display or blank the status bar. */
if (ISSET(CONSTANT_SHOW)) if (ISSET(CONSTANT_SHOW))
suppress_cursorpos = FALSE; lastmessage = VACUUM;
else else
wipe_statusbar(); wipe_statusbar();

View File

@ -2117,9 +2117,8 @@ void titlebar(const char *path)
wrefresh(topwin); wrefresh(topwin);
} }
/* Display a message on the status bar, and set suppress_cursorpos to /* Display the given message on the status bar, but only if its importance
* TRUE, so that the message won't be immediately overwritten if * is higher than that of a message that is already there. */
* constant cursor position display is on. */
void statusline(message_type importance, const char *msg, ...) void statusline(message_type importance, const char *msg, ...)
{ {
va_list ap; va_list ap;
@ -2203,8 +2202,6 @@ void statusline(message_type importance, const char *msg, ...)
/* Push the message to the screen straightaway. */ /* Push the message to the screen straightaway. */
wrefresh(bottomwin); wrefresh(bottomwin);
suppress_cursorpos = TRUE;
#ifndef NANO_TINY #ifndef NANO_TINY
if (old_whitespace) if (old_whitespace)
SET(WHITESPACE_DISPLAY); SET(WHITESPACE_DISPLAY);
@ -3362,21 +3359,17 @@ void draw_all_subwindows(void)
bottombars(currmenu); bottombars(currmenu);
} }
/* Show info about the current cursor position on the status bar. /* Display details about the current cursor position on the status bar. */
* Do this unconditionally when force is TRUE; otherwise, only if void report_cursor_position(void)
* suppress_cursorpos is FALSE. In any case, reset the latter. */
void do_cursorpos(bool force)
{ {
char saved_byte; char saved_byte;
size_t sum, cur_xpt = xplustabs() + 1; size_t sum, cur_xpt = xplustabs() + 1;
size_t cur_lenpt = breadth(openfile->current->data) + 1; size_t cur_lenpt = breadth(openfile->current->data) + 1;
int linepct, colpct, charpct; int linepct, colpct, charpct;
/* If the showing needs to be suppressed, don't suppress it next time. */ /* If there is a message on the status bar, do not overwrite it. */
if (suppress_cursorpos && !force) { if (lastmessage != VACUUM)
suppress_cursorpos = FALSE;
return; return;
}
/* Determine the size of the file up to the cursor. */ /* Determine the size of the file up to the cursor. */
saved_byte = openfile->current->data[openfile->current_x]; saved_byte = openfile->current->data[openfile->current_x];
@ -3395,15 +3388,13 @@ void do_cursorpos(bool force)
_("line %zd/%zd (%d%%), col %zu/%zu (%d%%), char %zu/%zu (%d%%)"), _("line %zd/%zd (%d%%), col %zu/%zu (%d%%), char %zu/%zu (%d%%)"),
openfile->current->lineno, openfile->filebot->lineno, linepct, openfile->current->lineno, openfile->filebot->lineno, linepct,
cur_xpt, cur_lenpt, colpct, sum, openfile->totsize, charpct); cur_xpt, cur_lenpt, colpct, sum, openfile->totsize, charpct);
/* Displaying the cursor position should not suppress it next time. */
suppress_cursorpos = FALSE;
} }
/* Unconditionally display the current cursor position. */ /* Unconditionally display the current cursor position. */
void do_cursorpos_void(void) void do_cursorpos_void(void)
{ {
do_cursorpos(TRUE); lastmessage = VACUUM;
report_cursor_position();
} }
void disable_waiting(void) void disable_waiting(void)