Commit Diff


commit - bd9637e938b96d3a106d7485e06b9038f3d4ff6d
commit + 7953dd72f2ae7656bba16f20d0a2b71aa5a58e0a
blob - a2844d444617fab46217144ffe13239aca67907e
blob + 2ae33590a90818482501da4e403fc41e1ea8b163
--- ui.c
+++ ui.c
@@ -62,6 +62,7 @@
 #include <event.h>
 #include <locale.h>
 #include <signal.h>
+#include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -96,6 +97,7 @@ static int		 hardwrap_text(struct tab*, struct line*);
 static int		 wrap_page(struct tab*);
 static void		 print_line(struct line*);
 static void		 redraw_tab(struct tab*);
+static void		 message(const char*, ...) __attribute__((format(printf, 1, 2)));
 
 typedef void (*interactivefn)(int);
 
@@ -288,15 +290,7 @@ cmd_kill_telescope(int k)
 static void
 cmd_unbound(int k)
 {
-	if (clminibufev_set)
-		evtimer_del(&clminibufev);
-	evtimer_set(&clminibufev, handle_clear_minibuf, NULL);
-	evtimer_add(&clminibufev, &clminibufev_timer);
-	clminibufev_set = 1;
-
-	werase(minibuf);
-	wprintw(minibuf, "%c is undefined", k);
-	restore_cursor(current_tab());
+	message("%c is undefined", k);
 }
 
 static struct line *
@@ -664,8 +658,30 @@ redraw_tab(struct tab *tab)
 	wrefresh(tabline);
 	wrefresh(modeline);
 	wrefresh(minibuf);
+
+	wrefresh(body);
+}
+
+static void
+message(const char *fmt, ...)
+{
+	va_list ap;
 
+	va_start(ap, fmt);
+
+	if (clminibufev_set)
+		evtimer_del(&clminibufev);
+	evtimer_set(&clminibufev, handle_clear_minibuf, NULL);
+	evtimer_add(&clminibufev, &clminibufev_timer);
+	clminibufev_set = 1;
+
+	werase(minibuf);
+	vw_printw(minibuf, fmt, ap);
+
+	wrefresh(minibuf);
 	wrefresh(body);
+
+	va_end(ap);
 }
 
 int