diff options
Diffstat (limited to 'Src')
-rw-r--r-- | Src/init.c | 2 | ||||
-rw-r--r-- | Src/params.c | 20 |
2 files changed, 20 insertions, 2 deletions
diff --git a/Src/init.c b/Src/init.c index c12043b88..a1162b318 100644 --- a/Src/init.c +++ b/Src/init.c @@ -790,7 +790,7 @@ init_term(void) tcstr[TCCLEARSCREEN] = ztrdup("\14"); tclen[TCCLEARSCREEN] = 1; } - rprompt_indent = 1; + rprompt_indent = 1; /* If you change this, update rprompt_indent_unsetfn() */ /* The following is an attempt at a heuristic, * but it fails in some cases */ /* rprompt_indent = ((hasam && !hasbw) || hasye || !tccan(TCLEFT)); */ diff --git a/Src/params.c b/Src/params.c index 8942fefc2..b89fb74eb 100644 --- a/Src/params.c +++ b/Src/params.c @@ -128,6 +128,11 @@ struct timeval shtimer; /**/ mod_export int termflags; +/* Forward declaration */ + +static void +rprompt_indent_unsetfn(Param pm, int exp); + /* Standard methods for get/set/unset pointers in parameters */ /**/ @@ -241,6 +246,9 @@ static const struct gsu_integer argc_gsu = static const struct gsu_array pipestatus_gsu = { pipestatgetfn, pipestatsetfn, stdunsetfn }; +static const struct gsu_integer rprompt_indent_gsu = +{ intvargetfn, zlevarsetfn, rprompt_indent_unsetfn }; + /* Nodes for special parameters for parameter hash table */ #ifdef HAVE_UNION_INIT @@ -327,7 +335,7 @@ IPDEF4("ZSH_SUBSHELL", &zsh_subshell), #define IPDEF5U(A,B,F) {{NULL,A,PM_INTEGER|PM_SPECIAL|PM_UNSET},BR((void *)B),GSU(F),10,0,NULL,NULL,NULL,0} IPDEF5("COLUMNS", &zterm_columns, zlevar_gsu), IPDEF5("LINES", &zterm_lines, zlevar_gsu), -IPDEF5U("ZLE_RPROMPT_INDENT", &rprompt_indent, zlevar_gsu), +IPDEF5U("ZLE_RPROMPT_INDENT", &rprompt_indent, rprompt_indent_gsu), IPDEF5("SHLVL", &shlvl, varinteger_gsu), /* Don't import internal integer status variables. */ @@ -3733,6 +3741,16 @@ zlevarsetfn(Param pm, zlong x) adjustwinsize(2 + (p == &zterm_columns)); } + +/* Implements gsu_integer.unsetfn for ZLE_RPROMPT_INDENT; see stdunsetfn() */ + +static void +rprompt_indent_unsetfn(Param pm, int exp) +{ + stdunsetfn(pm, exp); + rprompt_indent = 1; /* Keep this in sync with init_term() */ +} + /* Function to set value of generic special scalar * * parameter. data is pointer to a character pointer * * representing the scalar (string). */ |