summaryrefslogtreecommitdiff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/Zle/zle_main.c9
-rw-r--r--Src/Zle/zle_params.c10
2 files changed, 19 insertions, 0 deletions
diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c
index 7ec8afeb6..db70e7d7e 100644
--- a/Src/Zle/zle_main.c
+++ b/Src/Zle/zle_main.c
@@ -58,6 +58,11 @@ mod_export int incompctlfunc;
/**/
mod_export int hascompmod;
+/* Increment for each nested recursive-edit */
+
+/**/
+mod_export int zle_recursive;
+
/* ZLRF_* flags passed to zleread() */
/**/
@@ -1941,6 +1946,8 @@ recursiveedit(UNUSED(char **args))
int locerror;
int q = queue_signal_level();
+ ++zle_recursive;
+
/* zlecore() expects to be entered with signal queue disabled */
dont_queue_signals();
@@ -1950,6 +1957,8 @@ recursiveedit(UNUSED(char **args))
restore_queue_signals(q);
+ --zle_recursive;
+
locerror = errflag ? 1 : 0;
errflag = done = eofsent = 0;
diff --git a/Src/Zle/zle_params.c b/Src/Zle/zle_params.c
index 20735e619..9f4fb5ac2 100644
--- a/Src/Zle/zle_params.c
+++ b/Src/Zle/zle_params.c
@@ -93,6 +93,8 @@ static const struct gsu_integer numeric_gsu =
{ get_numeric, set_numeric, unset_numeric };
static const struct gsu_integer pending_gsu =
{ get_pending, NULL, zleunsetfn };
+static const struct gsu_integer recursive_gsu =
+{ get_recursive, NULL, zleunsetfn };
static const struct gsu_integer region_active_gsu =
{ get_region_active, set_region_active, zleunsetfn };
static const struct gsu_integer undo_change_no_gsu =
@@ -180,6 +182,7 @@ static struct zleparam {
{ "SUFFIX_START", PM_INTEGER, GSU(suffixstart_gsu), NULL },
{ "SUFFIX_END", PM_INTEGER, GSU(suffixend_gsu), NULL },
{ "SUFFIX_ACTIVE", PM_INTEGER | PM_READONLY, GSU(suffixactive_gsu), NULL },
+ { "ZLE_RECURSIVE", PM_INTEGER | PM_READONLY, GSU(recursive_gsu), NULL },
{ "ZLE_STATE", PM_SCALAR | PM_READONLY, GSU(zle_state_gsu), NULL },
{ NULL, 0, NULL, NULL }
};
@@ -528,6 +531,13 @@ get_pending(UNUSED(Param pm))
/**/
static zlong
+get_recursive(UNUSED(Param pm))
+{
+ return zle_recursive;
+}
+
+/**/
+static zlong
get_yankstart(UNUSED(Param pm))
{
return yankb;