diff options
Diffstat (limited to 'src/nvim/option.c')
-rw-r--r-- | src/nvim/option.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/nvim/option.c b/src/nvim/option.c index a811d749b9..ad481af7fa 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -855,15 +855,18 @@ void set_init_3(void) p_srr = (char_u *)">&"; options[idx_srr].def_val[VI_DEFAULT] = p_srr; } - } else if ( fnamecmp(p, "sh") == 0 - || fnamecmp(p, "ksh") == 0 - || fnamecmp(p, "mksh") == 0 - || fnamecmp(p, "pdksh") == 0 - || fnamecmp(p, "zsh") == 0 - || fnamecmp(p, "zsh-beta") == 0 - || fnamecmp(p, "bash") == 0 - || fnamecmp(p, "fish") == 0 - ) { + } else if (fnamecmp(p, "sh") == 0 + || fnamecmp(p, "ksh") == 0 + || fnamecmp(p, "mksh") == 0 + || fnamecmp(p, "pdksh") == 0 + || fnamecmp(p, "zsh") == 0 + || fnamecmp(p, "zsh-beta") == 0 + || fnamecmp(p, "bash") == 0 + || fnamecmp(p, "fish") == 0 + || fnamecmp(p, "ash") == 0 + || fnamecmp(p, "dash") == 0 + ) { + // Always use POSIX shell style redirection if we reach this if (do_sp) { p_sp = (char_u *)"2>&1| tee"; options[idx_sp].def_val[VI_DEFAULT] = p_sp; @@ -3638,9 +3641,11 @@ char_u *check_stl_option(char_u *s) return illegal_char(errbuf, sizeof(errbuf), *s); } if (*s == '{') { + int reevaluate = (*s == '%'); s++; - while (*s != '}' && *s) + while ((*s != '}' || (reevaluate && s[-1] != '%')) && *s) { s++; + } if (*s != '}') { return (char_u *)N_("E540: Unclosed expression sequence"); } |