diff options
Diffstat (limited to 'data/vim/patches/8.1.0282')
-rw-r--r-- | data/vim/patches/8.1.0282 | 507 |
1 files changed, 0 insertions, 507 deletions
diff --git a/data/vim/patches/8.1.0282 b/data/vim/patches/8.1.0282 deleted file mode 100644 index 7b827f49f..000000000 --- a/data/vim/patches/8.1.0282 +++ /dev/null @@ -1,507 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.0282 -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.0282 -Problem: 'incsearch' does not work with command modifiers. -Solution: Skip command modifiers. -Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/ex_getln.c, - src/testdir/test_search.vim - - -*** ../vim-8.1.0281/src/ex_docmd.c 2018-08-14 13:38:12.744559267 +0200 ---- src/ex_docmd.c 2018-08-14 16:00:53.341893598 +0200 -*************** -*** 68,73 **** ---- 68,74 ---- - static char_u *do_one_cmd(char_u **, int, char_u *(*fgetline)(int, void *, int), void *cookie); - static int if_level = 0; /* depth in :if */ - #endif -+ static void free_cmdmod(void); - static void append_command(char_u *cmd); - static char_u *find_command(exarg_T *eap, int *full); - -*************** -*** 1741,1750 **** - if ((*cmdlinep)[0] == '#' && (*cmdlinep)[1] == '!') - goto doend; - -! /* -! * 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; ---- 1742,1752 ---- - if ((*cmdlinep)[0] == '#' && (*cmdlinep)[1] == '!') - goto doend; - -! /* -! * 1. Skip comment lines and leading white space and colons. -! * 2. Handle command modifiers. -! */ -! // The "ea" structure holds the arguments that can be used. - ea.cmd = *cmdlinep; - ea.cmdlinep = cmdlinep; - ea.getline = fgetline; -*************** -*** 1752,1758 **** - #ifdef FEAT_EVAL - ea.cstack = cstack; - #endif -! if (parse_command_modifiers(&ea, &errormsg) == FAIL) - goto doend; - - after_modifier = ea.cmd; ---- 1754,1760 ---- - #ifdef FEAT_EVAL - ea.cstack = cstack; - #endif -! if (parse_command_modifiers(&ea, &errormsg, FALSE) == FAIL) - goto doend; - - after_modifier = ea.cmd; -*************** -*** 2553,2569 **** - if (ea.verbose_save >= 0) - p_verbose = ea.verbose_save; - -! if (cmdmod.save_ei != NULL) -! { -! /* Restore 'eventignore' to the value before ":noautocmd". */ -! set_string_option_direct((char_u *)"ei", -1, cmdmod.save_ei, -! OPT_FREE, SID_NONE); -! free_string_option(cmdmod.save_ei); -! } -! -! if (cmdmod.filter_regmatch.regprog != NULL) -! vim_regfree(cmdmod.filter_regmatch.regprog); -! - cmdmod = save_cmdmod; - - if (ea.save_msg_silent != -1) ---- 2555,2561 ---- - if (ea.verbose_save >= 0) - p_verbose = ea.verbose_save; - -! free_cmdmod(); - cmdmod = save_cmdmod; - - if (ea.save_msg_silent != -1) -*************** -*** 2609,2621 **** - * - 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; - ---- 2601,2616 ---- - * - store flags in "cmdmod". - * - Set ex_pressedreturn for an empty command line. - * - set msg_silent for ":silent" -+ * - set 'eventignore' to "all" for ":noautocmd" - * - set p_verbose for ":verbose" - * - Increment "sandbox" for ":sandbox" -+ * When "skip_only" is TRUE the global variables are not changed, except for -+ * "cmdmod". - * 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, int skip_only) - { - char_u *p; - -*************** -*** 2623,2633 **** - 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; - ---- 2618,2626 ---- - eap->verbose_save = -1; - eap->save_msg_silent = -1; - -+ // Repeat until no more command modifiers are found. - for (;;) - { - while (*eap->cmd == ' ' || *eap->cmd == '\t' || *eap->cmd == ':') - ++eap->cmd; - -*************** -*** 2638,2644 **** - && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) - { - eap->cmd = (char_u *)"+"; -! ex_pressedreturn = TRUE; - } - - /* ignore comment and empty lines */ ---- 2631,2638 ---- - && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) - { - eap->cmd = (char_u *)"+"; -! if (!skip_only) -! ex_pressedreturn = TRUE; - } - - /* ignore comment and empty lines */ -*************** -*** 2646,2658 **** - return FAIL; - if (*eap->cmd == NUL) - { -! ex_pressedreturn = TRUE; - return FAIL; - } - -- /* -- * 2. Handle command modifiers. -- */ - p = skip_range(eap->cmd, NULL); - switch (*p) - { ---- 2640,2650 ---- - return FAIL; - if (*eap->cmd == NUL) - { -! if (!skip_only) -! ex_pressedreturn = TRUE; - return FAIL; - } - - p = skip_range(eap->cmd, NULL); - switch (*p) - { -*************** -*** 2720,2732 **** - if (*p == NUL || ends_excmd(*p)) - break; - } -! p = skip_vimgrep_pat(p, ®_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; - } ---- 2712,2731 ---- - if (*p == NUL || ends_excmd(*p)) - break; - } -! if (skip_only) -! p = skip_vimgrep_pat(p, NULL, NULL); -! else -! // NOTE: This puts a NUL after the pattern. -! p = skip_vimgrep_pat(p, ®_pat, NULL); - if (p == NULL || *p == NUL) - break; -! if (!skip_only) -! { -! cmdmod.filter_regmatch.regprog = - vim_regcomp(reg_pat, RE_MAGIC); -! if (cmdmod.filter_regmatch.regprog == NULL) -! break; -! } - eap->cmd = p; - continue; - } -*************** -*** 2752,2758 **** - - case 'n': if (checkforcmd(&eap->cmd, "noautocmd", 3)) - { -! if (cmdmod.save_ei == NULL) - { - /* Set 'eventignore' to "all". Restore the - * existing option value later. */ ---- 2751,2757 ---- - - case 'n': if (checkforcmd(&eap->cmd, "noautocmd", 3)) - { -! if (cmdmod.save_ei == NULL && !skip_only) - { - /* Set 'eventignore' to "all". Restore the - * existing option value later. */ -*************** -*** 2775,2797 **** - 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; - ---- 2774,2805 ---- - case 's': if (checkforcmd(&eap->cmd, "sandbox", 3)) - { - #ifdef HAVE_SANDBOX -! if (!skip_only) -! { -! if (!eap->did_sandbox) -! ++sandbox; -! eap->did_sandbox = TRUE; -! } - #endif - continue; - } - if (!checkforcmd(&eap->cmd, "silent", 3)) - break; -! if (!skip_only) -! { -! 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); -! if (!skip_only) -! { -! ++emsg_silent; -! ++eap->did_esilent; -! } - } - continue; - -*************** -*** 2820,2828 **** - - 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)) ---- 2828,2839 ---- - - case 'u': if (!checkforcmd(&eap->cmd, "unsilent", 3)) - break; -! if (!skip_only) -! { -! if (eap->save_msg_silent == -1) -! eap->save_msg_silent = msg_silent; -! msg_silent = 0; -! } - continue; - - case 'v': if (checkforcmd(&eap->cmd, "vertical", 4)) -*************** -*** 2832,2843 **** - } - 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; - } ---- 2843,2857 ---- - } - if (!checkforcmd(&p, "verbose", 4)) - break; -! if (!skip_only) -! { -! 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; - } -*************** -*** 2848,2853 **** ---- 2862,2885 ---- - } - - /* -+ * Free contents of "cmdmod". -+ */ -+ static void -+ free_cmdmod(void) -+ { -+ if (cmdmod.save_ei != NULL) -+ { -+ /* Restore 'eventignore' to the value before ":noautocmd". */ -+ set_string_option_direct((char_u *)"ei", -1, cmdmod.save_ei, -+ OPT_FREE, SID_NONE); -+ free_string_option(cmdmod.save_ei); -+ } -+ -+ if (cmdmod.filter_regmatch.regprog != NULL) -+ vim_regfree(cmdmod.filter_regmatch.regprog); -+ } -+ -+ /* - * Parse the address range, if any, in "eap". - * Return FAIL and set "errormsg" or return OK. - */ -*** ../vim-8.1.0281/src/proto/ex_docmd.pro 2018-08-14 13:38:12.744559267 +0200 ---- src/proto/ex_docmd.pro 2018-08-14 15:27:07.371906192 +0200 -*************** -*** 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); ---- 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 skip_only); - 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.0281/src/ex_getln.c 2018-08-13 22:54:31.456665135 +0200 ---- src/ex_getln.c 2018-08-14 15:27:03.303934870 +0200 -*************** -*** 283,293 **** - return TRUE; - if (firstc == ':') - { -! char_u *cmd = skip_range(ccline.cmdbuff, NULL); -! char_u *p; -! int delim; -! char_u *end; - - if (*cmd == 's' || *cmd == 'g' || *cmd == 'v') - { - // Skip over "substitute" to find the pattern separator. ---- 283,306 ---- - return TRUE; - if (firstc == ':') - { -! char_u *cmd; -! cmdmod_T save_cmdmod = cmdmod; -! char_u *p; -! int delim; -! char_u *end; -! char_u *dummy; -! exarg_T ea; - -+ vim_memset(&ea, 0, sizeof(ea)); -+ ea.line1 = 1; -+ ea.line2 = 1; -+ ea.cmd = ccline.cmdbuff; -+ ea.addr_type = ADDR_LINES; -+ -+ parse_command_modifiers(&ea, &dummy, TRUE); -+ cmdmod = save_cmdmod; -+ -+ cmd = skip_range(ea.cmd, NULL); - if (*cmd == 's' || *cmd == 'g' || *cmd == 'v') - { - // Skip over "substitute" to find the pattern separator. -*************** -*** 310,317 **** - end = skip_regexp(p, delim, p_magic, NULL); - if (end > p || *end == delim) - { -- char_u *dummy; -- exarg_T ea; - pos_T save_cursor = curwin->w_cursor; - - // found a non-empty pattern ---- 323,328 ---- -*************** -*** 319,329 **** - *patlen = (int)(end - p); - - // parse the address range -- vim_memset(&ea, 0, sizeof(ea)); -- ea.line1 = 1; -- ea.line2 = 1; -- ea.cmd = ccline.cmdbuff; -- ea.addr_type = ADDR_LINES; - curwin->w_cursor = is_state->search_start; - parse_cmd_address(&ea, &dummy); - if (ea.addr_count > 0) ---- 330,335 ---- -*** ../vim-8.1.0281/src/testdir/test_search.vim 2018-08-13 22:54:31.456665135 +0200 ---- src/testdir/test_search.vim 2018-08-14 16:01:44.561537663 +0200 -*************** -*** 884,889 **** ---- 884,895 ---- - call VerifyScreenDump(buf, 'Test_incsearch_substitute_05', {}) - call term_sendkeys(buf, "\<Esc>") - -+ " Command modifiers are skipped -+ call term_sendkeys(buf, ':above below browse botr confirm keepmar keepalt keeppat keepjum filter xxx hide lockm leftabove noau noswap rightbel sandbox silent silent! $tab top unsil vert verbose 4,5s/fo.') -+ sleep 100m -+ call VerifyScreenDump(buf, 'Test_incsearch_substitute_06', {}) -+ call term_sendkeys(buf, "\<Esc>") -+ - call StopVimInTerminal(buf) - call delete('Xis_subst_script') - endfunc -*** ../vim-8.1.0281/src/version.c 2018-08-14 13:38:12.748559237 +0200 ---- src/version.c 2018-08-14 16:02:48.537093003 +0200 -*************** -*** 796,797 **** ---- 796,799 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 282, - /**/ - --- -It is illegal to take more than three sips of beer at a time while standing. - [real standing law in Texas, 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 /// |