aboutsummaryrefslogtreecommitdiff
path: root/keep/manual-programs/suckless/st-flexipatch/patch/osc133.c
blob: 6baa82a9b2e4ffe4229763b67a24f4648edab47e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void
scrolltoprompt(const Arg *arg)
{
	int x, y;
	#if REFLOW_PATCH
	int top = term.scr - term.histf;
	#else
	int top = term.scr - term.histn;
	#endif // REFLOW_PATCH
	int bot = term.scr + term.row-1;
	int dy = arg->i;
	Line line;

	if (!dy || tisaltscr())
		return;

	for (y = dy; y >= top && y <= bot; y += dy) {
		for (line = TLINE(y), x = 0; x < term.col; x++) {
			if (line[x].mode & ATTR_FTCS_PROMPT)
				goto scroll;
		}
	}

scroll:
	if (dy < 0)
		kscrollup(&((Arg){ .i = -y }));
	else
		kscrolldown(&((Arg){ .i = y }));
}