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

  1. %%   Buffer routines for Jed.  Functions included here are:
  2. %%    
  3. %%     list_buffers  : pop up a list of buffers
  4. %%     save_buffers  : saves buffers that are associated with a file
  5. %%                     with no user intervention
  6. %%     recover_file  : restore buffer from autosave file.
  7. %%
  8. %%
  9. define list_buffers ()
  10. {
  11.    variable i, tmp, this, name, flags, skip;
  12.    skip = 0;
  13.    if (prefix_argument(-1) == -1) skip = 1;
  14.    tmp = "*BufferList*";
  15.    this = whatbuf();
  16.    pop2buf(tmp);
  17.    set_readonly(0);
  18.    erase_buffer();
  19.    insert("U:Undo O:Overwrite R:Readonly D:Disk File Changed, A:Autosave, M:Modified\n");
  20.    insert("C:CRmode, B:Binary File, K:Not backed up, N:No autosave\n\n");
  21.    insert("CBKN-UORDAM\tBuffer Name");
  22.    goto_column(45); insert("Dir/File\n");
  23.    
  24.    loop (buffer_list())
  25.      {
  26.     =name;
  27.     if (skip and int(name) == 32) continue;   %% internal buffers begin with a space
  28.     setbuf(name);
  29.     flags = getbuf_info();    % more on stack
  30.     setbuf(tmp);
  31.     bol();
  32.     i = 0x400;
  33.     while (i)
  34.       {
  35.          if (flags & i) "*"; else "-";
  36.          insert(());
  37.          i = i shr 1;
  38.       }
  39.     insert_char(9);
  40.     insert(()); %% buffer name
  41.     goto_column(45);
  42.     !if (eolp())
  43.       {
  44.          eol(); insert_single_space();
  45.       }
  46.     
  47.     insert(()); insert(());               %% dir/file
  48.     newline();
  49.      }
  50.    bob();
  51.    set_buffer_modified_flag(0);
  52.    set_readonly (1);
  53.    pop2buf(this);
  54. }
  55.  
  56.  
  57.  
  58. %%
  59. %%  save some buffers--- saves only modified buffers associated with
  60. %%   files.  Does not ask user.
  61. %%
  62.  
  63. define save_buffers ()
  64. {
  65.    variable file, dir, flags, buf, ch;
  66.    
  67.    loop (buffer_list())
  68.      { =buf;
  69.     ch = int(buf);
  70.     if ((ch == 32) or (ch == '*')) continue;  %% internal buffer or special
  71.       
  72.     setbuf(buf);
  73.     getbuf_info();     =flags; pop(); =dir; =file;
  74.       
  75.     !if (strlen(file)) continue;        %% no file assciated with it
  76.     if (flags & 1)
  77.       {
  78.          !if (write_buffer(strcat(dir, file)))  
  79.             error (strcat ("Error writing buffer ", buf));
  80.       }
  81.      }  
  82. }
  83.  
  84.       
  85.      
  86. %% write region to file
  87. define write_region()
  88. {
  89.    variable file;
  90.    !if (markp) error("Set Mark first!");
  91.    file = read_file_from_mini("File:");
  92.    write_region_to_file(file);
  93. }
  94.  
  95.  
  96. define append_region ()
  97. {
  98.    variable file;
  99.    !if (markp) error("Set Mark first!");
  100.    file = read_file_from_mini("Append to File:");
  101.    if (-1 == append_region_to_file(file)) error ("Append failed.");
  102. }
  103.  
  104. ;%% restores buffer from autosave file.
  105. define recover_file ()
  106. {
  107.    variable flags, file, dir, as, buf;
  108.    
  109.    getbuf_info();  =flags; pop(); =dir; =file;
  110.    !if (strlen(file)) error("Buffer not associated with a file.");
  111.    as = make_autosave_filename (dir, file);
  112.    if (file_status(as) != 1)
  113.     {
  114.        error (strcat(as, " not readable."));
  115.     }
  116.     
  117.    buf = whatbuf();
  118.    as;
  119.    if (file_time_compare(as, strcat(dir, file)))
  120.      {
  121.         " more recent. Use it";
  122.      }
  123.    else " not recent. Use it";
  124.    
  125.    if (get_yes_no(strcat((),())) > 0)
  126.      {
  127.     whatline();
  128.     setbuf(buf);
  129.     erase_buffer();
  130.     insert_file(as); pop();
  131.     goto_line();
  132.      } 
  133. }
  134.        
  135.  
  136.  
  137.   
  138.