summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--Doc/Zsh/params.yo7
-rw-r--r--Doc/Zsh/zle.yo8
-rw-r--r--Src/Zle/zle_keymap.c10
-rw-r--r--Src/Zle/zle_main.c3
5 files changed, 33 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 7903bb68c..f3d91b5c6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-09-08 Peter Stephenson <pws@csr.com>
+
+ * 28241: Doc/Zsh/zle.yo, Src/Zle/zle_keymap.c: don't list .safe
+ keymap with "bindkey -lL", you don't get there from here.
+
+ * 28237: Doc/Zsh/params.yo, Doc/Zsh/zle.yo, Src/Zle/zle_main.c:
+ set ZLE_LINE_ABORTED to line so far when ZLE aborts on an error.
+
2010-09-06 Peter Stephenson <pws@csr.com>
* unposted: Doc/Zsh/zle.yo: small typo.
@@ -13604,5 +13612,5 @@
*****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.5071 $
+* $Revision: 1.5072 $
*****************************************************
diff --git a/Doc/Zsh/params.yo b/Doc/Zsh/params.yo
index b78896020..5d85f58e3 100644
--- a/Doc/Zsh/params.yo
+++ b/Doc/Zsh/params.yo
@@ -1448,6 +1448,13 @@ item(tt(ZDOTDIR))(
The directory to search for shell startup files (.zshrc, etc),
if not tt($HOME).
)
+vindex(ZLE_LINE_ABORTED)
+item(tt(ZLE_LINE_ABORTED))(
+This parameter is set by the line editor when an error occurs. It
+contains the line that was being edited at the point of the error.
+`tt(print -zr -- $ZLE_LINE_ABORTED)' can be used to recover the line.
+Only the most recent line of this kind is remembered.
+)
vindex(ZLE_REMOVE_SUFFIX_CHARS)
vindex(ZLE_SPACE_SUFFIX_CHARS)
xitem(tt(ZLE_REMOVE_SUFFIX_CHARS))
diff --git a/Doc/Zsh/zle.yo b/Doc/Zsh/zle.yo
index 37b8187c1..87933b93d 100644
--- a/Doc/Zsh/zle.yo
+++ b/Doc/Zsh/zle.yo
@@ -185,7 +185,10 @@ those keymaps.
If the tt(-L) option is also used, list in the form of tt(bindkey)
commands to create or link the keymaps. `tt(bindkey -lL
main)' shows which keymap is linked to `tt(main)', if any, and hence if
-the standard emacs or vi emulation is in effect.
+the standard emacs or vi emulation is in effect. This option does
+not show the tt(.safe) keymap because it cannot be created in that
+fashion; however, neither is `tt(bindkey -lL .safe)' reported as an
+error, it simply outputs nothing.
)
item(tt(-d))(
Delete all existing keymaps and reset to the default state.
@@ -2057,7 +2060,8 @@ tindex(send-break)
item(tt(send-break) (^G ESC-^G) (unbound) (unbound))(
Abort the current editor function, e.g. tt(execute-named-command), or the
editor itself, e.g. if you are in tt(vared). Otherwise abort the parsing of
-the current line.
+the current line; in this case the aborted line is available in the shell
+variable tt(ZLE_LINE_ABORTED).
)
tindex(run-help)
item(tt(run-help) (ESC-H ESC-h) (unbound) (unbound))(
diff --git a/Src/Zle/zle_keymap.c b/Src/Zle/zle_keymap.c
index 8fa8e9883..0531c18ca 100644
--- a/Src/Zle/zle_keymap.c
+++ b/Src/Zle/zle_keymap.c
@@ -829,12 +829,18 @@ bin_bindkey_lsmaps(char *name, UNUSED(char *kmname), UNUSED(Keymap km), char **a
/**/
static void
-scanlistmaps(HashNode hn, int list)
+scanlistmaps(HashNode hn, int list_verbose)
{
KeymapName n = (KeymapName) hn;
- if (list) {
+ if (list_verbose) {
Keymap km = n->keymap;
+ /*
+ * Don't list ".safe" as a bindkey command; we can't
+ * actually create it that way.
+ */
+ if (!strcmp(n->nam, ".safe"))
+ return;
fputs("bindkey -", stdout);
if (km->primary && km->primary != n) {
KeymapName pn = km->primary;
diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c
index 5c6b65db3..641880ccf 100644
--- a/Src/Zle/zle_main.c
+++ b/Src/Zle/zle_main.c
@@ -1226,6 +1226,9 @@ zleread(char **lp, char **rp, int flags, int context)
zlecore();
+ if (errflag)
+ setsparam("ZLE_LINE_ABORTED", zlegetline(NULL, NULL));
+
if (done && !exit_pending && !errflag &&
(initthingy = rthingy_nocreate("zle-line-finish"))) {
int saverrflag = errflag;