summaryrefslogtreecommitdiff
path: root/sfeed_curses.c
diff options
context:
space:
mode:
authorHiltjo Posthuma <hiltjo@codemadness.org>2022-01-21 20:20:01 +0100
committerHiltjo Posthuma <hiltjo@codemadness.org>2022-01-22 12:15:57 +0100
commitf726178a4c61037da62f7dfd0c20b23a3675d6ac (patch)
tree2353116f3bd6c15b2f2fb88ea3f3926e4534d03c /sfeed_curses.c
parent1d6b7c5d3f09ec2118400207b81b1332f1ee319a (diff)
add feature to go to the next bold row and previous bold row with J and K
This replaces the current J and K keybind, which was rarely useful. Thanks to IanJ for the suggestion and feedback!
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)