⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clreolinln.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lintstatic	char sccsid[] = "@(#)clreolinln.c 1.1 92/07/30 SMI"; /* from S5R2 1.1 */#endif#include "curses.ext"extern	int	_clearhl();extern	int	_dellines();extern	int	_inslines();extern	int	_outch();extern	int	_pos();extern	int	_setwind();extern	int	clreol();extern	char	*tparm();extern	int	tputs();_clreol(){	register int col;	register struct line *cb;#ifdef DEBUG	if(outf) fprintf(outf, "_clreol().\n");#endif	if (!move_standout_mode)		_clearhl ();	if (clr_eol) {		tputs (clr_eol, columns-SP->phys_x, _outch);	} else if (delete_line && insert_line && SP->phys_x == 0) {		_dellines (1);		_inslines (1);	} else {		/*		 * Should consider using delete/insert line here, too,		 * if the part that would have to be redrawn is short,		 * or if we have to get rid of some cemented highlights.		 * This might win on the DTC 382 or the Teleray 1061.		 */		cb = SP->cur_body[SP->phys_y+1];		for (col=SP->phys_x+1; col<cb->length; col++)			if (cb->body[col] != ' ') {				_pos(SP->phys_y, col);				_blanks(1);			}		/*		 * Could save and restore SP->curptr position, but since we		 * keep track of what _blanks does to it, it turns out		 * that this is wasted.  Not backspacing over the stuff		 * cleared out is a real win on a super dumb terminal.		 */	}}_inslines (n){	register int i;#ifdef DEBUG	if(outf) fprintf(outf, "_inslines(%d).\n", n);#endif	if (!move_standout_mode && SP->phys_gr)		_clearhl();	if (SP->phys_y + n >= lines && clr_eos) {		/*		 * Really quick -- clear to end of screen.		 */		tputs(clr_eos, lines-SP->phys_y, _outch);		return;	}	/*	 * We are about to _shove something off the bottom of the screen.	 * Terminals with extra memory keep this around, and it might	 * show up again to haunt us later if we do a delete line or	 * scroll into it, or when we exit.  So we clobber it now.  We	 * might get better performance by somehow remembering that this	 * stuff is down there and worrying about it if/when we have to.	 * In particular, having to do this extra pair of SP->curptr motions	 * is a lose.	 */	if (memory_below) {		int save;		save = SP->phys_y;		if (save_cursor && restore_cursor)			tputs(save_cursor, 1, _outch);		if (clr_eos) {			_pos(lines-n, 0);			tputs(clr_eos, n, _outch);		} else {			for (i=0; i<n; i++) {				_pos(lines-n+i, 0);				_clreol();			}		}		if (save_cursor && restore_cursor)			tputs(restore_cursor, 1, _outch);		else			_pos(save, 0);	}	/* Do the physical line deletion */	if (scroll_reverse && SP->phys_y == SP->des_top_mgn /* &&costSR<costAL */) {		/*		 * Use reverse scroll mode of the terminal, at		 * the top of the window.  Reverse linefeed works		 * too, since we only use it from top line of window.		 */		_setwind();		for (i = n; i > 0; i--) {			_pos(SP->phys_y, 0);			tputs(scroll_reverse, 1, _outch);			if (SP->ml_above > 0)				SP->ml_above--;			/*			 * If we are at the top of the screen, and the			 * terminal retains display above, then we			 * should try to clear to end of line.			 * Have to use CE since we don't remember what is			 * actually on the line.			 */			if (clr_eol && memory_above)				tputs(clr_eol, 1, _outch);		}	} else if (parm_insert_line && (n>1 || *insert_line==0)) {		tputs(tparm(parm_insert_line, n, SP->phys_y), lines-SP->phys_y, _outch);	} else if (change_scroll_region && *insert_line==0) {		/* vt100 change scrolling region to fake AL */		tputs(save_cursor, 1, _outch);		tputs(	tparm(change_scroll_region,			SP->phys_y, SP->des_bot_mgn), 1, _outch);		/* change_scroll_region homes stupid cursor */		tputs(restore_cursor, 1, _outch);		for (i=n; i>0; i--)			tputs(scroll_reverse, 1, _outch);/* should do @'s */		/* restore scrolling region */		tputs(tparm(change_scroll_region,			SP->des_top_mgn, SP->des_bot_mgn), 1, _outch);		tputs(restore_cursor, 1, _outch);/* Once again put it back */		SP->phys_top_mgn = SP->des_top_mgn;		SP->phys_bot_mgn = SP->des_bot_mgn;	} else {		tputs(insert_line, lines - SP->phys_y, _outch);		for (i = n - 1; i > 0; i--) {			tputs(insert_line, lines - SP->phys_y, _outch);		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -