Mercurial > vim
diff src/userfunc.c @ 19253:a8d2d3c8f0b3 v8.2.0185
patch 8.2.0185: Vim9 script: cannot use "if has()" to skip lines
Commit: https://github.com/vim/vim/commit/a259d8d30bc289764925fc42db1dbe774f0bb3f8
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jan 31 20:10:50 2020 +0100
patch 8.2.0185: Vim9 script: cannot use "if has()" to skip lines
Problem: Vim9 script: cannot use "if has()" to skip lines.
Solution: Evaluate constant expression at runtime.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 31 Jan 2020 20:15:05 +0100 |
parents | 77cd94083850 |
children | 9fcdeaa18bd1 |
line wrap: on
line diff
--- a/src/userfunc.c +++ b/src/userfunc.c @@ -2691,9 +2691,10 @@ ex_function(exarg_T *eap) } } - // Check for ":append", ":change", ":insert". + // Check for ":append", ":change", ":insert". Not for :def. p = skip_range(p, NULL); - if ((p[0] == 'a' && (!ASCII_ISALPHA(p[1]) || p[1] == 'p')) + if (eap->cmdidx != CMD_def + && ((p[0] == 'a' && (!ASCII_ISALPHA(p[1]) || p[1] == 'p')) || (p[0] == 'c' && (!ASCII_ISALPHA(p[1]) || (p[1] == 'h' && (!ASCII_ISALPHA(p[2]) || (p[2] == 'a' @@ -2701,7 +2702,10 @@ ex_function(exarg_T *eap) || !ASCII_ISALPHA(p[6]))))))) || (p[0] == 'i' && (!ASCII_ISALPHA(p[1]) || (p[1] == 'n' - && (!ASCII_ISALPHA(p[2]) || (p[2] == 's')))))) + && (!ASCII_ISALPHA(p[2]) + || (p[2] == 's' + && (!ASCII_ISALPHA(p[3]) + || p[3] == 'e')))))))) skip_until = vim_strsave((char_u *)"."); // Check for ":python <<EOF", ":tcl <<EOF", etc.