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/occur.sl
%% occur function
%%

$1 = "Occur";
ifnot (keymap_p ($1))
{
   make_keymap ($1);
}

definekey ("occur_goto_line", "g", $1);
variable Occur_Buffer = Null_String;

define occur_goto_line ()
{
   variable line;

   ifnot (bufferp (Occur_Buffer))
     return;

   bol ();
   push_mark ();
   ifnot (ffind (":"))
     {
	pop_mark_0 ();
	return;
     }

   line = integer (bufsubstr ());

   pop2buf (Occur_Buffer);
   goto_line (line);
}

%!%+
%\function{occur}
%\synopsis{occur}
%\usage{Void occur ();}
%\description
% This function may be used to search for all occurances of a string in the
% current buffer.  It creates a separate buffer called \var{*occur*} and
% associates a keymap called \var{Occur} with the new buffer.  In this
% buffer, the \var{g} key may be used to go to the line described by the
% match.
%!%-
define occur()
{
   variable str, tmp, n;

   str = read_mini("Find All (Regexp):", LAST_SEARCH, Null_String);
   ifnot (strlen (str))
     return;

   tmp = "*occur*";
   Occur_Buffer = whatbuf();
   pop2buf(tmp);
   erase_buffer();
   pop2buf(Occur_Buffer);

   push_spot();
   bob ();
   while (re_fsearch(str))
     {
	line_as_string ();  % stack-- at eol too
	n = what_line ();

	setbuf(tmp);
	vinsert ("%4d:", n);
	insert(());
	newline();
	setbuf(Occur_Buffer);
	ifnot (down_1 ()) %% so we do not find another occurance on same line
	  break;
     }
   pop_spot();
   setbuf(tmp);
   bob(); set_buffer_modified_flag(0);

   use_keymap ("Occur");
   run_mode_hooks ("occur_mode_hook");
}