aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2018-07-18 14:30:11 +0200
committerGitHub <noreply@github.com>2018-07-18 14:30:11 +0200
commit489d32f2b88f8d0796b10e59a4d8b64e4a49b15b (patch)
treee036eeb6dc98eae02df4ad4abd330a9eb0a20fe5
parentcd94dd6bb29f3140cb25b30e98fba9123bfd408f (diff)
downloadrneovim-489d32f2b88f8d0796b10e59a4d8b64e4a49b15b.tar.gz
rneovim-489d32f2b88f8d0796b10e59a4d8b64e4a49b15b.tar.bz2
rneovim-489d32f2b88f8d0796b10e59a4d8b64e4a49b15b.zip
startup: fix ":if 0|syntax on|endif" bug (#8731)
Problem: ":if 0|syntax {on,off}|endif" skips the default of "syntax on" because the executor was setting the `did_syntax_onoff` flag even though "syntax {on,off}" is not actually executed. closes #8728
-rw-r--r--src/nvim/syntax.c2
-rw-r--r--test/functional/options/defaults_spec.lua7
2 files changed, 8 insertions, 1 deletions
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c
index 98e457db18..87b2fe24a4 100644
--- a/src/nvim/syntax.c
+++ b/src/nvim/syntax.c
@@ -3425,9 +3425,9 @@ static void syn_cmd_off(exarg_T *eap, int syncing)
static void syn_cmd_onoff(exarg_T *eap, char *name)
FUNC_ATTR_NONNULL_ALL
{
- did_syntax_onoff = true;
eap->nextcmd = check_nextcmd(eap->arg);
if (!eap->skip) {
+ did_syntax_onoff = true;
char buf[100];
memcpy(buf, "so ", 4);
vim_snprintf(buf + 3, sizeof(buf) - 3, SYNTAX_FNAME, name);
diff --git a/test/functional/options/defaults_spec.lua b/test/functional/options/defaults_spec.lua
index 787ec366b8..f6f3f02f45 100644
--- a/test/functional/options/defaults_spec.lua
+++ b/test/functional/options/defaults_spec.lua
@@ -118,6 +118,13 @@ describe('startup defaults', function()
clear('-u', 'NORC', '-c', 'syntax off')
eq(0, eval('exists("g:syntax_on")'))
end)
+
+ it('":if 0|syntax on|endif" does not affect default #8728', function()
+ clear('-u', 'NORC', '--cmd', ':if 0|syntax on|endif')
+ eq(1, eval('exists("g:syntax_on")'))
+ clear('-u', 'NORC', '--cmd', ':if 0|syntax off|endif')
+ eq(1, eval('exists("g:syntax_on")'))
+ end)
end)
describe("'fillchars'", function()