-- Leo's gemini proxy

-- Connecting to git.thebackupbox.net:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

repo: rxvt-unicode-sixel
action: commit
revision:
path_from:
revision_from: 4d7962e0b460ff47a5c64063f9c855c6ce0a6824:
path_to:
revision_to:

git.thebackupbox.net

rxvt-unicode-sixel

git://git.thebackupbox.net/rxvt-unicode-sixel

commit 4d7962e0b460ff47a5c64063f9c855c6ce0a6824
Author: Marc Lehmann <schmorp@schmorp.de>
Date:   Tue Jan 10 04:26:54 2006 +0000

    *** empty log message ***

diff --git a/README.FAQ b/README.FAQ

index 943de4d5d270a11ded706ee1a3d1313d4173894d..

index ..bf6d2fc7ac835d88e8e486bc3dd284441dfd49e9 100644

--- a/README.FAQ
+++ b/README.FAQ
@@ -37,7 +37,7 @@ FREQUENTLY ASKED QUESTIONS
         this still fares rather well. And compared to some monsters like
         gnome-terminal (21152k + extra 4204k in separate processes) or
         konsole (22200k + extra 43180k in daemons that stay around after
-        exit, plus half aminute of startup time, including the hundreds of
+        exit, plus half a minute of startup time, including the hundreds of
         warnings it spits out), it fares extremely well *g*.

     Why C++, isn't that unportable/bloated/uncool?
diff --git a/doc/rxvt.1.html b/doc/rxvt.1.html

index 322a898329a05d9cd3831651191e7e122441164f..

index ..08ca34713484b3a84c0fad3d8423de02ab08288a 100644

--- a/doc/rxvt.1.html
+++ b/doc/rxvt.1.html
@@ -1460,12 +1460,19 @@ use in this terminal instance; option <strong>-pe</strong>.
 </dd>
 <dd>
 <p>Extension names can be prefixed with a <code>-</code> sign to prohibit using
-it. This can be useful to selectively disable some extensions loaded
+them. This can be useful to selectively disable some extensions loaded
 by default, or specified via the <code>perl-ext-common</code> resource. For
 example, <code>default,-selection</code> will use all the default extension except
 <code>selection</code>.</p>
 </dd>
 <dd>
+<p>Extension names can also be followed by an argument in angle brackets
+(e.g.  <code>searchable-scrollback&lt;M-s&gt;</code>, which binds the hotkey for
+searchable scorllback to Alt/Meta-s). Mentioning the same extension
+multiple times with different arguments will pass multiple arguments to
+the extension.</p>
+</dd>
+<dd>
 <p>Each extension is looked up in the library directories, loaded if
 necessary, and bound to the current terminal instance.</p>
 </dd>
diff --git a/doc/rxvt.1.man.in b/doc/rxvt.1.man.in

index 27119dd0600d2081624e4df716258c03d23e64de..

index ..b94e7204bc02c9c419ec9cb5cea5d32cc94eccca 100644

--- a/doc/rxvt.1.man.in
+++ b/doc/rxvt.1.man.in
@@ -129,7 +129,7 @@
 .\" ========================================================================
 .\"
 .IX Title "rxvt 1"
-.TH rxvt 1 "2006-01-09" "6.3" "RXVT-UNICODE"
+.TH rxvt 1 "2006-01-10" "6.3" "RXVT-UNICODE"
 .SH "NAME"
 rxvt\-unicode (ouR XVT, unicode) \- (a VT102 emulator for the X window system)
 .SH "SYNOPSIS"
@@ -1116,11 +1116,17 @@ Comma-separated list(s) of perl extension scripts (default: \f(CW\*(C`default\*(
 use in this terminal instance; option \fB\-pe\fR.
 .Sp
 Extension names can be prefixed with a \f(CW\*(C`\-\*(C'\fR sign to prohibit using
-it. This can be useful to selectively disable some extensions loaded
+them. This can be useful to selectively disable some extensions loaded
 by default, or specified via the \f(CW\*(C`perl\-ext\-common\*(C'\fR resource. For
 example, \f(CW\*(C`default,\-selection\*(C'\fR will use all the default extension except
 \&\f(CW\*(C`selection\*(C'\fR.
 .Sp
+Extension names can also be followed by an argument in angle brackets
+(e.g.  \f(CW\*(C`searchable\-scrollback<M\-s>\*(C'\fR, which binds the hotkey for
+searchable scorllback to Alt/Meta\-s). Mentioning the same extension
+multiple times with different arguments will pass multiple arguments to
+the extension.
+.Sp
 Each extension is looked up in the library directories, loaded if
 necessary, and bound to the current terminal instance.
 .Sp
diff --git a/doc/rxvt.1.txt b/doc/rxvt.1.txt

index 45438d792d0352682ac96bfe713df1aa4146b95e..

index ..82f3fe2cfdd4db0774ef5d3cebf614b12f321801 100644

--- a/doc/rxvt.1.txt
+++ b/doc/rxvt.1.txt
@@ -947,11 +947,17 @@ RESOURCES (available also as long-options)
         "default") to use in this terminal instance; option -pe.

         Extension names can be prefixed with a "-" sign to prohibit using
-        it. This can be useful to selectively disable some extensions loaded
-        by default, or specified via the "perl-ext-common" resource. For
-        example, "default,-selection" will use all the default extension
+        them. This can be useful to selectively disable some extensions
+        loaded by default, or specified via the "perl-ext-common" resource.
+        For example, "default,-selection" will use all the default extension
         except "selection".

+        Extension names can also be followed by an argument in angle
+        brackets (e.g. "searchable-scrollback<M-s>", which binds the hotkey
+        for searchable scorllback to Alt/Meta-s). Mentioning the same
+        extension multiple times with different arguments will pass multiple
+        arguments to the extension.
+
         Each extension is looked up in the library directories, loaded if
         necessary, and bound to the current terminal instance.

diff --git a/doc/rxvt.7.html b/doc/rxvt.7.html

index e5771492f81e44264ae609918c7ab31da64ddb65..

index ..70ae2df8f0737812d92e27d16ce237f1ce198cda 100644

--- a/doc/rxvt.7.html
+++ b/doc/rxvt.7.html
@@ -122,7 +122,7 @@ memory.</p>
 <p>Compared to e.g. Eterm (5112k), aterm (3132k) and xterm (4680k), this
 still fares rather well. And compared to some monsters like gnome-terminal
 (21152k + extra 4204k in separate processes) or konsole (22200k + extra
-43180k in daemons that stay around after exit, plus half aminute of
+43180k in daemons that stay around after exit, plus half a minute of
 startup time, including the hundreds of warnings it spits out), it fares
 extremely well *g*.</p>
 </dd>
diff --git a/doc/rxvt.7.man.in b/doc/rxvt.7.man.in

index 4afc500211e77ae9120164cf044ed7bdb8b0202b..

index ..1cf40b26cb364849295bc8600eb262e0bf2a630e 100644

--- a/doc/rxvt.7.man.in
+++ b/doc/rxvt.7.man.in
@@ -129,7 +129,7 @@
 .\" ========================================================================
 .\"
 .IX Title "rxvt 7"
-.TH rxvt 7 "2006-01-09" "6.3" "RXVT-UNICODE"
+.TH rxvt 7 "2006-01-10" "6.3" "RXVT-UNICODE"
 .SH "NAME"
 RXVT REFERENCE \- FAQ, command sequences and other background information
 .SH "SYNOPSIS"
@@ -200,7 +200,7 @@ memory.
 Compared to e.g. Eterm (5112k), aterm (3132k) and xterm (4680k), this
 still fares rather well. And compared to some monsters like gnome-terminal
 (21152k + extra 4204k in separate processes) or konsole (22200k + extra
-43180k in daemons that stay around after exit, plus half aminute of
+43180k in daemons that stay around after exit, plus half a minute of
 startup time, including the hundreds of warnings it spits out), it fares
 extremely well *g*.
 .IP "Why \*(C+, isn't that unportable/bloated/uncool?" 4
diff --git a/doc/rxvt.7.txt b/doc/rxvt.7.txt

index 9ac3292af971b116dfdbbdeba5ee518f6e49baeb..

index ..054b02e26dd589bf462b8851ec4b621c456ab9c0 100644

--- a/doc/rxvt.7.txt
+++ b/doc/rxvt.7.txt
@@ -58,7 +58,7 @@ FREQUENTLY ASKED QUESTIONS
         this still fares rather well. And compared to some monsters like
         gnome-terminal (21152k + extra 4204k in separate processes) or
         konsole (22200k + extra 43180k in daemons that stay around after
-        exit, plus half aminute of startup time, including the hundreds of
+        exit, plus half a minute of startup time, including the hundreds of
         warnings it spits out), it fares extremely well *g*.

     Why C++, isn't that unportable/bloated/uncool?
diff --git a/doc/rxvtperl.3.html b/doc/rxvtperl.3.html

index e9499e97fa766daa08fdb51a134eac837ef43f3e..

index ..3cd2e8c7608f06adde14614f29c88802cbfb429f 100644

--- a/doc/rxvtperl.3.html
+++ b/doc/rxvtperl.3.html
@@ -19,6 +19,7 @@

 		<li><a href="#prepackaged_extensions">Prepackaged Extensions</a></li>
 		<li><a href="#general_api_considerations">General API Considerations</a></li>
+		<li><a href="#extension_objects">Extension Objects</a></li>
 		<li><a href="#hooks">Hooks</a></li>
 		<li><a href="#variables_in_the_urxvt_package">Variables in the <code>urxvt</code> Package</a></li>
 		<li><a href="#functions_in_the_urxvt_package">Functions in the <code>urxvt</code> Package</a></li>
@@ -116,6 +117,20 @@ Binds a popup menu to Ctrl-Button3 that lets you convert the selection
 text into various other formats/action.
 </dd>
 <p></p>
+<dt><strong><a name="item_searchable_2dscrollback_3chotkey_3e__28enabled_by_">searchable-scrollback&lt;hotkey&gt; (enabled by default)</a></strong><br />
+</dt>
+<dd>
+Adds regex search functionality to the scrollback buffer, triggered
+by a hotkey (default: <code>M-s</code>). When in search mode, normal terminal
+input/output is suspended.
+</dd>
+<dd>
+<p><code>/</code> starts an incremental regex search, <code>n</code> searches further, <code>p</code> or
+<code>N</code> jump to the previous match, <code>G</code> jumps to the bottom and clears the
+history, <code>enter</code> leaves search mode at the current position and <code>escape</code>
+returns to the original position.</p>
+</dd>
+<p></p>
 <dt><strong><a name="item_digital_2dclock">digital-clock</a></strong><br />
 </dt>
 <dd>
@@ -183,19 +198,49 @@ locale-specific way.
 <p></p></dl>
 <p>
 </p>
+<h2><a name="extension_objects">Extension Objects</a></h2>
+<p>Very perl extension is a perl class. A separate perl object is created
+for each terminal and each extension and passed as the first parameter to
+hooks. So extensions can use their <code>$self</code> object without having to think
+about other extensions, with the exception of methods and members that
+begin with an underscore character <code>_</code>: these are reserved for internal
+use.</p>
+<p>Although it isn't a <code>urxvt::term</code> object, you can call all methods of the
+<code>urxvt::term</code> class on this object.</p>
+<p>It has the following methods and data members:</p>
+<dl>
+<dt><strong><a name="item__24urxvt_term__3d__24self_2d_3e_7bterm_7d">$urxvt_term = $self-&gt;{term}</a></strong><br />
+</dt>
+<dd>
+Returns the <code>urxvt::term</code> object associated with this instance of the
+extension. This member <em>must not</em> be changed in any way.
+</dd>
+<p></p>
+<dt><strong><a name="item_enable">$self-&gt;enable ($hook_name =&gt; $cb, [$hook_name =&gt; $cb..])</a></strong><br />
+</dt>
+<dd>
+Dynamically enable the given hooks (named without the <code>on_</code> prefix) for
+this extension, replacing any previous hook. This is useful when you want
+to overwrite time-critical hooks only temporarily.
+</dd>
+<p></p>
+<dt><strong><a name="item_disable">$self-&gt;disable ($hook_name[, $hook_name..])</a></strong><br />
+</dt>
+<dd>
+Dynamically disable the given hooks.
+</dd>
+<p></p></dl>
+<p>
+</p>
 <h2><a name="hooks">Hooks</a></h2>
 <p>The following subroutines can be declared in extension files, and will be
 called whenever the relevant event happens.</p>
-<p>The first argument passed to them is an object private to each terminal
-and extension package. You can call all <code>urxvt::term</code> methods on it, but
-its not a real <code>urxvt::term</code> object. Instead, the real <code>urxvt::term</code>
-object that is shared between all packages is stored in the <code>term</code>
-member. It is, however, blessed intot he package of the extension script,
-so for all practical purposes you can treat an extension script as a class.</p>
-<p>All of them must return a boolean value. If it is true, then the event
-counts as being <em>consumed</em>, and the invocation of other hooks is skipped,
-and the relevant action might not be carried out by the C++ code.</p>
-<p>When in doubt, return a false value (preferably <code>()</code>).</p>
+<p>The first argument passed to them is an extension oject as described in
+the in the <code>Extension Objects</code> section.</p>
+<p><strong>All</strong> of these hooks must return a boolean value. If it is true, then the
+event counts as being <em>consumed</em>, and the invocation of other hooks is
+skipped, and the relevant action might not be carried out by the C++ code.</p>
+<p><em>When in doubt, return a false value (preferably <code>()</code>). </em>&gt;</p>
 <dl>
 <dt><strong><a name="item_on_init__24term">on_init $term</a></strong><br />
 </dt>
@@ -304,6 +349,13 @@ might be very slow, however, as your hook is called for <strong>all</strong> tex
 output.
 </dd>
 <p></p>
+<dt><strong><a name="item_on_tt_write__24term_2c__24octets">on_tt_write $term, $octets</a></strong><br />
+</dt>
+<dd>
+Called whenever some data is written to the tty/pty and can be used to
+suppress or filter tty input.
+</dd>
+<p></p>
 <dt><strong><a name="item_on_line_update__24term_2c__24row">on_line_update $term, $row</a></strong><br />
 </dt>
 <dd>
@@ -359,9 +411,9 @@ Called wheneever the window loses keyboard focus, before rxvt-unicode does
 focus out processing.
 </dd>
 <p></p>
-<dt><strong><a name="item_on_key_press__24term_2c__24event_2c__24octets">on_key_press $term, $event, $octets</a></strong><br />
+<dt><strong><a name="item_on_key_press__24term_2c__24event_2c__24keysym_2c__">on_key_press $term, $event, $keysym, $octets</a></strong><br />
 </dt>
-<dt><strong><a name="item_on_key_release__24term_2c__24event">on_key_release $term, $event</a></strong><br />
+<dt><strong><a name="item_on_key_release__24term_2c__24event_2c__24keysym">on_key_release $term, $event, $keysym</a></strong><br />
 </dt>
 <dt><strong><a name="item_on_button_press__24term_2c__24event">on_button_press $term, $event</a></strong><br />
 </dt>
@@ -602,6 +654,13 @@ to see the actual list:</p>
   utmpInhibit visualBell</pre>
 </dd>
 <p></p>
+<dt><strong><a name="item_parse_keysym">$success = $term-&gt;parse_keysym ($keysym_spec, $command_string)</a></strong><br />
+</dt>
+<dd>
+Adds a keymap translation exactly as specified via a resource. See the
+<code>keysym</code> resource in the <code>rxvt(1)</code> manpage.
+</dd>
+<p></p>
 <dt><strong><a name="item_rstyle">$rend = $term-&gt;rstyle ([$new_rstyle])</a></strong><br />
 </dt>
 <dd>
@@ -639,26 +698,11 @@ by the next method).
 <dd>
 Return the current selection text and optionally replace it by <code>$newtext</code>.
 </dd>
+<p></p>
+<dt><strong><a name="item_overlay_simple">$term-&gt;overlay_simple ($x, $y, $text)</a></strong><br />
+</dt>
 <dd>
-<p>#=item $term-&gt;overlay ($x, $y, $text)
-#
-#Create a simple multi-line overlay box. See the next method for details.
-#
-#=cut
-#
-#sub urxvt::term::scr_overlay {
-#   my ($self, $x, $y, $text) = @_;
-#
-#   my @lines = split /\n/, $text;
-#
-#   my $w = 0;
-#   for (map $self-&gt;strwidth ($_), @lines) {
-#      $w = $_ if $w &lt; $_;
-#   }
-#
-#   $self-&gt;scr_overlay_new ($x, $y, $w, scalar @lines);
-#   $self-&gt;scr_overlay_set (0, $_, $lines[$_]) for 0.. $#lines;
-#}</p>
+Create a simple multi-line overlay box. See the next method for details.
 </dd>
 <p></p>
 <dt><strong><a name="item_overlay">$term-&gt;overlay ($x, $y, $width, $height[, $rstyle[, $border]])</a></strong><br />
@@ -731,6 +775,29 @@ Convert the given text string into the corresponding locale encoding.
 Convert the given locale-encoded octets into a perl string.
 </dd>
 <p></p>
+<dt><strong><a name="item_scr_xor_span">$term-&gt;scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle])</a></strong><br />
+</dt>
+<dd>
+XORs the rendition values in the given span with the provided value
+(default: <code>RS_RVid</code>). Useful in refresh hooks to provide effects similar
+to the selection.
+</dd>
+<p></p>
+<dt><strong><a name="item_scr_xor_rect">$term-&gt;scr_xor_rect ($beg_row, $beg_col, $end_row, $end_col[, $rstyle1[, $rstyle2]])</a></strong><br />
+</dt>
+<dd>
+Similar to <a href="#item_scr_xor_span"><code>scr_xor_span</code></a>, but xors a rectangle instead. Trailing
+whitespace will additionally be xored with the <code>$rstyle2</code>, which defaults
+to <code>RS_RVid | RS_Uline</code>, which removes reverse video again and underlines
+it instead.
+</dd>
+<p></p>
+<dt><strong><a name="item_scr_bell">$term-&gt;scr_bell</a></strong><br />
+</dt>
+<dd>
+Ring the bell!
+</dd>
+<p></p>
 <dt><strong><a name="item_scr_add_lines">$term-&gt;scr_add_lines ($string)</a></strong><br />
 </dt>
 <dd>
@@ -761,6 +828,15 @@ pass characters instead of octets, you should convert your strings first
 to the locale-specific encoding using <a href="#item_locale_encode"><code>$term-&gt;locale_encode</code></a>.
 </dd>
 <p></p>
+<dt><strong><a name="item_pty_ev_events">$old_events = $term-&gt;pty_ev_events ([$new_events])</a></strong><br />
+</dt>
+<dd>
+Replaces the event mask of the pty watcher by the given event mask. Can
+be used to suppress input and output handling to the pty/tty. See the
+description of <a href="#item_events"><code>urxvt::timer-&gt;events</code></a>. Make sure to always restore
+the previous value.
+</dd>
+<p></p>
 <dt><strong><a name="item_parent">$windowid = $term-&gt;parent</a></strong><br />
 </dt>
 <dd>
@@ -801,6 +877,18 @@ Return the window id of the terminal window.
 Return various integers describing terminal characteristics.
 </dd>
 <p></p>
+<dt><strong><a name="item_locale">$lc_ctype = $term-&gt;locale</a></strong><br />
+</dt>
+<dd>
+Returns the LC_CTYPE category string used by this rxvt-unicode.
+</dd>
+<p></p>
+<dt><strong><a name="item_display_id">$x_display = $term-&gt;display_id</a></strong><br />
+</dt>
+<dd>
+Return the DISPLAY used by rxvt-unicode.
+</dd>
+<p></p>
 <dt><strong><a name="item_modlevel3mask">$modifiermask = $term-&gt;ModLevel3Mask</a></strong><br />
 </dt>
 <dt><strong><a name="item_modmetamask">$modifiermask = $term-&gt;ModMetaMask</a></strong><br />
@@ -1074,7 +1162,7 @@ Stop the timer.
   $term-&gt;{iow} = urxvt::iow
                  -&gt;new
                  -&gt;fd (fileno $term-&gt;{socket})
-                 -&gt;events (1) # wait for read data
+                 -&gt;events (urxvt::EVENT_READ)
                  -&gt;start
                  -&gt;cb (sub {
                    my ($iow, $revents) = @_;
@@ -1105,8 +1193,9 @@ Set the filedescriptor (not handle) to watch.
 <dt><strong><a name="item_events">$iow = $iow-&gt;events ($eventmask)</a></strong><br />
 </dt>
 <dd>
-Set the event mask to watch. Bit #0 (value <code>1</code>) enables watching for read
-data, Bit #1 (value <code>2</code>) enables watching for write data.
+Set the event mask to watch. The only allowed values are
+<code>urxvt::EVENT_READ</code> and <code>urxvt::EVENT_WRITE</code>, which might be ORed
+together, or <code>urxvt::EVENT_NONE</code>.
 </dd>
 <p></p>
 <dt><strong>$iow = $iow-&gt;start</strong><br />
diff --git a/doc/rxvtperl.3.man.in b/doc/rxvtperl.3.man.in

index 7fb87dd6d3ba4e45fb9d60821771691d0113be50..

index ..2597fb98edb68f689bb65733b6a6ad5f9ec3e089 100644

--- a/doc/rxvtperl.3.man.in
+++ b/doc/rxvtperl.3.man.in
@@ -129,7 +129,7 @@
 .\" ========================================================================
 .\"
 .IX Title "rxvt 3"
-.TH rxvt 3 "2006-01-09" "6.3" "RXVT-UNICODE"
+.TH rxvt 3 "2006-01-10" "6.3" "RXVT-UNICODE"
 .SH "NAME"
 @@RXVT_NAME@@perl \- rxvt\-unicode's embedded perl interpreter
 .SH "SYNOPSIS"
@@ -199,6 +199,16 @@ runtime.
 .IX Item "selection-popup (enabled by default)"
 Binds a popup menu to Ctrl\-Button3 that lets you convert the selection
 text into various other formats/action.
+.IP "searchable\-scrollback<hotkey> (enabled by default)" 4
+.IX Item "searchable-scrollback<hotkey> (enabled by default)"
+Adds regex search functionality to the scrollback buffer, triggered
+by a hotkey (default: \f(CW\*(C`M\-s\*(C'\fR). When in search mode, normal terminal
+input/output is suspended.
+.Sp
+\&\f(CW\*(C`/\*(C'\fR starts an incremental regex search, \f(CW\*(C`n\*(C'\fR searches further, \f(CW\*(C`p\*(C'\fR or
+\&\f(CW\*(C`N\*(C'\fR jump to the previous match, \f(CW\*(C`G\*(C'\fR jumps to the bottom and clears the
+history, \f(CW\*(C`enter\*(C'\fR leaves search mode at the current position and \f(CW\*(C`escape\*(C'\fR
+returns to the original position.
 .IP "digital-clock" 4
 .IX Item "digital-clock"
 Displays a digital clock using the built-in overlay.
@@ -243,23 +253,47 @@ encoding (often locale\-specific) and binary data.
 .IX Item "$octets"
 Either binary data or \- more common \- a text string encoded in a
 locale-specific way.
+.Sh "Extension Objects"
+.IX Subsection "Extension Objects"
+Very perl extension is a perl class. A separate perl object is created
+for each terminal and each extension and passed as the first parameter to
+hooks. So extensions can use their \f(CW$self\fR object without having to think
+about other extensions, with the exception of methods and members that
+begin with an underscore character \f(CW\*(C`_\*(C'\fR: these are reserved for internal
+use.
+.PP
+Although it isn't a \f(CW\*(C`urxvt::term\*(C'\fR object, you can call all methods of the
+\&\f(CW\*(C`urxvt::term\*(C'\fR class on this object.
+.PP
+It has the following methods and data members:
+.ie n .IP "$urxvt_term = $self\->{term}" 4
+.el .IP "$urxvt_term = \f(CW$self\fR\->{term}" 4
+.IX Item "$urxvt_term = $self->{term}"
+Returns the \f(CW\*(C`urxvt::term\*(C'\fR object associated with this instance of the
+extension. This member \fImust not\fR be changed in any way.
+.ie n .IP "$self\->enable ($hook_name => $cb\fR, [$hook_name => \f(CW$cb..])" 4
+.el .IP "$self\->enable ($hook_name => \f(CW$cb\fR, [$hook_name => \f(CW$cb\fR..])" 4
+.IX Item "$self->enable ($hook_name => $cb, [$hook_name => $cb..])"
+Dynamically enable the given hooks (named without the \f(CW\*(C`on_\*(C'\fR prefix) for
+this extension, replacing any previous hook. This is useful when you want
+to overwrite time-critical hooks only temporarily.
+.ie n .IP "$self\->disable ($hook_name[, $hook_name..])" 4
+.el .IP "$self\->disable ($hook_name[, \f(CW$hook_name\fR..])" 4
+.IX Item "$self->disable ($hook_name[, $hook_name..])"
+Dynamically disable the given hooks.
 .Sh "Hooks"
 .IX Subsection "Hooks"
 The following subroutines can be declared in extension files, and will be
 called whenever the relevant event happens.
 .PP
-The first argument passed to them is an object private to each terminal
-and extension package. You can call all \f(CW\*(C`urxvt::term\*(C'\fR methods on it, but
-its not a real \f(CW\*(C`urxvt::term\*(C'\fR object. Instead, the real \f(CW\*(C`urxvt::term\*(C'\fR
-object that is shared between all packages is stored in the \f(CW\*(C`term\*(C'\fR
-member. It is, however, blessed intot he package of the extension script,
-so for all practical purposes you can treat an extension script as a class.
+The first argument passed to them is an extension oject as described in
+the in the \f(CW\*(C`Extension Objects\*(C'\fR section.
 .PP
-All of them must return a boolean value. If it is true, then the event
-counts as being \fIconsumed\fR, and the invocation of other hooks is skipped,
-and the relevant action might not be carried out by the \*(C+ code.
+\&\fBAll\fR of these hooks must return a boolean value. If it is true, then the
+event counts as being \fIconsumed\fR, and the invocation of other hooks is
+skipped, and the relevant action might not be carried out by the \*(C+ code.
 .PP
-When in doubt, return a false value (preferably \f(CW\*(C`()\*(C'\fR).
+\&\fIWhen in doubt, return a false value (preferably \f(CI\*(C`()\*(C'\fI).\fR
 .ie n .IP "on_init $term" 4
 .el .IP "on_init \f(CW$term\fR" 4
 .IX Item "on_init $term"
@@ -342,6 +376,11 @@ can filter/change and output the text yourself by returning a true value
 and calling \f(CW\*(C`$term\->scr_add_lines\*(C'\fR yourself. Please note that this
 might be very slow, however, as your hook is called for \fBall\fR text being
 output.
+.ie n .IP "on_tt_write $term\fR, \f(CW$octets" 4
+.el .IP "on_tt_write \f(CW$term\fR, \f(CW$octets\fR" 4
+.IX Item "on_tt_write $term, $octets"
+Called whenever some data is written to the tty/pty and can be used to
+suppress or filter tty input.
 .ie n .IP "on_line_update $term\fR, \f(CW$row" 4
 .el .IP "on_line_update \f(CW$term\fR, \f(CW$row\fR" 4
 .IX Item "on_line_update $term, $row"
@@ -383,13 +422,13 @@ does focus in processing.
 .IX Item "on_focus_out $term"
 Called wheneever the window loses keyboard focus, before rxvt-unicode does
 focus out processing.
-.ie n .IP "on_key_press $term\fR, \f(CW$event\fR, \f(CW$octets" 4
-.el .IP "on_key_press \f(CW$term\fR, \f(CW$event\fR, \f(CW$octets\fR" 4
-.IX Item "on_key_press $term, $event, $octets"
+.ie n .IP "on_key_press $term\fR, \f(CW$event\fR, \f(CW$keysym\fR, \f(CW$octets" 4
+.el .IP "on_key_press \f(CW$term\fR, \f(CW$event\fR, \f(CW$keysym\fR, \f(CW$octets\fR" 4
+.IX Item "on_key_press $term, $event, $keysym, $octets"
 .PD 0
-.ie n .IP "on_key_release $term\fR, \f(CW$event" 4
-.el .IP "on_key_release \f(CW$term\fR, \f(CW$event\fR" 4
-.IX Item "on_key_release $term, $event"
+.ie n .IP "on_key_release $term\fR, \f(CW$event\fR, \f(CW$keysym" 4
+.el .IP "on_key_release \f(CW$term\fR, \f(CW$event\fR, \f(CW$keysym\fR" 4
+.IX Item "on_key_release $term, $event, $keysym"
 .ie n .IP "on_button_press $term\fR, \f(CW$event" 4
 .el .IP "on_button_press \f(CW$term\fR, \f(CW$event\fR" 4
 .IX Item "on_button_press $term, $event"
@@ -581,6 +620,11 @@ to see the actual list:
 \&  shade term_name title transparent transparent_all tripleclickwords
 \&  utmpInhibit visualBell
 .Ve
+.ie n .IP "$success = $term\fR\->parse_keysym ($keysym_spec, \f(CW$command_string)" 4
+.el .IP "$success = \f(CW$term\fR\->parse_keysym ($keysym_spec, \f(CW$command_string\fR)" 4
+.IX Item "$success = $term->parse_keysym ($keysym_spec, $command_string)"
+Adds a keymap translation exactly as specified via a resource. See the
+\&\f(CW\*(C`keysym\*(C'\fR resource in the @@RXVT_NAME@@(1) manpage.
 .ie n .IP "$rend = $term\->rstyle ([$new_rstyle])" 4
 .el .IP "$rend = \f(CW$term\fR\->rstyle ([$new_rstyle])" 4
 .IX Item "$rend = $term->rstyle ([$new_rstyle])"
@@ -613,26 +657,10 @@ by the next method).
 .el .IP "$oldtext = \f(CW$term\fR\->selection ([$newtext])" 4
 .IX Item "$oldtext = $term->selection ([$newtext])"
 Return the current selection text and optionally replace it by \f(CW$newtext\fR.
-.Sp
-#=item \f(CW$term\fR\->overlay ($x, \f(CW$y\fR, \f(CW$text\fR)
-#
-#Create a simple multi-line overlay box. See the next method for details.
-#
-#=cut
-#
-#sub urxvt::term::scr_overlay {
-#   my ($self, \f(CW$x\fR, \f(CW$y\fR, \f(CW$text\fR) = \f(CW@_\fR;
-#
-#   my \f(CW@lines\fR = split /\en/, \f(CW$text\fR;
-#
-#   my \f(CW$w\fR = 0;
-#   for (map \f(CW$self\fR\->strwidth ($_), \f(CW@lines\fR) {
-#      \f(CW$w\fR = \f(CW$_\fR if \f(CW$w\fR < \f(CW$_\fR;
-#   }
-#
-#   \f(CW$self\fR\->scr_overlay_new ($x, \f(CW$y\fR, \f(CW$w\fR, scalar \f(CW@lines\fR);
-#   \f(CW$self\fR\->scr_overlay_set (0, \f(CW$_\fR, \f(CW$lines\fR[$_]) for 0.. $#lines;
-#}
+.ie n .IP "$term\->overlay_simple ($x, $y\fR, \f(CW$text)" 4
+.el .IP "$term\->overlay_simple ($x, \f(CW$y\fR, \f(CW$text\fR)" 4
+.IX Item "$term->overlay_simple ($x, $y, $text)"
+Create a simple multi-line overlay box. See the next method for details.
 .ie n .IP "$term\->overlay ($x, $y\fR, \f(CW$width\fR, \f(CW$height\fR[, \f(CW$rstyle\fR[, \f(CW$border]])" 4
 .el .IP "$term\->overlay ($x, \f(CW$y\fR, \f(CW$width\fR, \f(CW$height\fR[, \f(CW$rstyle\fR[, \f(CW$border\fR]])" 4
 .IX Item "$term->overlay ($x, $y, $width, $height[, $rstyle[, $border]])"
@@ -685,6 +713,22 @@ Convert the given text string into the corresponding locale encoding.
 .el .IP "$string = \f(CW$term\fR\->locale_decode ($octets)" 4
 .IX Item "$string = $term->locale_decode ($octets)"
 Convert the given locale-encoded octets into a perl string.
+.ie n .IP "$term\->scr_xor_span ($beg_row, $beg_col\fR, \f(CW$end_row\fR, \f(CW$end_col\fR[, \f(CW$rstyle])" 4
+.el .IP "$term\->scr_xor_span ($beg_row, \f(CW$beg_col\fR, \f(CW$end_row\fR, \f(CW$end_col\fR[, \f(CW$rstyle\fR])" 4
+.IX Item "$term->scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle])"
+XORs the rendition values in the given span with the provided value
+(default: \f(CW\*(C`RS_RVid\*(C'\fR). Useful in refresh hooks to provide effects similar
+to the selection.
+.ie n .IP "$term\->scr_xor_rect ($beg_row, $beg_col\fR, \f(CW$end_row\fR, \f(CW$end_col\fR[, \f(CW$rstyle1\fR[, \f(CW$rstyle2]])" 4
+.el .IP "$term\->scr_xor_rect ($beg_row, \f(CW$beg_col\fR, \f(CW$end_row\fR, \f(CW$end_col\fR[, \f(CW$rstyle1\fR[, \f(CW$rstyle2\fR]])" 4
+.IX Item "$term->scr_xor_rect ($beg_row, $beg_col, $end_row, $end_col[, $rstyle1[, $rstyle2]])"
+Similar to \f(CW\*(C`scr_xor_span\*(C'\fR, but xors a rectangle instead. Trailing
+whitespace will additionally be xored with the \f(CW$rstyle2\fR, which defaults
+to \f(CW\*(C`RS_RVid | RS_Uline\*(C'\fR, which removes reverse video again and underlines
+it instead.
+.IP "$term\->scr_bell" 4
+.IX Item "$term->scr_bell"
+Ring the bell!
 .IP "$term\->scr_add_lines ($string)" 4
 .IX Item "$term->scr_add_lines ($string)"
 Write the given text string to the screen, as if output by the application
@@ -705,6 +749,13 @@ locale-specific encoding of the terminal and can contain command sequences
 Write the octets given in \f(CW$data\fR to the tty (i.e. as program input). To
 pass characters instead of octets, you should convert your strings first
 to the locale-specific encoding using \f(CW\*(C`$term\->locale_encode\*(C'\fR.
+.ie n .IP "$old_events = $term\->pty_ev_events ([$new_events])" 4
+.el .IP "$old_events = \f(CW$term\fR\->pty_ev_events ([$new_events])" 4
+.IX Item "$old_events = $term->pty_ev_events ([$new_events])"
+Replaces the event mask of the pty watcher by the given event mask. Can
+be used to suppress input and output handling to the pty/tty. See the
+description of \f(CW\*(C`urxvt::timer\->events\*(C'\fR. Make sure to always restore
+the previous value.
 .ie n .IP "$windowid = $term\->parent" 4
 .el .IP "$windowid = \f(CW$term\fR\->parent" 4
 .IX Item "$windowid = $term->parent"
@@ -752,6 +803,14 @@ Return the window id of the terminal window.
 .IX Item "$lines_in_scrollback = $term->nsaved"
 .PD
 Return various integers describing terminal characteristics.
+.ie n .IP "$lc_ctype = $term\->locale" 4
+.el .IP "$lc_ctype = \f(CW$term\fR\->locale" 4
+.IX Item "$lc_ctype = $term->locale"
+Returns the \s-1LC_CTYPE\s0 category string used by this rxvt\-unicode.
+.ie n .IP "$x_display = $term\->display_id" 4
+.el .IP "$x_display = \f(CW$term\fR\->display_id" 4
+.IX Item "$x_display = $term->display_id"
+Return the \s-1DISPLAY\s0 used by rxvt\-unicode.
 .ie n .IP "$modifiermask = $term\->ModLevel3Mask" 4
 .el .IP "$modifiermask = \f(CW$term\fR\->ModLevel3Mask" 4
 .IX Item "$modifiermask = $term->ModLevel3Mask"
@@ -968,7 +1027,7 @@ This class implements io watchers/events. Example:
 \&  $term->{iow} = urxvt::iow
 \&                 ->new
 \&                 ->fd (fileno $term->{socket})
-\&                 ->events (1) # wait for read data
+\&                 ->events (urxvt::EVENT_READ)
 \&                 ->start
 \&                 ->cb (sub {
 \&                   my ($iow, $revents) = @_;
@@ -992,8 +1051,9 @@ Set the filedescriptor (not handle) to watch.
 .ie n .IP "$iow = $iow\->events ($eventmask)" 4
 .el .IP "$iow = \f(CW$iow\fR\->events ($eventmask)" 4
 .IX Item "$iow = $iow->events ($eventmask)"
-Set the event mask to watch. Bit #0 (value \f(CW1\fR) enables watching for read
-data, Bit #1 (value \f(CW2\fR) enables watching for write data.
+Set the event mask to watch. The only allowed values are
+\&\f(CW\*(C`urxvt::EVENT_READ\*(C'\fR and \f(CW\*(C`urxvt::EVENT_WRITE\*(C'\fR, which might be ORed
+together, or \f(CW\*(C`urxvt::EVENT_NONE\*(C'\fR.
 .ie n .IP "$iow = $iow\->start" 4
 .el .IP "$iow = \f(CW$iow\fR\->start" 4
 .IX Item "$iow = $iow->start"
diff --git a/doc/rxvtperl.3.txt b/doc/rxvtperl.3.txt

index 1ecff56411fa30b4c21c9b8f4af61aeb1c639803..

index ..57a4b2b2f57d99e015b600065ab6521b842cb99d 100644

--- a/doc/rxvtperl.3.txt
+++ b/doc/rxvtperl.3.txt
@@ -52,6 +52,16 @@ DESCRIPTION
         Binds a popup menu to Ctrl-Button3 that lets you convert the
         selection text into various other formats/action.

+    searchable-scrollback<hotkey> (enabled by default)
+        Adds regex search functionality to the scrollback buffer, triggered
+        by a hotkey (default: "M-s"). When in search mode, normal terminal
+        input/output is suspended.
+
+        "/" starts an incremental regex search, "n" searches further, "p" or
+        "N" jump to the previous match, "G" jumps to the bottom and clears
+        the history, "enter" leaves search mode at the current position and
+        "escape" returns to the original position.
+
     digital-clock
         Displays a digital clock using the built-in overlay.

@@ -98,24 +108,44 @@ DESCRIPTION
         Either binary data or - more common - a text string encoded in a
         locale-specific way.

+  Extension Objects
+    Very perl extension is a perl class. A separate perl object is created
+    for each terminal and each extension and passed as the first parameter
+    to hooks. So extensions can use their $self object without having to
+    think about other extensions, with the exception of methods and members
+    that begin with an underscore character "_": these are reserved for
+    internal use.
+
+    Although it isn't a "urxvt::term" object, you can call all methods of
+    the "urxvt::term" class on this object.
+
+    It has the following methods and data members:
+
+    $urxvt_term = $self->{term}
+        Returns the "urxvt::term" object associated with this instance of
+        the extension. This member *must not* be changed in any way.
+
+    $self->enable ($hook_name => $cb, [$hook_name => $cb..])
+        Dynamically enable the given hooks (named without the "on_" prefix)
+        for this extension, replacing any previous hook. This is useful when
+        you want to overwrite time-critical hooks only temporarily.
+
+    $self->disable ($hook_name[, $hook_name..])
+        Dynamically disable the given hooks.
+
   Hooks
     The following subroutines can be declared in extension files, and will
     be called whenever the relevant event happens.

-    The first argument passed to them is an object private to each terminal
-    and extension package. You can call all "urxvt::term" methods on it, but
-    its not a real "urxvt::term" object. Instead, the real "urxvt::term"
-    object that is shared between all packages is stored in the "term"
-    member. It is, however, blessed intot he package of the extension
-    script, so for all practical purposes you can treat an extension script
-    as a class.
+    The first argument passed to them is an extension oject as described in
+    the in the "Extension Objects" section.

-    All of them must return a boolean value. If it is true, then the event
-    counts as being *consumed*, and the invocation of other hooks is
+    All of these hooks must return a boolean value. If it is true, then the
+    event counts as being *consumed*, and the invocation of other hooks is
     skipped, and the relevant action might not be carried out by the C++
     code.

-    When in doubt, return a false value (preferably "()").
+    *When in doubt, return a false value (preferably "()").*

     on_init $term
         Called after a new terminal object has been initialized, but before
@@ -191,6 +221,10 @@ DESCRIPTION
         Please note that this might be very slow, however, as your hook is
         called for all text being output.

+    on_tt_write $term, $octets
+        Called whenever some data is written to the tty/pty and can be used
+        to suppress or filter tty input.
+
     on_line_update $term, $row
         Called whenever a line was updated or changed. Can be used to filter
         screen output (e.g. underline urls or other useless stuff). Only
@@ -227,8 +261,8 @@ DESCRIPTION
         Called wheneever the window loses keyboard focus, before
         rxvt-unicode does focus out processing.

-    on_key_press $term, $event, $octets
-    on_key_release $term, $event
+    on_key_press $term, $event, $keysym, $octets
+    on_key_release $term, $event, $keysym
     on_button_press $term, $event
     on_button_release $term, $event
     on_motion_notify $term, $event
@@ -388,6 +422,10 @@ DESCRIPTION
           shade term_name title transparent transparent_all tripleclickwords
           utmpInhibit visualBell

+    $success = $term->parse_keysym ($keysym_spec, $command_string)
+        Adds a keymap translation exactly as specified via a resource. See
+        the "keysym" resource in the rxvt(1) manpage.
+
     $rend = $term->rstyle ([$new_rstyle])
         Return and optionally change the current rendition. Text that is
         output by the terminal application will use this style.
@@ -411,13 +449,9 @@ DESCRIPTION
         Return the current selection text and optionally replace it by
         $newtext.

-        #=item $term->overlay ($x, $y, $text) # #Create a simple multi-line
-        overlay box. See the next method for details. # #=cut # #sub
-        urxvt::term::scr_overlay { # my ($self, $x, $y, $text) = @_; # # my
-        @lines = split /\n/, $text; # # my $w = 0; # for (map
-        $self->strwidth ($_), @lines) { # $w = $_ if $w < $_; # } # #
-        $self->scr_overlay_new ($x, $y, $w, scalar @lines); #
-        $self->scr_overlay_set (0, $_, $lines[$_]) for 0.. $#lines; #}
+    $term->overlay_simple ($x, $y, $text)
+        Create a simple multi-line overlay box. See the next method for
+        details.

     $term->overlay ($x, $y, $width, $height[, $rstyle[, $border]])
         Create a new (empty) overlay at the given position with the given
@@ -462,6 +496,21 @@ DESCRIPTION
     $string = $term->locale_decode ($octets)
         Convert the given locale-encoded octets into a perl string.

+    $term->scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle])
+        XORs the rendition values in the given span with the provided value
+        (default: "RS_RVid"). Useful in refresh hooks to provide effects
+        similar to the selection.
+
+    $term->scr_xor_rect ($beg_row, $beg_col, $end_row, $end_col[, $rstyle1[,
+    $rstyle2]])
+        Similar to "scr_xor_span", but xors a rectangle instead. Trailing
+        whitespace will additionally be xored with the $rstyle2, which
+        defaults to "RS_RVid | RS_Uline", which removes reverse video again
+        and underlines it instead.
+
+    $term->scr_bell
+        Ring the bell!
+
     $term->scr_add_lines ($string)
         Write the given text string to the screen, as if output by the
         application running inside the terminal. It may not contain command
@@ -484,6 +533,12 @@ DESCRIPTION
         strings first to the locale-specific encoding using
         "$term->locale_encode".

+    $old_events = $term->pty_ev_events ([$new_events])
+        Replaces the event mask of the pty watcher by the given event mask.
+        Can be used to suppress input and output handling to the pty/tty.
+        See the description of "urxvt::timer->events". Make sure to always
+        restore the previous value.
+
     $windowid = $term->parent
         Return the window id of the toplevel window.

@@ -504,6 +559,12 @@ DESCRIPTION
     $lines_in_scrollback = $term->nsaved
         Return various integers describing terminal characteristics.

+    $lc_ctype = $term->locale
+        Returns the LC_CTYPE category string used by this rxvt-unicode.
+
+    $x_display = $term->display_id
+        Return the DISPLAY used by rxvt-unicode.
+
     $modifiermask = $term->ModLevel3Mask
     $modifiermask = $term->ModMetaMask
     $modifiermask = $term->ModNumLockMask
@@ -675,7 +736,7 @@ DESCRIPTION
           $term->{iow} = urxvt::iow
                          ->new
                          ->fd (fileno $term->{socket})
-                         ->events (1) # wait for read data
+                         ->events (urxvt::EVENT_READ)
                          ->start
                          ->cb (sub {
                            my ($iow, $revents) = @_;
@@ -695,8 +756,9 @@ DESCRIPTION
             Set the filedescriptor (not handle) to watch.

         $iow = $iow->events ($eventmask)
-            Set the event mask to watch. Bit #0 (value 1) enables watching
-            for read data, Bit #1 (value 2) enables watching for write data.
+            Set the event mask to watch. The only allowed values are
+            "urxvt::EVENT_READ" and "urxvt::EVENT_WRITE", which might be
+            ORed together, or "urxvt::EVENT_NONE".

         $iow = $iow->start
             Start watching for requested events on the given handle.
diff --git a/src/perl/searchable-scrollback b/src/perl/searchable-scrollback

index 66274e911a84e43901a7c2842b616392e8303531..

index ..428415f5e77540c31189d07fbdf4db1e2c2408c6 100644

--- a/src/perl/searchable-scrollback
+++ b/src/perl/searchable-scrollback
@@ -46,7 +46,7 @@ sub enter {
    );

    $self->{manpage_overlay} = $self->overlay (0, -2, $self->ncol, 1, urxvt::OVERLAY_RSTYLE, 0);
-   $self->{manpage_overlay}->set (0, 0, "scrollback search, see man ${urxvt::RXVTNAME}perl");
+   $self->{manpage_overlay}->set (0, 0, "scrollback search, see man ${urxvt::RXVTNAME}perl for details");

    $self->idle;
 }
diff --git a/src/urxvt.pm b/src/urxvt.pm

index 0f286b15dd75badd376fdb00d02ea978d3d4078c..

index ..e3ccecdf4918df86dcb567e517b7fddb18f9bed4 100644

--- a/src/urxvt.pm
+++ b/src/urxvt.pm
@@ -68,13 +68,16 @@ runtime.
 Binds a popup menu to Ctrl-Button3 that lets you convert the selection
 text into various other formats/action.

-=item searchable-scrollback (enabled by default)
+=item searchable-scrollback<hotkey> (enabled by default)

-Adds regex search functionality to the scrollback buffer, triggered by a
-hotkey (default: C<M-s>). When in search mode, terminal input/output is
-suspended, C</> starts an incremental regex search, C<n> searches further,
-C<p> jumps to the previous match. C<enter> leaves search mode at the
-current position and C<escape> returns to the original position.
+Adds regex search functionality to the scrollback buffer, triggered
+by a hotkey (default: C<M-s>). When in search mode, normal terminal
+input/output is suspended.
+
+C</> starts an incremental regex search, C<n> searches further, C<p> or
+C<N> jump to the previous match, C<G> jumps to the bottom and clears the
+history, C<enter> leaves search mode at the current position and C<escape>
+returns to the original position.

 =item digital-clock

-----END OF PAGE-----

-- Response ended

-- Page fetched on Sun Jun 2 13:49:48 2024