From cf498e5b9a73329edea0bdbf1bd8dfe06fdd75e2 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 6 Feb 2015 19:28:09 -0800 Subject: [PATCH] Remove no-longer-used cursor_in_echo_area code * dispnew.c (set_window_cursor_after_update, update_frame_1): Remove checks for negative cursor_in_echo_area, since this var is a boolean, and has been a boolean for some time. Simplify. * dispnew.c (init_display): * xdisp.c (message3_nolog, vmessage): Use bool for boolean. --- src/ChangeLog | 9 ++++ src/dispnew.c | 135 ++++++++++++++++++++------------------------------ src/xdisp.c | 4 +- 3 files changed, 66 insertions(+), 82 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 15d8d27a921..cd72f98c116 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2015-02-07 Paul Eggert + + Remove no-longer-used cursor_in_echo_area code + * dispnew.c (set_window_cursor_after_update, update_frame_1): + Remove checks for negative cursor_in_echo_area, since this var is + a boolean, and has been a boolean for some time. Simplify. + * dispnew.c (init_display): + * xdisp.c (message3_nolog, vmessage): Use bool for boolean. + 2015-02-05 Stefan Monnier * eval.c (Ffunction): Handle the new (:documentation ...) form. diff --git a/src/dispnew.c b/src/dispnew.c index 3c8117e6b65..a1782913154 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -3904,45 +3904,35 @@ set_window_cursor_after_update (struct window *w) { cx = cy = vpos = hpos = 0; - if (cursor_in_echo_area >= 0) + /* If the mini-buffer is several lines high, find the last + line that has any text on it. Note: either all lines + are enabled or none. Otherwise we wouldn't be able to + determine Y. */ + struct glyph_row *last_row = NULL; + int yb = window_text_bottom_y (w); + + for (struct glyph_row *row = w->current_matrix->rows; + row->enabled_p && (!last_row || MATRIX_ROW_BOTTOM_Y (row) <= yb); + row++) + if (row->used[TEXT_AREA] && row->glyphs[TEXT_AREA][0].charpos >= 0) + last_row = row; + + if (last_row) { - /* If the mini-buffer is several lines high, find the last - line that has any text on it. Note: either all lines - are enabled or none. Otherwise we wouldn't be able to - determine Y. */ - struct glyph_row *row, *last_row; - struct glyph *glyph; - int yb = window_text_bottom_y (w); - - last_row = NULL; - row = w->current_matrix->rows; - while (row->enabled_p - && (last_row == NULL - || MATRIX_ROW_BOTTOM_Y (row) <= yb)) - { - if (row->used[TEXT_AREA] - && row->glyphs[TEXT_AREA][0].charpos >= 0) - last_row = row; - ++row; - } + struct glyph *start = last_row->glyphs[TEXT_AREA]; + struct glyph *last = start + last_row->used[TEXT_AREA] - 1; - if (last_row) - { - struct glyph *start = last_row->glyphs[TEXT_AREA]; - struct glyph *last = start + last_row->used[TEXT_AREA] - 1; - - while (last > start && last->charpos < 0) - --last; + while (last > start && last->charpos < 0) + --last; - for (glyph = start; glyph < last; ++glyph) - { - cx += glyph->pixel_width; - ++hpos; - } - - cy = last_row->y; - vpos = MATRIX_ROW_VPOS (last_row, w->current_matrix); + for (struct glyph *glyph = start; glyph < last; glyph++) + { + cx += glyph->pixel_width; + hpos++; } + + cy = last_row->y; + vpos = MATRIX_ROW_VPOS (last_row, w->current_matrix); } } else @@ -4557,58 +4547,43 @@ update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p, && EQ (FRAME_MINIBUF_WINDOW (f), echo_area_window)) { int top = WINDOW_TOP_EDGE_LINE (XWINDOW (FRAME_MINIBUF_WINDOW (f))); - int row, col; + int col; - if (cursor_in_echo_area < 0) + /* Put cursor at the end of the prompt. If the mini-buffer + is several lines high, find the last line that has + any text on it. */ + int row = FRAME_TOTAL_LINES (f); + do { - /* Negative value of cursor_in_echo_area means put - cursor at beginning of line. */ - row = top; + row--; col = 0; - } - else - { - /* Positive value of cursor_in_echo_area means put - cursor at the end of the prompt. If the mini-buffer - is several lines high, find the last line that has - any text on it. */ - row = FRAME_TOTAL_LINES (f); - do - { - --row; - col = 0; - if (MATRIX_ROW_ENABLED_P (current_matrix, row)) - { - /* Frame rows are filled up with spaces that - must be ignored here. */ - struct glyph_row *r = MATRIX_ROW (current_matrix, - row); - struct glyph *start = r->glyphs[TEXT_AREA]; - struct glyph *last = start + r->used[TEXT_AREA]; - - while (last > start - && (last - 1)->charpos < 0) - --last; - - col = last - start; - } + if (MATRIX_ROW_ENABLED_P (current_matrix, row)) + { + /* Frame rows are filled up with spaces that + must be ignored here. */ + struct glyph_row *r = MATRIX_ROW (current_matrix, row); + struct glyph *start = r->glyphs[TEXT_AREA]; + + col = r->used[TEXT_AREA]; + while (0 < col && start[col - 1].charpos < 0) + col--; } - while (row > top && col == 0); + } + while (row > top && col == 0); - /* Make sure COL is not out of range. */ - if (col >= FRAME_CURSOR_X_LIMIT (f)) + /* Make sure COL is not out of range. */ + if (col >= FRAME_CURSOR_X_LIMIT (f)) + { + /* If we have another row, advance cursor into it. */ + if (row < FRAME_TOTAL_LINES (f) - 1) { - /* If we have another row, advance cursor into it. */ - if (row < FRAME_TOTAL_LINES (f) - 1) - { - col = FRAME_LEFT_SCROLL_BAR_COLS (f); - row++; - } - /* Otherwise move it back in range. */ - else - col = FRAME_CURSOR_X_LIMIT (f) - 1; + col = FRAME_LEFT_SCROLL_BAR_COLS (f); + row++; } + /* Otherwise move it back in range. */ + else + col = FRAME_CURSOR_X_LIMIT (f) - 1; } cursor_to (f, row, col); @@ -5954,7 +5929,7 @@ init_display (void) space_glyph.charpos = -1; inverse_video = 0; - cursor_in_echo_area = 0; + cursor_in_echo_area = false; /* Now is the time to initialize this; it's used by init_sys_modes during startup. */ diff --git a/src/xdisp.c b/src/xdisp.c index 5c3e641fdfe..ef9d72d5ab9 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -10116,7 +10116,7 @@ message3_nolog (Lisp_Object m) fwrite (SDATA (s), SBYTES (s), 1, stderr); } - if (cursor_in_echo_area == 0) + if (!cursor_in_echo_area) fprintf (stderr, "\n"); fflush (stderr); } @@ -10258,7 +10258,7 @@ vmessage (const char *m, va_list ap) putc ('\n', stderr); noninteractive_need_newline = 0; vfprintf (stderr, m, ap); - if (cursor_in_echo_area == 0) + if (!cursor_in_echo_area) fprintf (stderr, "\n"); fflush (stderr); } -- 2.39.2