home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.update.uu.se
/
ftp.update.uu.se.2014.03.zip
/
ftp.update.uu.se
/
pub
/
rainbow
/
cpm
/
emacs
/
emacssrc.lzh
/
mevt.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-03-11
|
2KB
|
72 lines
/*
* The functions in this file
* handle redisplay. There are two halves,
* the ones that update the virtual display
* screen, and the ones that make the physical
* display screen the same as the virtual
* display screen. These functions use hints
* that are left in the windows by the
* commands.
*/
#include "medisp.h"
/*
* Set the virtual cursor to
* the specified row and column on the
* virtual screen. There is no checking for
* nonsense values; this might be a good
* idea during the early stages.
*/
vtmove(row, col)
int row, col;
{
vtrow = row;
vtcol = col;
}
/*
* Write a character to the
* virtual screen. The virtual row and
* column are updated. If the line is too
* long put a "$" in the last column.
* This routine only puts printing characters
* into the virtual terminal buffers.
* Only column overflow is checked.
*/
vtputc(c)
int c;
{
register char *vp;
if (vtcol >= 80)
{ vscreen[vtrow]->v_text[79] = '$';
return 0;
}
if ( isinsert( c ))
{ vscreen[vtrow]->v_text[vtcol++] = c;
return 1;
}
vp = &vscreen[vtrow]->v_text[vtcol];
if (c == '\t')
{ do
{ *(vp++) = ' ';
} while (( ++vtcol & 7 ) && vtcol < 80);
} else
{ *(vp++) = '^';
*vp = (c ^ 0x40);
vtcol += 2;
}
return 1;
}
/*
* Erase from the end of the
* software cursor to the end of the
* line on which the software cursor is
* located.
*/
vteeol()
{ clear( &vscreen[vtrow]->v_text[vtcol],
80 - vtcol, ' ' );
}