commit - e19f9a04d781d46a073ae625c4d0bfac189468a5
commit + a329982b3e1cf608242838fb0377b426235d468e
blob - 73785e7b21e2ca05a0dfa915b15aa99db3aa4402
blob + fb0015c8306f49df4eabe2e334d26b4ef06c4696
--- ui.c
+++ ui.c
static void cmd_next_line(struct tab*);
static void cmd_forward_char(struct tab*);
static void cmd_backward_char(struct tab*);
+static void cmd_move_beginning_of_line(struct tab*);
+static void cmd_move_end_of_line(struct tab*);
static void cmd_redraw(struct tab*);
static void cmd_scroll_line_down(struct tab*);
static void cmd_scroll_line_up(struct tab*);
global_set_key("C-n", cmd_next_line);
global_set_key("C-f", cmd_forward_char);
global_set_key("C-b", cmd_backward_char);
+ global_set_key("C-a", cmd_move_beginning_of_line);
+ global_set_key("C-e", cmd_move_end_of_line);
global_set_key("M-v", cmd_scroll_up);
global_set_key("C-v", cmd_scroll_down);
global_set_key("j", cmd_next_line);
global_set_key("l", cmd_forward_char);
global_set_key("h", cmd_backward_char);
+ global_set_key("^", cmd_move_beginning_of_line);
+ global_set_key("$", cmd_move_end_of_line);
global_set_key("K", cmd_scroll_line_up);
global_set_key("J", cmd_scroll_line_down);
cmd_backward_char(struct tab *tab)
{
tab->s->curs_x = MAX(0, tab->s->curs_x-1);
+ restore_cursor(tab);
+}
+
+static void
+cmd_move_beginning_of_line(struct tab *tab)
+{
+ tab->s->curs_x = 0;
+ restore_cursor(tab);
+}
+
+static void
+cmd_move_end_of_line(struct tab *tab)
+{
+ struct line *line;
+ size_t off;
+
+ off = tab->s->line_off + tab->s->curs_y;
+ if (off >= tab->s->line_max) {
+ tab->s->curs_x = 0;
+ goto end;
+ }
+
+ line = nth_line(tab, off);
+ if (line->line != NULL)
+ tab->s->curs_x = strlen(line->line);
+ else
+ tab->s->curs_x = 0;
+
+ /* TODO: don't hardcode these numbers here. */
+ switch (line->type) {
+ case LINE_PRE_START:
+ case LINE_PRE_END:
+ tab->s->curs_x += 3;
+ break;
+ case LINE_LINK:
+ tab->s->curs_x += 3;
+ break;
+ case LINE_QUOTE:
+ case LINE_ITEM:
+ tab->s->curs_x += 2;
+ }
+
+end:
restore_cursor(tab);
}
wprintw(tabline, " ");
TAILQ_FOREACH(tab, &tabshead, tabs) {
current = tab->flags & TAB_CURRENT;
- wprintw(tabline, " %s%d:todo title ",
- current ? "*" : "", tab->id);
+
+ if (current)
+ wattron(tabline, A_UNDERLINE);
+
+ wprintw(tabline, "%s%d:todo title ",
+ current ? "*" : " ", tab->id);
+
+ if (current)
+ wattroff(tabline, A_UNDERLINE);
}
}