summaryrefslogtreecommitdiff
path: root/sfeed_curses.c
diff options
context:
space:
mode:
Diffstat (limited to 'sfeed_curses.c')
-rw-r--r--sfeed_curses.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/sfeed_curses.c b/sfeed_curses.c
index d6eb4f7..0cd7ebd 100644
--- a/sfeed_curses.c
+++ b/sfeed_curses.c
@@ -2125,17 +2125,11 @@ main(int argc, char *argv[])
break;
keyup:
case 'k':
- case 'K':
pane_scrolln(&panes[selpane], -1);
- if (ch == 'K')
- goto openitem;
break;
keydown:
case 'j':
- case 'J':
pane_scrolln(&panes[selpane], +1);
- if (ch == 'J')
- goto openitem;
break;
keyleft:
case 'h':
@@ -2153,6 +2147,28 @@ keyright:
if (layout == LayoutMonocle)
updategeom();
break;
+ case 'K':
+ p = &panes[selpane];
+ if (!p->nrows)
+ break;
+ for (pos = p->pos - 1; pos >= 0; pos--) {
+ if ((row = pane_row_get(p, pos)) && row->bold) {
+ pane_setpos(p, pos);
+ break;
+ }
+ }
+ break;
+ case 'J':
+ p = &panes[selpane];
+ if (!p->nrows)
+ break;
+ for (pos = p->pos + 1; pos < p->nrows; pos++) {
+ if ((row = pane_row_get(p, pos)) && row->bold) {
+ pane_setpos(p, pos);
+ break;
+ }
+ }
+ break;
case '\t':
selpane = selpane == PaneFeeds ? PaneItems : PaneFeeds;
if (layout == LayoutMonocle)
@@ -2260,7 +2276,6 @@ nextpage:
break;
case 'o': /* feeds: load, items: plumb URL */
case '\n':
-openitem:
if (selpane == PaneFeeds && panes[selpane].nrows)
feed_open_selected(&panes[selpane]);
else if (selpane == PaneItems && panes[selpane].nrows)