Commit | Line | Data |
---|---|---|
a4c3355c | 1 | #ifndef lint |
7edc52ec | 2 | static char sccsid[] = "@(#)wwdelline.c 3.6 %G%"; |
a4c3355c EW |
3 | #endif |
4 | ||
5 | #include "ww.h" | |
6 | ||
f2a77fe1 | 7 | wwdelline(w, row) |
a4c3355c | 8 | register struct ww *w; |
f2a77fe1 | 9 | int row; |
a4c3355c EW |
10 | { |
11 | register i; | |
14f251df | 12 | register union ww_char **cpp, **cqq; |
74f2441e | 13 | register union ww_char *cp; |
19f9784c | 14 | int row1, row2; |
14f251df | 15 | char deleted; |
74f2441e | 16 | int visible; |
a4c3355c EW |
17 | |
18 | /* | |
14f251df | 19 | * Scroll first. |
a4c3355c | 20 | */ |
f2a77fe1 EW |
21 | if ((row1 = row) < w->ww_i.t) { |
22 | row1 = w->ww_i.t; | |
23 | } | |
24 | if ((row2 = w->ww_b.b) > w->ww_i.b) { | |
25 | row2 = w->ww_i.b; | |
74f2441e EW |
26 | visible = 0; |
27 | } else | |
28 | visible = 1; | |
19f9784c | 29 | deleted = wwscroll1(w, row1, row2, 1, visible); |
14f251df | 30 | |
a4c3355c | 31 | /* |
14f251df EW |
32 | * Fix the buffer. |
33 | * But leave clearing the last line for wwclreol(). | |
a4c3355c | 34 | */ |
f2a77fe1 | 35 | cpp = &w->ww_buf[row]; |
14f251df | 36 | cqq = cpp + 1; |
74f2441e | 37 | cp = *cpp; |
f2a77fe1 | 38 | for (i = w->ww_b.b - row; --i > 0;) |
14f251df | 39 | *cpp++ = *cqq++; |
74f2441e | 40 | *cpp = cp; |
a4c3355c | 41 | |
a4c3355c | 42 | /* |
14f251df | 43 | * Now clear the last line. |
a4c3355c | 44 | */ |
74f2441e | 45 | if (visible) |
f2a77fe1 | 46 | wwclreol1(w, w->ww_b.b - 1, w->ww_b.l, deleted); |
74f2441e | 47 | else |
f2a77fe1 | 48 | for (i = w->ww_b.nc; --i >= 0;) |
74f2441e | 49 | cp++->c_w = ' '; |
a4c3355c | 50 | } |