summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1200
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1200')
-rw-r--r--data/vim/patches/8.1.1200740
1 files changed, 740 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1200 b/data/vim/patches/8.1.1200
new file mode 100644
index 000000000..212f29e1a
--- /dev/null
+++ b/data/vim/patches/8.1.1200
@@ -0,0 +1,740 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.1200
+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.1200
+Problem: Old style comments in debugger source.
+Solution: Use new style comments. (Yegappan Lakshmanan, closes #4286)
+Files: src/README.md, src/debugger.c
+
+
+*** ../vim-8.1.1199/src/README.md 2019-03-31 15:31:54.592053004 +0200
+--- src/README.md 2019-04-23 18:36:55.603847919 +0200
+***************
+*** 25,30 ****
+--- 25,31 ----
+ --------- | -----------
+ autocmd.c | autocommands
+ buffer.c | manipulating buffers (loaded files)
++ debugger.c | vim script debugger
+ diff.c | diff mode (vimdiff)
+ eval.c | expression evaluation
+ fileio.c | reading and writing files
+*** ../vim-8.1.1199/src/debugger.c 2019-04-21 11:34:36.335256531 +0200
+--- src/debugger.c 2019-04-23 18:36:55.603847919 +0200
+***************
+*** 14,28 ****
+ #include "vim.h"
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+! static int debug_greedy = FALSE; /* batch mode debugging: don't save
+! and restore typeahead. */
+ static void do_setdebugtracelevel(char_u *arg);
+ static void do_checkbacktracelevel(void);
+ static void do_showbacktrace(char_u *cmd);
+
+! static char_u *debug_oldval = NULL; /* old and newval for debug expressions */
+ static char_u *debug_newval = NULL;
+! static int debug_expr = 0; /* use debug_expr */
+
+ int
+ has_watchexpr(void)
+--- 14,28 ----
+ #include "vim.h"
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+! static int debug_greedy = FALSE; // batch mode debugging: don't save
+! // and restore typeahead.
+ static void do_setdebugtracelevel(char_u *arg);
+ static void do_checkbacktracelevel(void);
+ static void do_showbacktrace(char_u *cmd);
+
+! static char_u *debug_oldval = NULL; // old and newval for debug expressions
+ static char_u *debug_newval = NULL;
+! static int debug_expr = 0; // use debug_expr
+
+ int
+ has_watchexpr(void)
+***************
+*** 65,91 ****
+ #define CMD_DOWN 10
+
+ #ifdef ALWAYS_USE_GUI
+! /* Can't do this when there is no terminal for input/output. */
+ if (!gui.in_use)
+ {
+! /* Break as soon as possible. */
+ debug_break_level = 9999;
+ return;
+ }
+ #endif
+
+! /* Make sure we are in raw mode and start termcap mode. Might have side
+! * effects... */
+ settmode(TMODE_RAW);
+ starttermcap();
+
+! ++RedrawingDisabled; /* don't redisplay the window */
+! ++no_wait_return; /* don't wait for return */
+! did_emsg = FALSE; /* don't use error from debugged stuff */
+! cmd_silent = FALSE; /* display commands */
+! msg_silent = FALSE; /* display messages */
+! emsg_silent = FALSE; /* display error messages */
+! redir_off = TRUE; /* don't redirect debug commands */
+
+ State = NORMAL;
+ debug_mode = TRUE;
+--- 65,91 ----
+ #define CMD_DOWN 10
+
+ #ifdef ALWAYS_USE_GUI
+! // Can't do this when there is no terminal for input/output.
+ if (!gui.in_use)
+ {
+! // Break as soon as possible.
+ debug_break_level = 9999;
+ return;
+ }
+ #endif
+
+! // Make sure we are in raw mode and start termcap mode. Might have side
+! // effects...
+ settmode(TMODE_RAW);
+ starttermcap();
+
+! ++RedrawingDisabled; // don't redisplay the window
+! ++no_wait_return; // don't wait for return
+! did_emsg = FALSE; // don't use error from debugged stuff
+! cmd_silent = FALSE; // display commands
+! msg_silent = FALSE; // display messages
+! emsg_silent = FALSE; // display error messages
+! redir_off = TRUE; // don't redirect debug commands
+
+ State = NORMAL;
+ debug_mode = TRUE;
+***************
+*** 110,128 ****
+ smsg(_("line %ld: %s"), (long)sourcing_lnum, cmd);
+ else
+ smsg(_("cmd: %s"), cmd);
+! /*
+! * Repeat getting a command and executing it.
+! */
+ for (;;)
+ {
+ msg_scroll = TRUE;
+ need_wait_return = FALSE;
+
+! /* Save the current typeahead buffer and replace it with an empty one.
+! * This makes sure we get input from the user here and don't interfere
+! * with the commands being executed. Reset "ex_normal_busy" to avoid
+! * the side effects of using ":normal". Save the stuff buffer and make
+! * it empty. Set ignore_script to avoid reading from script input. */
+ save_ex_normal_busy = ex_normal_busy;
+ ex_normal_busy = 0;
+ if (!debug_greedy)
+--- 110,127 ----
+ smsg(_("line %ld: %s"), (long)sourcing_lnum, cmd);
+ else
+ smsg(_("cmd: %s"), cmd);
+!
+! // Repeat getting a command and executing it.
+ for (;;)
+ {
+ msg_scroll = TRUE;
+ need_wait_return = FALSE;
+
+! // Save the current typeahead buffer and replace it with an empty one.
+! // This makes sure we get input from the user here and don't interfere
+! // with the commands being executed. Reset "ex_normal_busy" to avoid
+! // the side effects of using ":normal". Save the stuff buffer and make
+! // it empty. Set ignore_script to avoid reading from script input.
+ save_ex_normal_busy = ex_normal_busy;
+ ex_normal_busy = 0;
+ if (!debug_greedy)
+***************
+*** 147,155 ****
+ msg_starthere();
+ if (cmdline != NULL)
+ {
+! /* If this is a debug command, set "last_cmd".
+! * If not, reset "last_cmd".
+! * For a blank line use previous command. */
+ p = skipwhite(cmdline);
+ if (*p != NUL)
+ {
+--- 146,154 ----
+ msg_starthere();
+ if (cmdline != NULL)
+ {
+! // If this is a debug command, set "last_cmd".
+! // If not, reset "last_cmd".
+! // For a blank line use previous command.
+ p = skipwhite(cmdline);
+ if (*p != NUL)
+ {
+***************
+*** 202,208 ****
+ }
+ if (last_cmd != 0)
+ {
+! /* Check that the tail matches. */
+ ++p;
+ while (*p != NUL && *p == *tail)
+ {
+--- 201,207 ----
+ }
+ if (last_cmd != 0)
+ {
+! // Check that the tail matches.
+ ++p;
+ while (*p != NUL && *p == *tail)
+ {
+***************
+*** 216,223 ****
+
+ if (last_cmd != 0)
+ {
+! /* Execute debug command: decided where to break next and
+! * return. */
+ switch (last_cmd)
+ {
+ case CMD_CONT:
+--- 215,222 ----
+
+ if (last_cmd != 0)
+ {
+! // Execute debug command: decided where to break next and
+! // return.
+ switch (last_cmd)
+ {
+ case CMD_CONT:
+***************
+*** 239,245 ****
+ case CMD_INTERRUPT:
+ got_int = TRUE;
+ debug_break_level = 9999;
+! /* Do not repeat ">interrupt" cmd, continue stepping. */
+ last_cmd = CMD_STEP;
+ break;
+ case CMD_BACKTRACE:
+--- 238,244 ----
+ case CMD_INTERRUPT:
+ got_int = TRUE;
+ debug_break_level = 9999;
+! // Do not repeat ">interrupt" cmd, continue stepping.
+ last_cmd = CMD_STEP;
+ break;
+ case CMD_BACKTRACE:
+***************
+*** 265,276 ****
+ do_checkbacktracelevel();
+ continue;
+ }
+! /* Going out reset backtrace_level */
+ debug_backtrace_level = 0;
+ break;
+ }
+
+! /* don't debug this command */
+ n = debug_break_level;
+ debug_break_level = -1;
+ (void)do_cmdline(cmdline, getexline, NULL,
+--- 264,275 ----
+ do_checkbacktracelevel();
+ continue;
+ }
+! // Going out reset backtrace_level
+ debug_backtrace_level = 0;
+ break;
+ }
+
+! // don't debug this command
+ n = debug_break_level;
+ debug_break_level = -1;
+ (void)do_cmdline(cmdline, getexline, NULL,
+***************
+*** 295,302 ****
+ emsg_silent = save_emsg_silent;
+ redir_off = save_redir_off;
+
+! /* Only print the message again when typing a command before coming back
+! * here. */
+ debug_did_msg = TRUE;
+ }
+
+--- 294,301 ----
+ emsg_silent = save_emsg_silent;
+ redir_off = save_redir_off;
+
+! // Only print the message again when typing a command before coming back
+! // here.
+ debug_did_msg = TRUE;
+ }
+
+***************
+*** 428,434 ****
+ {
+ if (!eap->skip)
+ {
+! /* replace K_SNR with "<SNR>" */
+ if (debug_breakpoint_name[0] == K_SPECIAL
+ && debug_breakpoint_name[1] == KS_EXTRA
+ && debug_breakpoint_name[2] == (int)KE_SNR)
+--- 427,433 ----
+ {
+ if (!eap->skip)
+ {
+! // replace K_SNR with "<SNR>"
+ if (debug_breakpoint_name[0] == K_SPECIAL
+ && debug_breakpoint_name[1] == KS_EXTRA
+ && debug_breakpoint_name[2] == (int)KE_SNR)
+***************
+*** 472,485 ****
+
+ if (debug_skipped)
+ {
+! /*
+! * Save the value of got_int and reset it. We don't want a previous
+! * interruption cause flushing the input buffer.
+! */
+ prev_got_int = got_int;
+ got_int = FALSE;
+ debug_breakpoint_name = debug_skipped_name;
+! /* eap->skip is TRUE */
+ eap->skip = FALSE;
+ (void)dbg_check_breakpoint(eap);
+ eap->skip = TRUE;
+--- 471,482 ----
+
+ if (debug_skipped)
+ {
+! // Save the value of got_int and reset it. We don't want a previous
+! // interruption cause flushing the input buffer.
+ prev_got_int = got_int;
+ got_int = FALSE;
+ debug_breakpoint_name = debug_skipped_name;
+! // eap->skip is TRUE
+ eap->skip = FALSE;
+ (void)dbg_check_breakpoint(eap);
+ eap->skip = TRUE;
+***************
+*** 495,519 ****
+ */
+ struct debuggy
+ {
+! int dbg_nr; /* breakpoint number */
+! int dbg_type; /* DBG_FUNC, DBG_FILE or DBG_EXPR */
+! char_u *dbg_name; /* function, expression or file name */
+! regprog_T *dbg_prog; /* regexp program */
+! linenr_T dbg_lnum; /* line number in function or file */
+! int dbg_forceit; /* ! used */
+ #ifdef FEAT_EVAL
+! typval_T *dbg_val; /* last result of watchexpression */
+ #endif
+! int dbg_level; /* stored nested level for expr */
+ };
+
+ static garray_T dbg_breakp = {0, 0, sizeof(struct debuggy), 4, NULL};
+ #define BREAKP(idx) (((struct debuggy *)dbg_breakp.ga_data)[idx])
+ #define DEBUGGY(gap, idx) (((struct debuggy *)gap->ga_data)[idx])
+! static int last_breakp = 0; /* nr of last defined breakpoint */
+
+ #ifdef FEAT_PROFILE
+! /* Profiling uses file and func names similar to breakpoints. */
+ static garray_T prof_ga = {0, 0, sizeof(struct debuggy), 4, NULL};
+ #endif
+ #define DBG_FUNC 1
+--- 492,516 ----
+ */
+ struct debuggy
+ {
+! int dbg_nr; // breakpoint number
+! int dbg_type; // DBG_FUNC, DBG_FILE or DBG_EXPR
+! char_u *dbg_name; // function, expression or file name
+! regprog_T *dbg_prog; // regexp program
+! linenr_T dbg_lnum; // line number in function or file
+! int dbg_forceit; // ! used
+ #ifdef FEAT_EVAL
+! typval_T *dbg_val; // last result of watchexpression
+ #endif
+! int dbg_level; // stored nested level for expr
+ };
+
+ static garray_T dbg_breakp = {0, 0, sizeof(struct debuggy), 4, NULL};
+ #define BREAKP(idx) (((struct debuggy *)dbg_breakp.ga_data)[idx])
+ #define DEBUGGY(gap, idx) (((struct debuggy *)gap->ga_data)[idx])
+! static int last_breakp = 0; // nr of last defined breakpoint
+
+ #ifdef FEAT_PROFILE
+! // Profiling uses file and func names similar to breakpoints.
+ static garray_T prof_ga = {0, 0, sizeof(struct debuggy), 4, NULL};
+ #endif
+ #define DBG_FUNC 1
+***************
+*** 531,537 ****
+ static int
+ dbg_parsearg(
+ char_u *arg,
+! garray_T *gap) /* either &dbg_breakp or &prof_ga */
+ {
+ char_u *p = arg;
+ char_u *q;
+--- 528,534 ----
+ static int
+ dbg_parsearg(
+ char_u *arg,
+! garray_T *gap) // either &dbg_breakp or &prof_ga
+ {
+ char_u *p = arg;
+ char_u *q;
+***************
+*** 542,548 ****
+ return FAIL;
+ bp = &DEBUGGY(gap, gap->ga_len);
+
+! /* Find "func" or "file". */
+ if (STRNCMP(p, "func", 4) == 0)
+ bp->dbg_type = DBG_FUNC;
+ else if (STRNCMP(p, "file", 4) == 0)
+--- 539,545 ----
+ return FAIL;
+ bp = &DEBUGGY(gap, gap->ga_len);
+
+! // Find "func" or "file".
+ if (STRNCMP(p, "func", 4) == 0)
+ bp->dbg_type = DBG_FUNC;
+ else if (STRNCMP(p, "file", 4) == 0)
+***************
+*** 574,580 ****
+ }
+ p = skipwhite(p + 4);
+
+! /* Find optional line number. */
+ if (here)
+ bp->dbg_lnum = curwin->w_cursor.lnum;
+ else if (
+--- 571,577 ----
+ }
+ p = skipwhite(p + 4);
+
+! // Find optional line number.
+ if (here)
+ bp->dbg_lnum = curwin->w_cursor.lnum;
+ else if (
+***************
+*** 589,595 ****
+ else
+ bp->dbg_lnum = 0;
+
+! /* Find the function or file name. Don't accept a function name with (). */
+ if ((!here && *p == NUL)
+ || (here && *p != NUL)
+ || (bp->dbg_type == DBG_FUNC && strstr((char *)p, "()") != NULL))
+--- 586,592 ----
+ else
+ bp->dbg_lnum = 0;
+
+! // Find the function or file name. Don't accept a function name with ().
+ if ((!here && *p == NUL)
+ || (here && *p != NUL)
+ || (bp->dbg_type == DBG_FUNC && strstr((char *)p, "()") != NULL))
+***************
+*** 610,618 ****
+ }
+ else
+ {
+! /* Expand the file name in the same way as do_source(). This means
+! * doing it twice, so that $DIR/file gets expanded when $DIR is
+! * "~/dir". */
+ q = expand_env_save(p);
+ if (q == NULL)
+ return FAIL;
+--- 607,615 ----
+ }
+ else
+ {
+! // Expand the file name in the same way as do_source(). This means
+! // doing it twice, so that $DIR/file gets expanded when $DIR is
+! // "~/dir".
+ q = expand_env_save(p);
+ if (q == NULL)
+ return FAIL;
+***************
+*** 667,673 ****
+ vim_free(bp->dbg_name);
+ else
+ {
+! if (bp->dbg_lnum == 0) /* default line number is 1 */
+ bp->dbg_lnum = 1;
+ #ifdef FEAT_PROFILE
+ if (eap->cmdidx != CMD_profile)
+--- 664,670 ----
+ vim_free(bp->dbg_name);
+ else
+ {
+! if (bp->dbg_lnum == 0) // default line number is 1
+ bp->dbg_lnum = 1;
+ #ifdef FEAT_PROFILE
+ if (eap->cmdidx != CMD_profile)
+***************
+*** 681,687 ****
+ }
+ else
+ {
+! /* DBG_EXPR */
+ DEBUGGY(gap, gap->ga_len++).dbg_nr = ++last_breakp;
+ ++debug_tick;
+ }
+--- 678,684 ----
+ }
+ else
+ {
+! // DBG_EXPR
+ DEBUGGY(gap, gap->ga_len++).dbg_nr = ++last_breakp;
+ ++debug_tick;
+ }
+***************
+*** 727,733 ****
+
+ if (vim_isdigit(*eap->arg))
+ {
+! /* ":breakdel {nr}" */
+ nr = atol((char *)eap->arg);
+ for (i = 0; i < gap->ga_len; ++i)
+ if (DEBUGGY(gap, i).dbg_nr == nr)
+--- 724,730 ----
+
+ if (vim_isdigit(*eap->arg))
+ {
+! // ":breakdel {nr}"
+ nr = atol((char *)eap->arg);
+ for (i = 0; i < gap->ga_len; ++i)
+ if (DEBUGGY(gap, i).dbg_nr == nr)
+***************
+*** 743,749 ****
+ }
+ else
+ {
+! /* ":breakdel {func|file|expr} [lnum] {name}" */
+ if (dbg_parsearg(eap->arg, gap) == FAIL)
+ return;
+ bp = &DEBUGGY(gap, gap->ga_len);
+--- 740,746 ----
+ }
+ else
+ {
+! // ":breakdel {func|file|expr} [lnum] {name}"
+ if (dbg_parsearg(eap->arg, gap) == FAIL)
+ return;
+ bp = &DEBUGGY(gap, gap->ga_len);
+***************
+*** 789,795 ****
+ break;
+ }
+
+! /* If all breakpoints were removed clear the array. */
+ if (gap->ga_len == 0)
+ ga_clear(gap);
+ }
+--- 786,792 ----
+ break;
+ }
+
+! // If all breakpoints were removed clear the array.
+ if (gap->ga_len == 0)
+ ga_clear(gap);
+ }
+***************
+*** 830,838 ****
+ */
+ linenr_T
+ dbg_find_breakpoint(
+! int file, /* TRUE for a file, FALSE for a function */
+! char_u *fname, /* file or function name */
+! linenr_T after) /* after this line number */
+ {
+ return debuggy_find(file, fname, after, &dbg_breakp, NULL);
+ }
+--- 827,835 ----
+ */
+ linenr_T
+ dbg_find_breakpoint(
+! int file, // TRUE for a file, FALSE for a function
+! char_u *fname, // file or function name
+! linenr_T after) // after this line number
+ {
+ return debuggy_find(file, fname, after, &dbg_breakp, NULL);
+ }
+***************
+*** 843,851 ****
+ */
+ int
+ has_profiling(
+! int file, /* TRUE for a file, FALSE for a function */
+! char_u *fname, /* file or function name */
+! int *fp) /* return: forceit */
+ {
+ return (debuggy_find(file, fname, (linenr_T)0, &prof_ga, fp)
+ != (linenr_T)0);
+--- 840,848 ----
+ */
+ int
+ has_profiling(
+! int file, // TRUE for a file, FALSE for a function
+! char_u *fname, // file or function name
+! int *fp) // return: forceit
+ {
+ return (debuggy_find(file, fname, (linenr_T)0, &prof_ga, fp)
+ != (linenr_T)0);
+***************
+*** 857,867 ****
+ */
+ static linenr_T
+ debuggy_find(
+! int file, /* TRUE for a file, FALSE for a function */
+! char_u *fname, /* file or function name */
+! linenr_T after, /* after this line number */
+! garray_T *gap, /* either &dbg_breakp or &prof_ga */
+! int *fp) /* if not NULL: return forceit */
+ {
+ struct debuggy *bp;
+ int i;
+--- 854,864 ----
+ */
+ static linenr_T
+ debuggy_find(
+! int file, // TRUE for a file, FALSE for a function
+! char_u *fname, // file or function name
+! linenr_T after, // after this line number
+! garray_T *gap, // either &dbg_breakp or &prof_ga
+! int *fp) // if not NULL: return forceit
+ {
+ struct debuggy *bp;
+ int i;
+***************
+*** 869,879 ****
+ char_u *name = fname;
+ int prev_got_int;
+
+! /* Return quickly when there are no breakpoints. */
+ if (gap->ga_len == 0)
+ return (linenr_T)0;
+
+! /* Replace K_SNR in function name with "<SNR>". */
+ if (!file && fname[0] == K_SPECIAL)
+ {
+ name = alloc((unsigned)STRLEN(fname) + 3);
+--- 866,876 ----
+ char_u *name = fname;
+ int prev_got_int;
+
+! // Return quickly when there are no breakpoints.
+ if (gap->ga_len == 0)
+ return (linenr_T)0;
+
+! // Replace K_SNR in function name with "<SNR>".
+ if (!file && fname[0] == K_SPECIAL)
+ {
+ name = alloc((unsigned)STRLEN(fname) + 3);
+***************
+*** 888,895 ****
+
+ for (i = 0; i < gap->ga_len; ++i)
+ {
+! /* Skip entries that are not useful or are for a line that is beyond
+! * an already found breakpoint. */
+ bp = &DEBUGGY(gap, i);
+ if (((bp->dbg_type == DBG_FILE) == file &&
+ bp->dbg_type != DBG_EXPR && (
+--- 885,892 ----
+
+ for (i = 0; i < gap->ga_len; ++i)
+ {
+! // Skip entries that are not useful or are for a line that is beyond
+! // an already found breakpoint.
+ bp = &DEBUGGY(gap, i);
+ if (((bp->dbg_type == DBG_FILE) == file &&
+ bp->dbg_type != DBG_EXPR && (
+***************
+*** 898,908 ****
+ #endif
+ (bp->dbg_lnum > after && (lnum == 0 || bp->dbg_lnum < lnum)))))
+ {
+! /*
+! * Save the value of got_int and reset it. We don't want a
+! * previous interruption cancel matching, only hitting CTRL-C
+! * while matching should abort it.
+! */
+ prev_got_int = got_int;
+ got_int = FALSE;
+ if (vim_regexec_prog(&bp->dbg_prog, FALSE, name, (colnr_T)0))
+--- 895,903 ----
+ #endif
+ (bp->dbg_lnum > after && (lnum == 0 || bp->dbg_lnum < lnum)))))
+ {
+! // Save the value of got_int and reset it. We don't want a
+! // previous interruption cancel matching, only hitting CTRL-C
+! // while matching should abort it.
+ prev_got_int = got_int;
+ got_int = FALSE;
+ if (vim_regexec_prog(&bp->dbg_prog, FALSE, name, (colnr_T)0))
+***************
+*** 942,949 ****
+
+ line = TRUE;
+ debug_oldval = typval_tostring(bp->dbg_val);
+! /* Need to evaluate again, typval_compare() overwrites
+! * "tv". */
+ v = eval_expr(bp->dbg_name, NULL);
+ debug_newval = typval_tostring(v);
+ free_tv(bp->dbg_val);
+--- 937,944 ----
+
+ line = TRUE;
+ debug_oldval = typval_tostring(bp->dbg_val);
+! // Need to evaluate again, typval_compare() overwrites
+! // "tv".
+ v = eval_expr(bp->dbg_name, NULL);
+ debug_newval = typval_tostring(v);
+ free_tv(bp->dbg_val);
+***************
+*** 983,989 ****
+ void
+ dbg_breakpoint(char_u *name, linenr_T lnum)
+ {
+! /* We need to check if this line is actually executed in do_one_cmd() */
+ debug_breakpoint_name = name;
+ debug_breakpoint_lnum = lnum;
+ }
+--- 978,984 ----
+ void
+ dbg_breakpoint(char_u *name, linenr_T lnum)
+ {
+! // We need to check if this line is actually executed in do_one_cmd()
+ debug_breakpoint_name = name;
+ debug_breakpoint_lnum = lnum;
+ }
+*** ../vim-8.1.1199/src/version.c 2019-04-23 16:35:59.272261198 +0200
+--- src/version.c 2019-04-23 18:38:15.491378846 +0200
+***************
+*** 773,774 ****
+--- 773,776 ----
+ { /* Add new patch number below this line */
++ /**/
++ 1200,
+ /**/
+
+--
+What the word 'politics' means: 'Poli' in Latin meaning 'many' and 'tics'
+meaning 'bloodsucking creatures'.
+
+ /// 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 ///