static unsigned scroll_position;
-static int curses_active;
+static bool curses_active;
static pid_t cmd_pid;
static int command_fds[2] = {-1, -1};
enum {GETCH_MODE, COMMAND_MODE, EXTERNAL_MODE};
-#define COLOR_STATUSBAR 52
-#define COLOR_COMMAND 53
-#define COLOR_OUTPUT 54
-#define COLOR_MSG 55
-#define COLOR_ERRMSG 56
-#define COLOR_WELCOME 57
-#define COLOR_SEPARATOR 58
-#define COLOR_TOP 59
-#define COLOR_BOT 60
+/**
+ * Codes for various colors.
+ *
+ * Each status item has its own color pair. The ones defined here start at a
+ * higher number so that they do not overlap with these.
+ */
+enum gui_color_pair {
+ COLOR_STATUSBAR = NUM_STAT_ITEMS + 1,
+ COLOR_COMMAND,
+ COLOR_OUTPUT,
+ COLOR_MSG,
+ COLOR_ERRMSG,
+ COLOR_WELCOME,
+ COLOR_SEPARATOR,
+ COLOR_TOP,
+ COLOR_BOT,
+};
struct gui_command {
const char *key;
if (!curses_active)
return;
def_prog_mode();
- curses_active = 0;
+ curses_active = false;
endwin();
}
/* (Re-)initialize the curses library. */
static void init_curses(void)
{
- curses_active = 1;
+ curses_active = true;
if (top.win && refresh() == ERR) /* refresh is really needed */
msg_n_exit(EXIT_FAILURE, "refresh() failed\n");
if (LINES < theme.lines_min || COLS < theme.cols_min)
for (i = 0; i < conf.key_map_given; ++i) {
s = conf.key_map_arg[i];
if (!(*s))
- goto err_out;
+ goto out;
free(tmp);
tmp = para_strdup(s);
if (!split_key_map(tmp, &handler, &arg))
- goto err_out;
+ goto out;
if (strlen(handler) != 1)
- goto err_out;
+ goto out;
if (*handler != 'x'
&& *handler != 'd'
&& *handler != 'i'
&& *handler != 'p')
- goto err_out;
+ goto out;
if (*handler != 'i')
continue;
if (find_cmd_byname(arg) < 0)
- goto err_out;
+ goto out;
}
ret = 0;
-err_out:
+out:
free(tmp);
return ret;
}
exit(EXIT_FAILURE);
}
init_theme_or_die(conf.theme_arg, &theme);
- top.lines = theme.top_lines_default;
setup_signal_handling();
bot_win_rb = ringbuffer_new(RINGBUFFER_SIZE);
setlocale(LC_CTYPE, "");