home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume26 / most-3.2 / part01 / cmd.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-13  |  3.9 KB  |  145 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include "sysdep.h"
  4. #include "search.h"
  5. #include "window.h"
  6. #include "file.h"
  7. #include "keym.h"
  8. #include "externs.h"
  9.  
  10. /* returns zero if not quit */
  11.   
  12. int do_extended_key()
  13. {
  14.     char ch;
  15.     static int next = 1;
  16.     int quit = 0, n;
  17.     unsigned char *save;
  18.     
  19.     select_minibuffer();  putc(':',stdout); fflush(stdout);
  20.     ch = getkey();
  21.     putc(ch,stdout); fflush(stdout);
  22.     if (ch == 'n')
  23.       {
  24.           if (!NUM_FILES)
  25.             {
  26.                 message("File ring is empty.",1);
  27.             }
  28.           quit = next_file(&next);
  29.           if (next == -1) quit = 1;
  30.       }
  31.     else if ((ch == 'c') || (ch == 'C'))   /* toggle case sensitive search */
  32.       {
  33.           CASE_SENSITIVE = !CASE_SENSITIVE;
  34.           if (CASE_SENSITIVE)
  35.             message("Searches now respect case.",0);
  36.           else
  37.             message("Searches nolonger respect case.",0);
  38.       }
  39.     else if ((ch == 'D') && MOST_D_OPT) /* delete file */
  40.       {
  41.           /* notice the missing D. */
  42.           fprintf(stdout,"elete %s? [n]:", BUF->file);
  43.           fflush(stdout);
  44.           ch = getkey();
  45.           if (ch == 'y')
  46.             {
  47.                 if (!sys_delete_file(BUF->file))
  48.                   message("File could not be deleted.",1);
  49.                 else
  50.                   message("File deleted.",0);
  51.             }
  52.           else
  53.             message("File not deleted.",0);
  54.       }
  55.     else if (ch == 'o')
  56.       {
  57.           fputs("\rToggle option: b d t v w",stdout); fflush(stdout);
  58.           ch = getkey();
  59.           if ((ch == 'd') || (ch == 'w') || (ch == 'b') || (ch == 't') || (ch == 'v') || (ch == 's'))
  60.             {
  61.                 if (ch == 'b')
  62.                   {
  63.                       MOST_B_OPT = !MOST_B_OPT;
  64.                       NUM_LINES = count_lines(BEG,EOB);
  65.                   }
  66.                 else if (ch == 'd')
  67.                   {
  68.                       if (DIGIT_ARG == NULL)
  69.                         {
  70.                             message("Selective Display off.",0);
  71.                             n = 0;
  72.                         }
  73.                       else n = abs( *DIGIT_ARG );
  74.                       if (MOST_S_OPT != n)
  75.                         {
  76.                             MOST_S_OPT = n;
  77.                             NUM_LINES = count_lines(BEG,EOB);
  78.                         }
  79.                   }
  80.                 else if ((ch == 's') && !MOST_B_OPT)
  81.                   {
  82.                       SQUEEZE_LINES = !SQUEEZE_LINES;
  83.                       NUM_LINES = count_lines(BEG,EOB);
  84.                   }
  85.                 else if (ch == 'w')
  86.                   {
  87.                       MOST_W_OPT = !MOST_W_OPT;
  88.                       NUM_LINES = count_lines(BEG,EOB);
  89.                   }
  90.                 else if (ch == 'v') MOST_V_OPT = !MOST_V_OPT;
  91.                 else if (ch == 't') MOST_T_OPT = !MOST_T_OPT;
  92.  
  93.                 if (!NUM_LINES) NUM_LINES = 1;
  94.                 
  95.                 save_win_flags(WIN);
  96.                 save = C_POS;
  97.                 C_POS = BEG;
  98.                 C_LINE = 1;
  99.                 C_LINE = what_line(save);
  100.                 C_POS = save;
  101.                 WIN->beg_line = C_LINE;
  102.                 delete_line(1);
  103.                 exit_minibuffer();
  104.                 redraw_window();
  105.                 update_status(0);
  106.                 return(quit);
  107.             }
  108.       }
  109.     else
  110.       {
  111.           putc('\007',stdout);
  112.           delete_line(1);
  113.       }
  114.     fflush(stdout);
  115.     
  116.     exit_minibuffer();
  117.     return(quit);
  118. }
  119.  
  120. /* returns zero if not quit */
  121.  
  122. int do_extended_cmd()
  123. {
  124.     char cmd[80];
  125.     int quit = 0;
  126.     cmd[0] = 0;
  127.     if (!read_from_minibuffer("Cmd:",cmd)) return 0;
  128.     
  129.     if (!strcmp(cmd,"cd"))
  130.       {
  131.           cd();
  132.       }
  133.     else if ((!strncmp(cmd,"quit",strlen(cmd))) || 
  134.          (!strncmp(cmd,"exit",strlen(cmd))))
  135.       {
  136.           quit = -1;
  137.       }
  138.     else
  139.       {
  140.           strcat(cmd," not understood.");
  141.           message(cmd,1);
  142.       }
  143.     return(quit);
  144. }
  145.