1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-28 05:00:59 +01:00

40745 + 40753: Fix 'unset ZLE_RPROMPT_INDENT' not restoring the default behaviour.

To reproduce:

    RPS1=foo
    ZLE_RPROMPT_INDENT=42
    unset ZLE_RPROMPT_INDENT
This commit is contained in:
Daniel Shahaf 2017-03-05 22:25:33 +00:00
parent a5482971b7
commit 67d882479b
3 changed files with 23 additions and 2 deletions

View file

@ -1,5 +1,8 @@
2017-03-08 Daniel Shahaf <d.s@daniel.shahaf.name>
* 40745 + 40753: Src/init.c, Src/params.c: Fix 'unset
ZLE_RPROMPT_INDENT' not restoring the default behaviour.
* 40744: Doc/Zsh/grammar.yo: Document the SHORT_LOOPS 'function'
syntax.

View file

@ -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)); */

View file

@ -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). */