summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0281
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0281')
-rw-r--r--data/vim/patches/8.1.0281738
1 files changed, 0 insertions, 738 deletions
diff --git a/data/vim/patches/8.1.0281 b/data/vim/patches/8.1.0281
deleted file mode 100644
index 9efb07608..000000000
--- a/data/vim/patches/8.1.0281
+++ /dev/null
@@ -1,738 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.0281
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 8.1.0281
-Problem: Parsing command modifiers is not separated.
-Solution: Move command modifier parsing to a separate function.
-Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/ex_cmds.h,
- src/globals.h, src/feature.h
-
-
-*** ../vim-8.1.0280/src/ex_docmd.c 2018-08-10 23:13:07.934024645 +0200
---- src/ex_docmd.c 2018-08-13 23:27:03.980298529 +0200
-***************
-*** 1709,1721 ****
- char_u *errormsg = NULL; /* error message */
- char_u *after_modifier = NULL;
- exarg_T ea; /* Ex command arguments */
-- long verbose_save = -1;
- int save_msg_scroll = msg_scroll;
-- int save_msg_silent = -1;
-- int did_esilent = 0;
-- #ifdef HAVE_SANDBOX
-- int did_sandbox = FALSE;
-- #endif
- cmdmod_T save_cmdmod;
- int ni; /* set when Not Implemented */
- char_u *cmd;
---- 1709,1715 ----
-***************
-*** 1742,1748 ****
- * recursive calls.
- */
- save_cmdmod = cmdmod;
-- vim_memset(&cmdmod, 0, sizeof(cmdmod));
-
- /* "#!anything" is handled like a comment. */
- if ((*cmdlinep)[0] == '#' && (*cmdlinep)[1] == '!')
---- 1736,1741 ----
-***************
-*** 1750,1977 ****
-
- /*
- * Repeat until no more command modifiers are found.
- */
- ea.cmd = *cmdlinep;
-! for (;;)
-! {
-! /*
-! * 1. Skip comment lines and leading white space and colons.
-! */
-! while (*ea.cmd == ' ' || *ea.cmd == '\t' || *ea.cmd == ':')
-! ++ea.cmd;
-!
-! /* in ex mode, an empty line works like :+ */
-! if (*ea.cmd == NUL && exmode_active
-! && (getline_equal(fgetline, cookie, getexmodeline)
-! || getline_equal(fgetline, cookie, getexline))
-! && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
-! {
-! ea.cmd = (char_u *)"+";
-! ex_pressedreturn = TRUE;
-! }
-!
-! /* ignore comment and empty lines */
-! if (*ea.cmd == '"')
-! goto doend;
-! if (*ea.cmd == NUL)
-! {
-! ex_pressedreturn = TRUE;
-! goto doend;
-! }
-!
-! /*
-! * 2. Handle command modifiers.
-! */
-! p = skip_range(ea.cmd, NULL);
-! switch (*p)
-! {
-! /* When adding an entry, also modify cmd_exists(). */
-! case 'a': if (!checkforcmd(&ea.cmd, "aboveleft", 3))
-! break;
-! cmdmod.split |= WSP_ABOVE;
-! continue;
-!
-! case 'b': if (checkforcmd(&ea.cmd, "belowright", 3))
-! {
-! cmdmod.split |= WSP_BELOW;
-! continue;
-! }
-! if (checkforcmd(&ea.cmd, "browse", 3))
-! {
-! #ifdef FEAT_BROWSE_CMD
-! cmdmod.browse = TRUE;
-! #endif
-! continue;
-! }
-! if (!checkforcmd(&ea.cmd, "botright", 2))
-! break;
-! cmdmod.split |= WSP_BOT;
-! continue;
-!
-! case 'c': if (!checkforcmd(&ea.cmd, "confirm", 4))
-! break;
-! #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
-! cmdmod.confirm = TRUE;
-! #endif
-! continue;
-!
-! case 'k': if (checkforcmd(&ea.cmd, "keepmarks", 3))
-! {
-! cmdmod.keepmarks = TRUE;
-! continue;
-! }
-! if (checkforcmd(&ea.cmd, "keepalt", 5))
-! {
-! cmdmod.keepalt = TRUE;
-! continue;
-! }
-! if (checkforcmd(&ea.cmd, "keeppatterns", 5))
-! {
-! cmdmod.keeppatterns = TRUE;
-! continue;
-! }
-! if (!checkforcmd(&ea.cmd, "keepjumps", 5))
-! break;
-! cmdmod.keepjumps = TRUE;
-! continue;
-!
-! case 'f': /* only accept ":filter {pat} cmd" */
-! {
-! char_u *reg_pat;
-!
-! if (!checkforcmd(&p, "filter", 4)
-! || *p == NUL || ends_excmd(*p))
-! break;
-! if (*p == '!')
-! {
-! cmdmod.filter_force = TRUE;
-! p = skipwhite(p + 1);
-! if (*p == NUL || ends_excmd(*p))
-! break;
-! }
-! p = skip_vimgrep_pat(p, &reg_pat, NULL);
-! if (p == NULL || *p == NUL)
-! break;
-! cmdmod.filter_regmatch.regprog =
-! vim_regcomp(reg_pat, RE_MAGIC);
-! if (cmdmod.filter_regmatch.regprog == NULL)
-! break;
-! ea.cmd = p;
-! continue;
-! }
-!
-! /* ":hide" and ":hide | cmd" are not modifiers */
-! case 'h': if (p != ea.cmd || !checkforcmd(&p, "hide", 3)
-! || *p == NUL || ends_excmd(*p))
-! break;
-! ea.cmd = p;
-! cmdmod.hide = TRUE;
-! continue;
-!
-! case 'l': if (checkforcmd(&ea.cmd, "lockmarks", 3))
-! {
-! cmdmod.lockmarks = TRUE;
-! continue;
-! }
-!
-! if (!checkforcmd(&ea.cmd, "leftabove", 5))
-! break;
-! cmdmod.split |= WSP_ABOVE;
-! continue;
-!
-! case 'n': if (checkforcmd(&ea.cmd, "noautocmd", 3))
-! {
-! if (cmdmod.save_ei == NULL)
-! {
-! /* Set 'eventignore' to "all". Restore the
-! * existing option value later. */
-! cmdmod.save_ei = vim_strsave(p_ei);
-! set_string_option_direct((char_u *)"ei", -1,
-! (char_u *)"all", OPT_FREE, SID_NONE);
-! }
-! continue;
-! }
-! if (!checkforcmd(&ea.cmd, "noswapfile", 3))
-! break;
-! cmdmod.noswapfile = TRUE;
-! continue;
-!
-! case 'r': if (!checkforcmd(&ea.cmd, "rightbelow", 6))
-! break;
-! cmdmod.split |= WSP_BELOW;
-! continue;
-!
-! case 's': if (checkforcmd(&ea.cmd, "sandbox", 3))
-! {
-! #ifdef HAVE_SANDBOX
-! if (!did_sandbox)
-! ++sandbox;
-! did_sandbox = TRUE;
- #endif
-! continue;
-! }
-! if (!checkforcmd(&ea.cmd, "silent", 3))
-! break;
-! if (save_msg_silent == -1)
-! save_msg_silent = msg_silent;
-! ++msg_silent;
-! if (*ea.cmd == '!' && !VIM_ISWHITE(ea.cmd[-1]))
-! {
-! /* ":silent!", but not "silent !cmd" */
-! ea.cmd = skipwhite(ea.cmd + 1);
-! ++emsg_silent;
-! ++did_esilent;
-! }
-! continue;
-!
-! case 't': if (checkforcmd(&p, "tab", 3))
-! {
-! long tabnr = get_address(&ea, &ea.cmd, ADDR_TABS,
-! ea.skip, FALSE, 1);
-! if (tabnr == MAXLNUM)
-! cmdmod.tab = tabpage_index(curtab) + 1;
-! else
-! {
-! if (tabnr < 0 || tabnr > LAST_TAB_NR)
-! {
-! errormsg = (char_u *)_(e_invrange);
-! goto doend;
-! }
-! cmdmod.tab = tabnr + 1;
-! }
-! ea.cmd = p;
-! continue;
-! }
-! if (!checkforcmd(&ea.cmd, "topleft", 2))
-! break;
-! cmdmod.split |= WSP_TOP;
-! continue;
-!
-! case 'u': if (!checkforcmd(&ea.cmd, "unsilent", 3))
-! break;
-! if (save_msg_silent == -1)
-! save_msg_silent = msg_silent;
-! msg_silent = 0;
-! continue;
-
-- case 'v': if (checkforcmd(&ea.cmd, "vertical", 4))
-- {
-- cmdmod.split |= WSP_VERT;
-- continue;
-- }
-- if (!checkforcmd(&p, "verbose", 4))
-- break;
-- if (verbose_save < 0)
-- verbose_save = p_verbose;
-- if (vim_isdigit(*ea.cmd))
-- p_verbose = atoi((char *)ea.cmd);
-- else
-- p_verbose = 1;
-- ea.cmd = p;
-- continue;
-- }
-- break;
-- }
- after_modifier = ea.cmd;
-
- #ifdef FEAT_EVAL
---- 1743,1760 ----
-
- /*
- * Repeat until no more command modifiers are found.
-+ * The "ea" structure holds the arguments that can be used.
- */
- ea.cmd = *cmdlinep;
-! ea.cmdlinep = cmdlinep;
-! ea.getline = fgetline;
-! ea.cookie = cookie;
-! #ifdef FEAT_EVAL
-! ea.cstack = cstack;
- #endif
-! if (parse_command_modifiers(&ea, &errormsg) == FAIL)
-! goto doend;
-
- after_modifier = ea.cmd;
-
- #ifdef FEAT_EVAL
-***************
-*** 2688,2712 ****
-
- /* The :try command saves the emsg_silent flag, reset it here when
- * ":silent! try" was used, it should only apply to :try itself. */
-! if (ea.cmdidx == CMD_try && did_esilent > 0)
- {
-! emsg_silent -= did_esilent;
- if (emsg_silent < 0)
- emsg_silent = 0;
-! did_esilent = 0;
- }
-
- /*
- * 7. Execute the command.
-- *
-- * The "ea" structure holds the arguments that can be used.
- */
-- ea.cmdlinep = cmdlinep;
-- ea.getline = fgetline;
-- ea.cookie = cookie;
-- #ifdef FEAT_EVAL
-- ea.cstack = cstack;
-- #endif
-
- #ifdef FEAT_USR_CMDS
- if (IS_USER_CMDIDX(ea.cmdidx))
---- 2471,2487 ----
-
- /* The :try command saves the emsg_silent flag, reset it here when
- * ":silent! try" was used, it should only apply to :try itself. */
-! if (ea.cmdidx == CMD_try && ea.did_esilent > 0)
- {
-! emsg_silent -= ea.did_esilent;
- if (emsg_silent < 0)
- emsg_silent = 0;
-! ea.did_esilent = 0;
- }
-
- /*
- * 7. Execute the command.
- */
-
- #ifdef FEAT_USR_CMDS
- if (IS_USER_CMDIDX(ea.cmdidx))
-***************
-*** 2775,2782 ****
- ? cmdnames[(int)ea.cmdidx].cmd_name : (char_u *)NULL);
- #endif
-
-! if (verbose_save >= 0)
-! p_verbose = verbose_save;
-
- if (cmdmod.save_ei != NULL)
- {
---- 2550,2557 ----
- ? cmdnames[(int)ea.cmdidx].cmd_name : (char_u *)NULL);
- #endif
-
-! if (ea.verbose_save >= 0)
-! p_verbose = ea.verbose_save;
-
- if (cmdmod.save_ei != NULL)
- {
-***************
-*** 2791,2803 ****
-
- cmdmod = save_cmdmod;
-
-! if (save_msg_silent != -1)
- {
- /* messages could be enabled for a serious error, need to check if the
- * counters don't become negative */
-! if (!did_emsg || msg_silent > save_msg_silent)
-! msg_silent = save_msg_silent;
-! emsg_silent -= did_esilent;
- if (emsg_silent < 0)
- emsg_silent = 0;
- /* Restore msg_scroll, it's set by file I/O commands, even when no
---- 2566,2578 ----
-
- cmdmod = save_cmdmod;
-
-! if (ea.save_msg_silent != -1)
- {
- /* messages could be enabled for a serious error, need to check if the
- * counters don't become negative */
-! if (!did_emsg || msg_silent > ea.save_msg_silent)
-! msg_silent = ea.save_msg_silent;
-! emsg_silent -= ea.did_esilent;
- if (emsg_silent < 0)
- emsg_silent = 0;
- /* Restore msg_scroll, it's set by file I/O commands, even when no
-***************
-*** 2811,2817 ****
- }
-
- #ifdef HAVE_SANDBOX
-! if (did_sandbox)
- --sandbox;
- #endif
-
---- 2586,2592 ----
- }
-
- #ifdef HAVE_SANDBOX
-! if (ea.did_sandbox)
- --sandbox;
- #endif
-
-***************
-*** 2829,2834 ****
---- 2604,2853 ----
- #endif
-
- /*
-+ * Parse and skip over command modifiers:
-+ * - update eap->cmd
-+ * - store flags in "cmdmod".
-+ * - Set ex_pressedreturn for an empty command line.
-+ * - set msg_silent for ":silent"
-+ * - set p_verbose for ":verbose"
-+ * - Increment "sandbox" for ":sandbox"
-+ * Return FAIL when the command is not to be executed.
-+ * May set "errormsg" to an error message.
-+ */
-+ int
-+ parse_command_modifiers(exarg_T *eap, char_u **errormsg)
-+ {
-+ char_u *p;
-+
-+ vim_memset(&cmdmod, 0, sizeof(cmdmod));
-+ eap->verbose_save = -1;
-+ eap->save_msg_silent = -1;
-+
-+ for (;;)
-+ {
-+ /*
-+ * 1. Skip comment lines and leading white space and colons.
-+ */
-+ while (*eap->cmd == ' ' || *eap->cmd == '\t' || *eap->cmd == ':')
-+ ++eap->cmd;
-+
-+ /* in ex mode, an empty line works like :+ */
-+ if (*eap->cmd == NUL && exmode_active
-+ && (getline_equal(eap->getline, eap->cookie, getexmodeline)
-+ || getline_equal(eap->getline, eap->cookie, getexline))
-+ && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
-+ {
-+ eap->cmd = (char_u *)"+";
-+ ex_pressedreturn = TRUE;
-+ }
-+
-+ /* ignore comment and empty lines */
-+ if (*eap->cmd == '"')
-+ return FAIL;
-+ if (*eap->cmd == NUL)
-+ {
-+ ex_pressedreturn = TRUE;
-+ return FAIL;
-+ }
-+
-+ /*
-+ * 2. Handle command modifiers.
-+ */
-+ p = skip_range(eap->cmd, NULL);
-+ switch (*p)
-+ {
-+ /* When adding an entry, also modify cmd_exists(). */
-+ case 'a': if (!checkforcmd(&eap->cmd, "aboveleft", 3))
-+ break;
-+ cmdmod.split |= WSP_ABOVE;
-+ continue;
-+
-+ case 'b': if (checkforcmd(&eap->cmd, "belowright", 3))
-+ {
-+ cmdmod.split |= WSP_BELOW;
-+ continue;
-+ }
-+ if (checkforcmd(&eap->cmd, "browse", 3))
-+ {
-+ #ifdef FEAT_BROWSE_CMD
-+ cmdmod.browse = TRUE;
-+ #endif
-+ continue;
-+ }
-+ if (!checkforcmd(&eap->cmd, "botright", 2))
-+ break;
-+ cmdmod.split |= WSP_BOT;
-+ continue;
-+
-+ case 'c': if (!checkforcmd(&eap->cmd, "confirm", 4))
-+ break;
-+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
-+ cmdmod.confirm = TRUE;
-+ #endif
-+ continue;
-+
-+ case 'k': if (checkforcmd(&eap->cmd, "keepmarks", 3))
-+ {
-+ cmdmod.keepmarks = TRUE;
-+ continue;
-+ }
-+ if (checkforcmd(&eap->cmd, "keepalt", 5))
-+ {
-+ cmdmod.keepalt = TRUE;
-+ continue;
-+ }
-+ if (checkforcmd(&eap->cmd, "keeppatterns", 5))
-+ {
-+ cmdmod.keeppatterns = TRUE;
-+ continue;
-+ }
-+ if (!checkforcmd(&eap->cmd, "keepjumps", 5))
-+ break;
-+ cmdmod.keepjumps = TRUE;
-+ continue;
-+
-+ case 'f': /* only accept ":filter {pat} cmd" */
-+ {
-+ char_u *reg_pat;
-+
-+ if (!checkforcmd(&p, "filter", 4)
-+ || *p == NUL || ends_excmd(*p))
-+ break;
-+ if (*p == '!')
-+ {
-+ cmdmod.filter_force = TRUE;
-+ p = skipwhite(p + 1);
-+ if (*p == NUL || ends_excmd(*p))
-+ break;
-+ }
-+ p = skip_vimgrep_pat(p, &reg_pat, NULL);
-+ if (p == NULL || *p == NUL)
-+ break;
-+ cmdmod.filter_regmatch.regprog =
-+ vim_regcomp(reg_pat, RE_MAGIC);
-+ if (cmdmod.filter_regmatch.regprog == NULL)
-+ break;
-+ eap->cmd = p;
-+ continue;
-+ }
-+
-+ /* ":hide" and ":hide | cmd" are not modifiers */
-+ case 'h': if (p != eap->cmd || !checkforcmd(&p, "hide", 3)
-+ || *p == NUL || ends_excmd(*p))
-+ break;
-+ eap->cmd = p;
-+ cmdmod.hide = TRUE;
-+ continue;
-+
-+ case 'l': if (checkforcmd(&eap->cmd, "lockmarks", 3))
-+ {
-+ cmdmod.lockmarks = TRUE;
-+ continue;
-+ }
-+
-+ if (!checkforcmd(&eap->cmd, "leftabove", 5))
-+ break;
-+ cmdmod.split |= WSP_ABOVE;
-+ continue;
-+
-+ case 'n': if (checkforcmd(&eap->cmd, "noautocmd", 3))
-+ {
-+ if (cmdmod.save_ei == NULL)
-+ {
-+ /* Set 'eventignore' to "all". Restore the
-+ * existing option value later. */
-+ cmdmod.save_ei = vim_strsave(p_ei);
-+ set_string_option_direct((char_u *)"ei", -1,
-+ (char_u *)"all", OPT_FREE, SID_NONE);
-+ }
-+ continue;
-+ }
-+ if (!checkforcmd(&eap->cmd, "noswapfile", 3))
-+ break;
-+ cmdmod.noswapfile = TRUE;
-+ continue;
-+
-+ case 'r': if (!checkforcmd(&eap->cmd, "rightbelow", 6))
-+ break;
-+ cmdmod.split |= WSP_BELOW;
-+ continue;
-+
-+ case 's': if (checkforcmd(&eap->cmd, "sandbox", 3))
-+ {
-+ #ifdef HAVE_SANDBOX
-+ if (!eap->did_sandbox)
-+ ++sandbox;
-+ eap->did_sandbox = TRUE;
-+ #endif
-+ continue;
-+ }
-+ if (!checkforcmd(&eap->cmd, "silent", 3))
-+ break;
-+ if (eap->save_msg_silent == -1)
-+ eap->save_msg_silent = msg_silent;
-+ ++msg_silent;
-+ if (*eap->cmd == '!' && !VIM_ISWHITE(eap->cmd[-1]))
-+ {
-+ /* ":silent!", but not "silent !cmd" */
-+ eap->cmd = skipwhite(eap->cmd + 1);
-+ ++emsg_silent;
-+ ++eap->did_esilent;
-+ }
-+ continue;
-+
-+ case 't': if (checkforcmd(&p, "tab", 3))
-+ {
-+ long tabnr = get_address(eap, &eap->cmd, ADDR_TABS,
-+ eap->skip, FALSE, 1);
-+ if (tabnr == MAXLNUM)
-+ cmdmod.tab = tabpage_index(curtab) + 1;
-+ else
-+ {
-+ if (tabnr < 0 || tabnr > LAST_TAB_NR)
-+ {
-+ *errormsg = (char_u *)_(e_invrange);
-+ return FAIL;
-+ }
-+ cmdmod.tab = tabnr + 1;
-+ }
-+ eap->cmd = p;
-+ continue;
-+ }
-+ if (!checkforcmd(&eap->cmd, "topleft", 2))
-+ break;
-+ cmdmod.split |= WSP_TOP;
-+ continue;
-+
-+ case 'u': if (!checkforcmd(&eap->cmd, "unsilent", 3))
-+ break;
-+ if (eap->save_msg_silent == -1)
-+ eap->save_msg_silent = msg_silent;
-+ msg_silent = 0;
-+ continue;
-+
-+ case 'v': if (checkforcmd(&eap->cmd, "vertical", 4))
-+ {
-+ cmdmod.split |= WSP_VERT;
-+ continue;
-+ }
-+ if (!checkforcmd(&p, "verbose", 4))
-+ break;
-+ if (eap->verbose_save < 0)
-+ eap->verbose_save = p_verbose;
-+ if (vim_isdigit(*eap->cmd))
-+ p_verbose = atoi((char *)eap->cmd);
-+ else
-+ p_verbose = 1;
-+ eap->cmd = p;
-+ continue;
-+ }
-+ break;
-+ }
-+
-+ return OK;
-+ }
-+
-+ /*
- * Parse the address range, if any, in "eap".
- * Return FAIL and set "errormsg" or return OK.
- */
-*** ../vim-8.1.0280/src/proto/ex_docmd.pro 2018-08-10 23:13:07.934024645 +0200
---- src/proto/ex_docmd.pro 2018-08-13 23:24:18.797373050 +0200
-***************
-*** 4,9 ****
---- 4,10 ----
- int do_cmdline(char_u *cmdline, char_u *(*fgetline)(int, void *, int), void *cookie, int flags);
- int getline_equal(char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int));
- void *getline_cookie(char_u *(*fgetline)(int, void *, int), void *cookie);
-+ int parse_command_modifiers(exarg_T *eap, char_u **errormsg);
- int parse_cmd_address(exarg_T *eap, char_u **errormsg);
- int checkforcmd(char_u **pp, char *cmd, int len);
- int modifier_len(char_u *cmd);
-*** ../vim-8.1.0280/src/ex_cmds.h 2018-07-10 19:39:14.994973018 +0200
---- src/ex_cmds.h 2018-08-13 23:25:36.236870329 +0200
-***************
-*** 1792,1797 ****
---- 1792,1803 ----
- #ifdef FEAT_EVAL
- struct condstack *cstack; /* condition stack for ":if" etc. */
- #endif
-+ long verbose_save; // saved value of p_verbose
-+ int save_msg_silent; // saved value of msg_silent
-+ int did_esilent; // how many times emsg_silent was incremented
-+ #ifdef HAVE_SANDBOX
-+ int did_sandbox; // when TRUE did ++sandbox
-+ #endif
- };
-
- #define FORCE_BIN 1 /* ":edit ++bin file" */
-*** ../vim-8.1.0280/src/globals.h 2018-08-11 16:40:39.064311995 +0200
---- src/globals.h 2018-08-13 23:18:14.323704509 +0200
-***************
-*** 678,685 ****
- * changed, no buffer can be deleted and
- * current directory can't be changed.
- * Used for SwapExists et al. */
-! #ifdef FEAT_EVAL
-! # define HAVE_SANDBOX
- EXTERN int sandbox INIT(= 0);
- /* Non-zero when evaluating an expression in a
- * "sandbox". Several things are not allowed
---- 678,684 ----
- * changed, no buffer can be deleted and
- * current directory can't be changed.
- * Used for SwapExists et al. */
-! #ifdef HAVE_SANDBOX
- EXTERN int sandbox INIT(= 0);
- /* Non-zero when evaluating an expression in a
- * "sandbox". Several things are not allowed
-*** ../vim-8.1.0280/src/feature.h 2018-07-29 16:09:14.644945560 +0200
---- src/feature.h 2018-08-13 23:19:07.623368124 +0200
-***************
-*** 355,360 ****
---- 355,364 ----
- # endif
- #endif
-
-+ #ifdef FEAT_EVAL
-+ # define HAVE_SANDBOX
-+ #endif
-+
- /*
- * +profile Profiling for functions and scripts.
- */
-*** ../vim-8.1.0280/src/version.c 2018-08-13 22:54:31.456665135 +0200
---- src/version.c 2018-08-13 23:04:38.032484283 +0200
-***************
-*** 796,797 ****
---- 796,799 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 281,
- /**/
-
---
-Violators can be fined, arrested or jailed for making ugly faces at a dog.
- [real standing law in Oklahoma, United States of America]
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
-/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///