* make sure were in visual state
if (win
->_clear
|| curscr
->_clear
) {
if ((win
->_flags
& _FULLWIN
) || curscr
->_clear
) {
curscr
->_curx
= curscr
->_cury
= 0;
fprintf(outf
, "REFRESH:\n\tfirstch\tlastch\n");
for (wy
= 0; wy
< win
->_maxy
; wy
++) {
fprintf(outf
, "%d\t%d\t%d\n", wy
, win
->_firstch
[wy
], win
->_lastch
[wy
]);
if (win
->_firstch
[wy
] != _NOCHANGE
)
if (makech(win
, wy
) == ERR
)
win
->_firstch
[wy
] = win
->_firstch
[wy
] = _NOCHANGE
;
if (ly
>= 0 && ly
< win
->_maxy
&& lx
>= 0 && lx
< win
->_maxx
) {
win
->_cury
= win
->_curx
= 0;
mvcur(ly
, lx
, win
->_cury
+ win
->_begy
, win
->_curx
+ win
->_begx
);
curscr
->_cury
= win
->_cury
+ win
->_begy
;
curscr
->_curx
= win
->_curx
+ win
->_begx
;
* make a change on the screen
reg
char *nsp
, *csp
, *sp
;
reg
int nlsp
, clsp
; /* last space in lines */
csp
= &curscr
->_y
[wy
+ win
->_begy
][wx
+ win
->_begx
];
for (sp
= &win
->_y
[wy
][win
->_maxx
- 1]; *sp
== ' '; sp
--)
mvcur(ly
, lx
, y
, wx
+ win
->_begx
);
fprintf(outf
, "MAKECH: 1: wx = %d, lx = %d\n", wx
, lx
);
while (*nsp
!= *csp
&& wx
<= lch
) {
if (sp
&& wx
>= nlsp
&& *nsp
== ' ') {
* check for clear to end-of-line
sp
= &curscr
->_y
[ly
][COLS
- 1];
clsp
= sp
- curscr
->_y
[ly
] - win
->_begx
;
fprintf(outf
, "MAKECH: clsp = %d, nlsp = %d\n", clsp
, nlsp
);
if (clsp
- nlsp
>= strlen(CE
)
fprintf(outf
, "MAKECH: using CE\n");
* enter/exit standout mode as appropriate
if ((*nsp
&_STANDOUT
) != (curscr
->_flags
&_STANDOUT
)) {
curscr
->_flags
|= _STANDOUT
;
curscr
->_flags
&= ~_STANDOUT
;
if (wx
>= win
->_maxx
&& wy
== win
->_maxy
)
putchar((*csp
= *nsp
) & 0177);
if (win
->_flags
&_FULLWIN
)
ly
= win
->_begy
+win
->_cury
;
lx
= win
->_begx
+win
->_curx
;
else if (win
->_flags
&_SCROLLWIN
) {
putchar((*csp
++ = *nsp
++) & 0177);
fprintf(outf
, "MAKECH: 2: wx = %d, lx = %d\n", wx
, lx
);
if (lx
== wx
+ win
->_begx
) /* if no change */
fprintf(outf
, "MAKECH: 3: wx = %d, lx = %d\n", wx
, lx
);