commit - bc10f6a5fcbae63627490a4c11e13a34b1c2525a
commit + e9af06b91e424e5ef64da7a61c44ac01ba67349c
blob - 9b67c46604da51226b59254c1a21b435da43d1eb
blob + 2a9e2350e61818e24087535ceb167bcf2cf15d05
--- ui.c
+++ ui.c
static void redraw_help(void);
static void redraw_body(struct tab*);
static void redraw_modeline(struct tab*);
-static void redraw_echoarea(void);
+static void redraw_minibuffer(void);
+static void do_redraw_echoarea(void);
+static void do_redraw_minibuffer(void);
static void redraw_tab(struct tab*);
static void emit_help_item(char*, void*);
static void rec_compute_help(struct kmap*, char*, size_t);
free(ministate.curmesg);
ministate.curmesg = NULL;
- redraw_echoarea();
+ redraw_minibuffer();
if (in_minibuffer) {
wrefresh(body);
wrefresh(echoarea);
}
static void
-redraw_echoarea(void)
+redraw_minibuffer(void)
{
- struct tab *tab;
- size_t off_y, off_x = 0;
- char *start = NULL, *c = NULL;
-
- /* unused, but set by getyx */
- (void)off_y;
-
wattr_on(echoarea, minibuffer_face.background, NULL);
werase(echoarea);
- if (in_minibuffer) {
- mvwprintw(echoarea, 0, 0, "%s", ministate.prompt);
- if (ministate.hist_cur != NULL)
- wprintw(echoarea, "(%zu/%zu) ",
- ministate.hist_off + 1,
- ministate.history->len);
-
- getyx(echoarea, off_y, off_x);
+ if (in_minibuffer)
+ do_redraw_minibuffer();
+ else
+ do_redraw_echoarea();
- start = ministate.hist_cur != NULL
- ? ministate.hist_cur->h
- : ministate.buf;
- c = utf8_nth(ministate.buffer.current_line->line,
- ministate.buffer.cpoff);
- while (utf8_swidth_between(start, c) > (size_t)COLS/2) {
- start = utf8_next_cp(start);
- }
+ wattr_off(echoarea, minibuffer_face.background, NULL);
+}
- waddstr(echoarea, start);
- }
+static void
+do_redraw_echoarea(void)
+{
+ struct tab *tab;
if (ministate.curmesg != NULL)
- wprintw(echoarea, in_minibuffer ? " [%s]" : "%s",
- ministate.curmesg);
-
- if (!in_minibuffer && ministate.curmesg == NULL)
+ wprintw(echoarea, "%s", ministate.curmesg);
+ else if (*keybuf != '\0')
waddstr(echoarea, keybuf);
-
- /* If nothing else, show the URL at point */
- if (!in_minibuffer && ministate.curmesg == NULL && *keybuf == '\0') {
+ else {
+ /* If nothing else, show the URL at point */
tab = current_tab();
if (tab->buffer.current_line != NULL &&
tab->buffer.current_line->parent->type == LINE_LINK)
waddstr(echoarea, tab->buffer.current_line->parent->alt);
}
+}
- if (in_minibuffer)
- wmove(echoarea, 0, off_x + utf8_swidth_between(start, c));
+static void
+do_redraw_minibuffer(void)
+{
+ size_t off_y, off_x = 0;
+ const char *start, *c;
- wattr_off(echoarea, minibuffer_face.background, NULL);
+ /* unused, set by getyx */
+ (void)off_y;
+
+ mvwprintw(echoarea, 0, 0, "%s", ministate.prompt);
+ if (ministate.hist_cur != NULL)
+ wprintw(echoarea, "(%zu/%zu) ",
+ ministate.hist_off + 1,
+ ministate.history->len);
+
+ getyx(echoarea, off_y, off_x);
+
+ start = ministate.hist_cur != NULL
+ ? ministate.hist_cur->h
+ : ministate.buf;
+ c = utf8_nth(ministate.buffer.current_line->line,
+ ministate.buffer.cpoff);
+ while (utf8_swidth_between(start, c) > (size_t)COLS/2) {
+ start = utf8_next_cp(start);
+ }
+
+ waddstr(echoarea, start);
+
+ if (ministate.curmesg != NULL)
+ wprintw(echoarea, " [%s]", ministate.curmesg);
+
+ wmove(echoarea, 0, off_x + utf8_swidth_between(start, c));
}
static void
redraw_tabline();
redraw_body(tab);
redraw_modeline(tab);
- redraw_echoarea();
+ redraw_minibuffer();
wnoutrefresh(tabline);
wnoutrefresh(modeline);
ministate.curmesg = NULL;
}
- redraw_echoarea();
+ redraw_minibuffer();
if (in_minibuffer) {
wrefresh(body);
wrefresh(echoarea);