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 / ovexit30.c < prev    next >
C/C++ Source or Header  |  1992-03-11  |  2KB  |  104 lines

  1. #include "medisp.h"
  2.  
  3. extern int wstyle;
  4. extern int ovreq, ovsub, ovreq2, ovsub2;
  5.  
  6. ovmain( x, f, n )
  7. {    switch ( x )
  8.     {    case 0: return ( quit( f, n ));
  9.         case 1: return ( ctrlg());
  10.         case 4:
  11.         case 2: wstyle = ( x > 3 ) + (( n < 0 ) ? 2 : 0 );
  12.             if ( wstyle & 1 )
  13.             {    if ( wstyle & 2 )
  14.                     mlwrite( "[vi WORD mode]" );
  15.                 else
  16.                     mlwrite( "[emacs WORD mode]" );
  17.             }
  18.             else
  19.             {    if ( wstyle & 2 )
  20.                     mlwrite( "[vi word mode]" );
  21.                 else
  22.                     mlwrite( "[emacs word mode]" );
  23.             }
  24.             return( TRUE );
  25.         case 3: return ( quit( FALSE, n ));
  26.     }
  27. }
  28. #ifdef NEVER
  29. /*
  30.  * Fancy quit command, as implemented
  31.  * by Norm. If the current buffer has changed
  32.  * do a write current buffer and exit emacs,
  33.  * otherwise simply exit.
  34.  */
  35. quickexit(f, n)
  36. register int f, n;
  37. {
  38.     if ( ( curbp->b_flag & ( BFCHG | BFTEMP )) == BFTEMP )
  39.     {    /* changed buffer, not [List] */
  40.         ovreq = 9;    /* save */
  41.         ovsub = 0;
  42.         ovreq2 = 30;    /* conditionally quit    */
  43.         ovsub2 = 3;
  44.     }
  45.     return( TRUE );
  46. }
  47. #endif
  48. /*
  49.  * Quit command. If an argument, always
  50.  * quit. Otherwise confirm if a buffer has been
  51.  * changed and not written out. Normally bound
  52.  * to "C-X C-C".
  53.  */
  54. quit(f, n)
  55. {
  56.     register int    s;
  57.  
  58.     if (f != FALSE                /* Argument forces it.    */
  59.     || anycb() == FALSE            /* All buffers clean.    */
  60.     || (s=mlyesno("Quit")) == TRUE)
  61.     {    /* User says it's OK.    */
  62.         vttidy();
  63.         exit(0);
  64.     }
  65.     return (s);
  66. }
  67.  
  68. /*
  69.  * Look through the list of
  70.  * buffers. Return TRUE if there
  71.  * are any changed buffers. Buffers
  72.  * that hold magic internal stuff are
  73.  * not considered; who cares if the
  74.  * list of buffer names is hacked.
  75.  * Return FALSE if no buffers
  76.  * have been changed.
  77.  */
  78. anycb()
  79. {
  80.     register BUFFER    *bp;
  81.  
  82.     bp = bheadp;
  83.     while (bp != NULL)
  84.     {    if ( ( bp->b_flag & ( BFTEMP | BFCHG )) == BFCHG )
  85.             return (TRUE);
  86.         bp = bp->b_bufp;
  87.     }
  88.     return (FALSE);
  89. }
  90.  
  91. /*
  92.  * Clean up the virtual terminal
  93.  * system, in anticipation for a return to the
  94.  * operating system. Move down to the last line and
  95.  * clear it out (the next system prompt will be
  96.  * written in the line). Shut down the channel
  97.  * to the terminal.
  98.  */
  99. vttidy()
  100. {
  101.     movecursor( 23, 0 );
  102.     ansieeol();
  103. }
  104.