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 >
C/C++ Source or Header  |  1992-03-11  |  2KB  |  72 lines

  1. /*
  2.  * The functions in this file
  3.  * handle redisplay. There are two halves,
  4.  * the ones that update the virtual display
  5.  * screen, and the ones that make the physical
  6.  * display screen the same as the virtual
  7.  * display screen. These functions use hints
  8.  * that are left in the windows by the
  9.  * commands.
  10.  */
  11. #include "medisp.h"
  12.  
  13. /*
  14.  * Set the virtual cursor to
  15.  * the specified row and column on the
  16.  * virtual screen. There is no checking for
  17.  * nonsense values; this might be a good
  18.  * idea during the early stages.
  19.  */
  20. vtmove(row, col)
  21. int row, col;
  22. {
  23.     vtrow = row;
  24.     vtcol = col;
  25. }
  26.  
  27. /*
  28.  * Write a character to the
  29.  * virtual screen. The virtual row and
  30.  * column are updated. If the line is too
  31.  * long put a "$" in the last column.
  32.  * This routine only puts printing characters
  33.  * into the virtual terminal buffers.
  34.  * Only column overflow is checked.
  35.  */
  36. vtputc(c)
  37. int    c;
  38. {
  39.     register char *vp;
  40.  
  41.     if (vtcol >= 80)
  42.     {    vscreen[vtrow]->v_text[79] = '$';
  43.         return 0;
  44.     }
  45.     if ( isinsert( c ))
  46.     {    vscreen[vtrow]->v_text[vtcol++] = c;
  47.         return 1;
  48.     }
  49.     vp = &vscreen[vtrow]->v_text[vtcol];
  50.     if (c == '\t') 
  51.     {    do
  52.         {    *(vp++) = ' ';
  53.         } while (( ++vtcol & 7 ) && vtcol < 80);
  54.     } else
  55.     {    *(vp++) = '^';
  56.         *vp = (c ^ 0x40);
  57.         vtcol += 2;
  58.     }
  59.     return 1;
  60. }
  61.  
  62. /*
  63.  * Erase from the end of the
  64.  * software cursor to the end of the
  65.  * line on which the software cursor is
  66.  * located.
  67.  */
  68. vteeol()
  69. {    clear( &vscreen[vtrow]->v_text[vtcol], 
  70.         80 - vtcol, ' ' );
  71. }
  72.