home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / AP / JED / JED097-1.TAR / jed / lib / mini.sl < prev    next >
Encoding:
Text File  |  1994-12-12  |  1.4 KB  |  73 lines

  1. %
  2. %  Recall previous commands in MiniBuffer
  3. %
  4.  
  5. !if (is_defined("Mini_Previous_Lines"))
  6. {
  7.    variable Mini_Previous_Lines, Mini_Last_Line, Mini_Next_Line, Mini_First_Line;
  8.    Mini_Previous_Lines = create_array('s', 12, 1);
  9.    _for(0, 11, 1) 
  10.      {
  11.     =$1;
  12.     Mini_Previous_Lines[$1] = Null_String;
  13.      }
  14. }
  15. Mini_Last_Line = 0;
  16. Mini_First_Line = 0;
  17. Mini_Next_Line = 0;
  18.  
  19. define mini_use_this_line()
  20. {
  21.    erase_buffer();
  22.    insert(Mini_Previous_Lines[Mini_Next_Line]);
  23. }
  24.  
  25.  
  26. define next_mini_command()
  27. {
  28.    variable line;
  29.  
  30.    if (Mini_Next_Line == Mini_Last_Line) 
  31.      {
  32.     error ("End of list!");
  33.      }
  34.    Mini_Next_Line++;
  35.    if (Mini_Next_Line == 12)  Mini_Next_Line = 0;
  36.    mini_use_this_line();
  37. }
  38.  
  39. define prev_mini_command()
  40. {
  41.    variable line;
  42.    
  43.    line = Mini_Next_Line;
  44.    if (Mini_First_Line == Mini_Next_Line)
  45.      {
  46.     Mini_Next_Line = line;
  47.     error ("Top of list!");
  48.      }
  49.    Mini_Next_Line--;
  50.    if (Mini_Next_Line < 0)  Mini_Next_Line = 11;
  51.    mini_use_this_line();
  52. }
  53.  
  54. define mini_exit_minibuffer()
  55. {
  56.    bol(); skip_white();
  57.    !if (eolp())
  58.      {
  59.         bol(); push_mark(); eol();
  60.     Mini_Previous_Lines[Mini_Last_Line] = bufsubstr();
  61.     Mini_Last_Line++;
  62.     if (Mini_Last_Line == 12) Mini_Last_Line = 0;
  63.     if (Mini_Last_Line == Mini_First_Line)
  64.       {
  65.          Mini_First_Line++;
  66.          if (Mini_First_Line == 12) Mini_First_Line = 0;
  67.       }
  68.      } 
  69.    Mini_Next_Line = Mini_Last_Line;
  70.    Mini_Previous_Lines[Mini_Last_Line] = Null_String;
  71.    call("exit_mini");
  72. }
  73.