HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/share/jed/lib/replace.sl
%
%  This function executes a query-replace across all buffers attached to
%  a file.
%

require ("search");

define replace_across_buffer_files ()
{
   variable cbuf = whatbuf ();
   variable n = buffer_list ();
   variable buf, file, flags;
   variable pat, rep;

   pat = read_mini ("Replace:", Null_String, Null_String);
   ifnot (strlen (pat)) return;
   rep = read_mini ("Replace with:", Null_String, Null_String);

   push_spot ();		       %  save our location

   REPLACE_PRESERVE_CASE_INTERNAL = REPLACE_PRESERVE_CASE;
   if ((strlen (rep) == strlen(pat)) and not (strcmp(strlow(rep), strlow(pat))))
     REPLACE_PRESERVE_CASE_INTERNAL = 0;

   if (-1 != prefix_argument (-1))
     REPLACE_PRESERVE_CASE_INTERNAL = not (REPLACE_PRESERVE_CASE_INTERNAL);

   try while (n)
     {
	buf = ();  n--;

	% skip special buffers
	if ((buf[0] == '*') or (buf[0] == ' ')) continue;

	sw2buf (buf);

	(file,,,flags) = getbuf_info ();

	% skip if no file associated with buffer, or is read only
	ifnot (strlen (file) or (flags & 8)) continue;

	% ok, this buffer is what we want.

	push_spot_bob ();
	ERROR_BLOCK
	  {
	     pop_spot ();
	  }

	replace_with_query (&search_search_function, pat, rep, 1,
			    &replace_do_replace);
	pop_spot ();
     }
   finally
     {
	sw2buf (cbuf);
	pop_spot ();
	_pop_n (n);               %  remove buffers from stack
	REPLACE_PRESERVE_CASE_INTERNAL = 0;
     }

   message ("Done.");
}