summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Doc/Zsh/zle.yo5
-rw-r--r--Src/Zle/zle_hist.c10
-rw-r--r--Src/Zle/zle_params.c12
4 files changed, 31 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index aebf5b2c4..63bf0263b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2002-12-06 Felix Rosencrantz <f_rosencrantz@yahoo.com>
+
+ * 17983: Src/Zle/zle_hist.c, Src/Zle/zle_params.c, Doc/Zsh/zle.yo:
+ Added zle LASTSEARCH parameter, giving read access to last incremental
+ search.
+
2002-12-06 Bart Schaefer <schaefer@zsh.org>
* 17985: Test/B02typeset.ztst: adjust hiding/tagging test so it no
diff --git a/Doc/Zsh/zle.yo b/Doc/Zsh/zle.yo
index 715c3e00e..771ff4d18 100644
--- a/Doc/Zsh/zle.yo
+++ b/Doc/Zsh/zle.yo
@@ -627,6 +627,11 @@ Unlike a normal array, only a maximum of eight elements may be written;
any extra are ignored. If fewer than eight elements are given, the
remaining elements of the kill ring will be treated as undefined.
)
+
+vindex(LASTSEARCH)
+item(tt(LASTSEARCH) (scalar))(
+The last search string used by an interactive search ; read-only.
+)
vindex(LASTWIDGET)
item(tt(LASTWIDGET) (scalar))(
The name of the last widget that was executed; read-only.
diff --git a/Src/Zle/zle_hist.c b/Src/Zle/zle_hist.c
index 54da51710..1c17defc7 100644
--- a/Src/Zle/zle_hist.c
+++ b/Src/Zle/zle_hist.c
@@ -41,6 +41,14 @@ int lastcol;
/**/
int histline;
+/* Previous search string use in an incremental search */
+
+/**/
+char *previous_search = NULL;
+
+/**/
+int previous_search_len = 0;
+
#define ZLETEXT(X) ((X)->zle_text ? (X)->zle_text : (X)->text)
/**/
@@ -757,8 +765,6 @@ doisearch(char **args, int dir)
int hl = histline, savekeys = -1, feep = 0;
Thingy cmd;
char *okeymap;
- static char *previous_search = NULL;
- static int previous_search_len = 0;
Histent he;
if (!(he = quietgethist(hl)))
diff --git a/Src/Zle/zle_params.c b/Src/Zle/zle_params.c
index 1987974d2..c8b518cbf 100644
--- a/Src/Zle/zle_params.c
+++ b/Src/Zle/zle_params.c
@@ -89,6 +89,8 @@ static struct zleparam {
zleunsetfn, NULL },
{ "POSTDISPLAY", PM_SCALAR, FN(set_postdisplay), FN(get_postdisplay),
zleunsetfn, NULL },
+ { "LASTSEARCH", PM_SCALAR | PM_READONLY, NULL, FN(get_lsearch),
+ zleunsetfn, NULL },
{ NULL, 0, NULL, NULL, NULL, NULL }
};
@@ -526,3 +528,13 @@ free_prepostdisplay(void)
if (postdisplaylen)
set_prepost(&postdisplay, &postdisplaylen, NULL);
}
+
+/**/
+static char *
+get_lsearch(Param pm)
+{
+ if (previous_search_len)
+ return metafy(previous_search, previous_search_len, META_HEAPDUP);
+ else
+ return "";
+}