--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.268
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.268
+Problem: Crash when using Python to set cursor beyond end of line.
+ (winterTTr)
+Solution: Check the column to be valid.
+Files: src/if_python.c
+
+
+*** ../vim-7.2.267/src/if_python.c 2009-07-09 20:06:30.000000000 +0200
+--- src/if_python.c 2009-10-10 14:49:10.000000000 +0200
+***************
+*** 2058,2063 ****
+--- 2058,2064 ----
+ {
+ long lnum;
+ long col;
++ long len;
+
+ if (!PyArg_Parse(val, "(ll)", &lnum, &col))
+ return -1;
+***************
+*** 2072,2081 ****
+ if (VimErrorCheck())
+ return -1;
+
+! /* NO CHECK ON COLUMN - SEEMS NOT TO MATTER */
+
+ this->win->w_cursor.lnum = lnum;
+ this->win->w_cursor.col = col;
+ update_screen(VALID);
+
+ return 0;
+--- 2073,2088 ----
+ if (VimErrorCheck())
+ return -1;
+
+! /* When column is out of range silently correct it. */
+! len = STRLEN(ml_get_buf(this->win->w_buffer, lnum, FALSE));
+! if (col > len)
+! col = len;
+
+ this->win->w_cursor.lnum = lnum;
+ this->win->w_cursor.col = col;
++ #ifdef FEAT_VIRTUALEDIT
++ this->win->w_cursor.coladd = 0;
++ #endif
+ update_screen(VALID);
+
+ return 0;
+*** ../vim-7.2.267/src/version.c 2009-10-07 16:19:52.000000000 +0200
+--- src/version.c 2009-11-03 11:42:08.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 268,
+ /**/
+
+--
+VOICE OVER: As the horrendous Black Beast lunged forward, escape for Arthur
+ and his knights seemed hopeless, when, suddenly ... the animator
+ suffered a fatal heart attack.
+ANIMATOR: Aaaaagh!
+VOICE OVER: The cartoon peril was no more ... The Quest for Holy Grail could
+ continue.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.269
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.269
+Problem: Many people struggle to find out why Vim startup is slow.
+Solution: Add the --startuptime command line flag.
+Files: runtime/doc/starting.txt, src/globals.h, src/feature.h,
+ src/main.c, src/macros.h
+
+
+*** ../vim-7.2.268/runtime/doc/starting.txt 2008-11-09 13:43:25.000000000 +0100
+--- runtime/doc/starting.txt 2009-10-25 11:57:51.000000000 +0100
+***************
+*** 144,149 ****
+--- 144,156 ----
+ -u NORC no yes
+ --noplugin yes no
+
++ --startuptime={fname} *--startuptime*
++ During startup write timing messages to the file {fname}.
++ This can be used to find out where time is spent while loading
++ your .vimrc and plugins.
++ When {fname} already exists new messages are appended.
++ {only when compiled with this feature}
++
+ *--literal*
+ --literal Take file names literally, don't expand wildcards. Not needed
+ for Unix, because Vim always takes file names literally (the
+***************
+*** 471,476 ****
+--- 487,493 ----
+ window title and copy/paste using the X clipboard. This
+ avoids a long startup time when running Vim in a terminal
+ emulator and the connection to the X server is slow.
++ See |--startuptime| to find out if affects you.
+ Only makes a difference on Unix or VMS, when compiled with the
+ |+X11| feature. Otherwise it's ignored.
+ To disable the connection only for specific terminals, see the
+*** ../vim-7.2.268/src/globals.h 2009-07-29 12:09:49.000000000 +0200
+--- src/globals.h 2009-10-10 15:14:31.000000000 +0200
+***************
+*** 1567,1572 ****
+--- 1567,1576 ----
+ /* For undo we need to know the lowest time possible. */
+ EXTERN time_t starttime;
+
++ #ifdef STARTUPTIME
++ EXTERN FILE *time_fd INIT(= NULL); /* where to write startup timing */
++ #endif
++
+ /*
+ * Some compilers warn for not using a return value, but in some situations we
+ * can't do anything useful with the value. Assign to this variable to avoid
+*** ../vim-7.2.268/src/feature.h 2008-11-09 13:43:25.000000000 +0100
+--- src/feature.h 2009-10-10 16:16:19.000000000 +0200
+***************
+*** 844,853 ****
+ /* #define DEBUG */
+
+ /*
+! * STARTUPTIME Time the startup process. Writes a "vimstartup" file
+! * with timestamps.
+ */
+! /* #define STARTUPTIME "vimstartup" */
+
+ /*
+ * MEM_PROFILE Debugging of memory allocation and freeing.
+--- 844,857 ----
+ /* #define DEBUG */
+
+ /*
+! * STARTUPTIME Time the startup process. Writes a file with
+! * timestamps.
+ */
+! #if defined(FEAT_NORMAL) \
+! && ((defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)) \
+! || defined(WIN3264))
+! # define STARTUPTIME 1
+! #endif
+
+ /*
+ * MEM_PROFILE Debugging of memory allocation and freeing.
+*** ../vim-7.2.268/src/main.c 2009-05-26 22:58:43.000000000 +0200
+--- src/main.c 2009-10-10 16:18:32.000000000 +0200
+***************
+*** 130,139 ****
+ #endif
+
+
+- #ifdef STARTUPTIME
+- static FILE *time_fd = NULL;
+- #endif
+-
+ /*
+ * Different types of error messages.
+ */
+--- 130,135 ----
+***************
+*** 173,178 ****
+--- 169,177 ----
+ char_u *fname = NULL; /* file name from command line */
+ mparm_T params; /* various parameters passed between
+ * main() and other functions. */
++ #ifdef STARTUPTIME
++ int i;
++ #endif
+
+ /*
+ * Do any system-specific initialisations. These can NOT use IObuff or
+***************
+*** 203,210 ****
+ #endif
+
+ #ifdef STARTUPTIME
+! time_fd = mch_fopen(STARTUPTIME, "a");
+! TIME_MSG("--- VIM STARTING ---");
+ #endif
+ starttime = time(NULL);
+
+--- 202,216 ----
+ #endif
+
+ #ifdef STARTUPTIME
+! for (i = 1; i < argc; ++i)
+! {
+! if (STRNICMP(argv[i], "--startuptime=", 14) == 0)
+! {
+! time_fd = mch_fopen(argv[i] + 14, "a");
+! TIME_MSG("--- VIM STARTING ---");
+! break;
+! }
+! }
+ #endif
+ starttime = time(NULL);
+
+***************
+*** 1150,1155 ****
+--- 1156,1173 ----
+ cursor_on();
+
+ do_redraw = FALSE;
++
++ #ifdef STARTUPTIME
++ /* Now that we have drawn the first screen all the startup stuff
++ * has been done, close any file for startup messages. */
++ if (time_fd != NULL)
++ {
++ TIME_MSG("first screen update");
++ TIME_MSG("--- VIM STARTED ---");
++ fclose(time_fd);
++ time_fd = NULL;
++ }
++ #endif
+ }
+ #ifdef FEAT_GUI
+ if (need_mouse_correct)
+***************
+*** 1743,1748 ****
+--- 1761,1770 ----
+ /* already processed, skip */
+ }
+ #endif
++ else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
++ {
++ /* already processed, skip */
++ }
+ else
+ {
+ if (argv[0][argv_idx])
+***************
+*** 3211,3216 ****
+--- 3233,3252 ----
+
+ static struct timeval prev_timeval;
+
++ # ifdef WIN3264
++ /*
++ * Windows doesn't have gettimeofday(), although it does have struct timeval.
++ */
++ static int
++ gettimeofday(struct timeval *tv, char *dummy)
++ {
++ long t = clock();
++ tv->tv_sec = t / CLOCKS_PER_SEC;
++ tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
++ return 0;
++ }
++ # endif
++
+ /*
+ * Save the previous time before doing something that could nest.
+ * set "*tv_rel" to the time elapsed so far.
+***************
+*** 3299,3318 ****
+ }
+ }
+
+- # ifdef WIN3264
+- /*
+- * Windows doesn't have gettimeofday(), although it does have struct timeval.
+- */
+- int
+- gettimeofday(struct timeval *tv, char *dummy)
+- {
+- long t = clock();
+- tv->tv_sec = t / CLOCKS_PER_SEC;
+- tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
+- return 0;
+- }
+- # endif
+-
+ #endif
+
+ #if defined(FEAT_CLIENTSERVER) || defined(PROTO)
+--- 3335,3340 ----
+*** ../vim-7.2.268/src/macros.h 2009-05-17 13:30:58.000000000 +0200
+--- src/macros.h 2009-10-10 15:19:07.000000000 +0200
+***************
+*** 243,249 ****
+ #endif
+
+ #ifdef STARTUPTIME
+! # define TIME_MSG(s) time_msg(s, NULL)
+ #else
+ # define TIME_MSG(s)
+ #endif
+--- 243,249 ----
+ #endif
+
+ #ifdef STARTUPTIME
+! # define TIME_MSG(s) { if (time_fd != NULL) time_msg(s, NULL); }
+ #else
+ # define TIME_MSG(s)
+ #endif
+*** ../vim-7.2.268/src/version.c 2009-11-03 11:43:05.000000000 +0100
+--- src/version.c 2009-11-03 12:06:31.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 269,
+ /**/
+
+--
+BEDEVERE: Look! It's the old man from scene 24 - what's he Doing here?
+ARTHUR: He is the keeper of the Bridge. He asks each traveler five
+ questions ...
+GALAHAD: Three questions.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.270
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.270
+Problem: Using ":@c" when the c register contains a CR causes the rest to
+ be executed later. (Dexter Douglas)
+Solution: Don't check for typeahead to start with ':', keep executing
+ commands until all added typeahead has been used.
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.269/src/ex_docmd.c 2009-09-30 13:23:57.000000000 +0200
+--- src/ex_docmd.c 2009-10-28 12:06:54.000000000 +0100
+***************
+*** 8358,8363 ****
+--- 8358,8364 ----
+ exarg_T *eap;
+ {
+ int c;
++ int prev_len = typebuf.tb_len;
+
+ curwin->w_cursor.lnum = eap->line2;
+
+***************
+*** 8383,8393 ****
+
+ /*
+ * Execute from the typeahead buffer.
+! * Originally this didn't check for the typeahead buffer to be empty,
+! * thus could read more Ex commands from stdin. It's not clear why,
+! * it is certainly unexpected.
+ */
+! while ((!stuff_empty() || typebuf.tb_len > 0) && vpeekc() == ':')
+ (void)do_cmdline(NULL, getexline, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE);
+
+ exec_from_reg = save_efr;
+--- 8384,8393 ----
+
+ /*
+ * Execute from the typeahead buffer.
+! * Continue until the stuff buffer is empty and all added characters
+! * have been consumed.
+ */
+! while (!stuff_empty() || typebuf.tb_len > prev_len)
+ (void)do_cmdline(NULL, getexline, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE);
+
+ exec_from_reg = save_efr;
+*** ../vim-7.2.269/src/version.c 2009-11-03 12:10:39.000000000 +0100
+--- src/version.c 2009-11-03 12:32:47.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 270,
+ /**/
+
+--
+To the optimist, the glass is half full.
+To the pessimist, the glass is half empty.
+To the engineer, the glass is twice as big as it needs to be.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.271
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.271
+Problem: Using freed memory in Motif GUI version when making a choice.
+Solution: Free memory only after using it. (Dominique Pelle)
+Files: src/gui_xmdlg.c
+
+
+*** ../vim-7.2.270/src/gui_xmdlg.c 2009-05-21 23:25:38.000000000 +0200
+--- src/gui_xmdlg.c 2009-10-28 21:56:15.000000000 +0100
+***************
+*** 10,16 ****
+ /*
+ * (C) 2001,2005 by Marcin Dalecki <martin@dalecki.de>
+ *
+! * Implementation of dialogue functions for the Motif GUI variant.
+ *
+ * Note about Lesstif: Apparently lesstif doesn't get the widget layout right,
+ * when using a dynamic scrollbar policy.
+--- 10,16 ----
+ /*
+ * (C) 2001,2005 by Marcin Dalecki <martin@dalecki.de>
+ *
+! * Implementation of dialog functions for the Motif GUI variant.
+ *
+ * Note about Lesstif: Apparently lesstif doesn't get the widget layout right,
+ * when using a dynamic scrollbar policy.
+***************
+*** 633,648 ****
+ data->sel[which] = XtNewString(sel);
+ else
+ {
+- XtFree(data->sel[which]);
+ if (!strcmp(data->sel[which], sel))
+ {
+ /* unselecting current selection */
+ data->sel[which] = NULL;
+ if (w)
+ XmListDeselectItem(w, call_data->item);
+ }
+ else
+ data->sel[which] = XtNewString(sel);
+ }
+ XtFree(sel);
+
+--- 633,651 ----
+ data->sel[which] = XtNewString(sel);
+ else
+ {
+ if (!strcmp(data->sel[which], sel))
+ {
+ /* unselecting current selection */
++ XtFree(data->sel[which]);
+ data->sel[which] = NULL;
+ if (w)
+ XmListDeselectItem(w, call_data->item);
+ }
+ else
++ {
++ XtFree(data->sel[which]);
+ data->sel[which] = XtNewString(sel);
++ }
+ }
+ XtFree(sel);
+
+*** ../vim-7.2.270/src/version.c 2009-11-03 12:38:50.000000000 +0100
+--- src/version.c 2009-11-03 12:48:26.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 271,
+ /**/
+
+--
+ROBIN: (warily) And if you get a question wrong?
+ARTHUR: You are cast into the Gorge of Eternal Peril.
+ROBIN: Oh ... wacho!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.272
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.272
+Problem: "_.svz" is not recognized as a swap file. (David M. Besonen)
+Solution: Accept .s[uvw][a-z] as a swap file name extension.
+Files: src/memline.c
+
+
+*** ../vim-7.2.271/src/memline.c 2009-04-22 15:56:27.000000000 +0200
+--- src/memline.c 2009-10-29 20:55:08.000000000 +0100
+***************
+*** 864,884 ****
+ recoverymode = TRUE;
+ called_from_main = (curbuf->b_ml.ml_mfp == NULL);
+ attr = hl_attr(HLF_E);
+! /*
+! * If the file name ends in ".sw?" we use it directly.
+! * Otherwise a search is done to find the swap file(s).
+! */
+ fname = curbuf->b_fname;
+ if (fname == NULL) /* When there is no file name */
+ fname = (char_u *)"";
+ len = (int)STRLEN(fname);
+ if (len >= 4 &&
+ #if defined(VMS) || defined(RISCOS)
+! STRNICMP(fname + len - 4, "_sw" , 3)
+ #else
+! STRNICMP(fname + len - 4, ".sw" , 3)
+ #endif
+! == 0)
+ {
+ directly = TRUE;
+ fname = vim_strsave(fname); /* make a copy for mf_open() */
+--- 864,887 ----
+ recoverymode = TRUE;
+ called_from_main = (curbuf->b_ml.ml_mfp == NULL);
+ attr = hl_attr(HLF_E);
+!
+! /*
+! * If the file name ends in ".s[uvw][a-z]" we assume this is the swap file.
+! * Otherwise a search is done to find the swap file(s).
+! */
+ fname = curbuf->b_fname;
+ if (fname == NULL) /* When there is no file name */
+ fname = (char_u *)"";
+ len = (int)STRLEN(fname);
+ if (len >= 4 &&
+ #if defined(VMS) || defined(RISCOS)
+! STRNICMP(fname + len - 4, "_s" , 2)
+ #else
+! STRNICMP(fname + len - 4, ".s" , 2)
+ #endif
+! == 0
+! && vim_strchr((char_u *)"UVWuvw", fname[len - 2]) != NULL
+! && ASCII_ISALPHA(fname[len - 1]))
+ {
+ directly = TRUE;
+ fname = vim_strsave(fname); /* make a copy for mf_open() */
+*** ../vim-7.2.271/src/version.c 2009-11-03 12:53:44.000000000 +0100
+--- src/version.c 2009-11-03 13:02:51.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 272,
+ /**/
+
+--
+Sorry, no fortune today.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.273
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.273
+Problem: Crash with redir to unknown array. (Christian Brabandt)
+Solution: Don't assign the redir result when there was an error.
+Files: src/eval.c
+
+
+*** ../vim-7.2.272/src/eval.c 2009-09-30 15:15:33.000000000 +0200
+--- src/eval.c 2009-11-03 12:05:07.000000000 +0100
+***************
+*** 988,1000 ****
+ int err;
+ typval_T tv;
+
+! /* Make sure a valid variable name is specified */
+ if (!eval_isnamec1(*name))
+ {
+ EMSG(_(e_invarg));
+ return FAIL;
+ }
+
+ redir_varname = vim_strsave(name);
+ if (redir_varname == NULL)
+ return FAIL;
+--- 988,1001 ----
+ int err;
+ typval_T tv;
+
+! /* Catch a bad name early. */
+ if (!eval_isnamec1(*name))
+ {
+ EMSG(_(e_invarg));
+ return FAIL;
+ }
+
++ /* Make a copy of the name, it is used in redir_lval until redir ends. */
+ redir_varname = vim_strsave(name);
+ if (redir_varname == NULL)
+ return FAIL;
+***************
+*** 1019,1024 ****
+--- 1020,1026 ----
+ EMSG(_(e_trailing));
+ else
+ EMSG(_(e_invarg));
++ redir_endp = NULL; /* don't store a value, only cleanup */
+ var_redir_stop();
+ return FAIL;
+ }
+***************
+*** 1037,1042 ****
+--- 1039,1045 ----
+ did_emsg |= save_emsg;
+ if (err)
+ {
++ redir_endp = NULL; /* don't store a value, only cleanup */
+ var_redir_stop();
+ return FAIL;
+ }
+***************
+*** 1085,1090 ****
+--- 1088,1094 ----
+
+ /*
+ * Stop redirecting command output to a variable.
++ * Frees the allocated memory.
+ */
+ void
+ var_redir_stop()
+***************
+*** 1093,1106 ****
+
+ if (redir_lval != NULL)
+ {
+! /* Append the trailing NUL. */
+! ga_append(&redir_ga, NUL);
+
+! /* Assign the text to the variable. */
+! tv.v_type = VAR_STRING;
+! tv.vval.v_string = redir_ga.ga_data;
+! set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)".");
+! vim_free(tv.vval.v_string);
+
+ clear_lval(redir_lval);
+ vim_free(redir_lval);
+--- 1097,1114 ----
+
+ if (redir_lval != NULL)
+ {
+! /* If there was no error: assign the text to the variable. */
+! if (redir_endp != NULL)
+! {
+! ga_append(&redir_ga, NUL); /* Append the trailing NUL. */
+! tv.v_type = VAR_STRING;
+! tv.vval.v_string = redir_ga.ga_data;
+! set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)".");
+! }
+
+! /* free the collected output */
+! vim_free(redir_ga.ga_data);
+! redir_ga.ga_data = NULL;
+
+ clear_lval(redir_lval);
+ vim_free(redir_lval);
+*** ../vim-7.2.272/src/version.c 2009-11-03 13:06:03.000000000 +0100
+--- src/version.c 2009-11-03 14:24:06.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 273,
+ /**/
+
+--
+Permission is granted to read this message out aloud on Kings Cross Road,
+London, under the condition that the orator is properly dressed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.274
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.274
+Problem: Syntax folding doesn't work properly when adding a comment.
+Solution: Fix it and add a test. (Lech Lorens)
+Files: src/fold.c, src/testdir/test45.in, src/testdir/test45.ok
+
+
+*** ../vim-7.2.273/src/fold.c 2009-09-18 15:16:37.000000000 +0200
+--- src/fold.c 2009-11-03 12:36:37.000000000 +0100
+***************
+*** 2256,2261 ****
+--- 2256,2295 ----
+ }
+ }
+
++ /*
++ * If folding is defined by the syntax, it is possible that a change in
++ * one line will cause all sub-folds of the current fold to change (e.g.,
++ * closing a C-style comment can cause folds in the subsequent lines to
++ * appear). To take that into account we should adjust the value of "bot"
++ * to point to the end of the current fold:
++ */
++ if (foldlevelSyntax == getlevel)
++ {
++ garray_T *gap = &wp->w_folds;
++ fold_T *fp = NULL;
++ int current_fdl = 0;
++ linenr_T fold_start_lnum = 0;
++ linenr_T lnum_rel = fline.lnum;
++
++ while (current_fdl < fline.lvl)
++ {
++ if (!foldFind(gap, lnum_rel, &fp))
++ break;
++ ++current_fdl;
++
++ fold_start_lnum += fp->fd_top;
++ gap = &fp->fd_nested;
++ lnum_rel -= fp->fd_top;
++ }
++ if (fp != NULL && current_fdl == fline.lvl)
++ {
++ linenr_T fold_end_lnum = fold_start_lnum + fp->fd_len;
++
++ if (fold_end_lnum > bot)
++ bot = fold_end_lnum;
++ }
++ }
++
+ start = fline.lnum;
+ end = bot;
+ /* Do at least one line. */
+*** ../vim-7.2.273/src/testdir/test45.in 2007-09-25 17:58:43.000000000 +0200
+--- src/testdir/test45.in 2009-11-03 12:22:38.000000000 +0100
+***************
+*** 28,36 ****
+ k:call append("$", foldlevel("."))
+ :" test syntax folding
+ :set fdm=syntax fdl=0
+! :syn region Hup start="dd" end="hh" fold
+ Gzk:call append("$", "folding " . getline("."))
+ k:call append("$", getline("."))
+ :" test expression folding
+ :fun Flvl()
+ let l = getline(v:lnum)
+--- 28,41 ----
+ k:call append("$", foldlevel("."))
+ :" test syntax folding
+ :set fdm=syntax fdl=0
+! :syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
+! :syn region Fd1 start="ee" end="ff" fold contained
+! :syn region Fd2 start="gg" end="hh" fold contained
+! :syn region Fd3 start="commentstart" end="commentend" fold contained
+ Gzk:call append("$", "folding " . getline("."))
+ k:call append("$", getline("."))
++ jAcommentstart \eAcommentend\e:set fdl=1
++ 3j:call append("$", getline("."))
+ :" test expression folding
+ :fun Flvl()
+ let l = getline(v:lnum)
+*** ../vim-7.2.273/src/testdir/test45.ok 2004-06-13 17:47:37.000000000 +0200
+--- src/testdir/test45.ok 2009-11-03 12:22:50.000000000 +0100
+***************
+*** 8,15 ****
+ 0
+ indent 2
+ 1
+! folding 8 hh
+ 3 cc
+ expr 2
+ 1
+ 2
+--- 8,16 ----
+ 0
+ indent 2
+ 1
+! folding 9 ii
+ 3 cc
++ 7 gg
+ expr 2
+ 1
+ 2
+*** ../vim-7.2.273/src/version.c 2009-11-03 14:26:29.000000000 +0100
+--- src/version.c 2009-11-03 14:44:21.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 274,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite colour?
+LAUNCELOT: Blue.
+BRIDGEKEEPER: Right. Off you go.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.275
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.275
+Problem: Warning for unused argument and comparing signed and unsigned.
+Solution: Add type cast.
+Files: src/memline.c
+
+
+*** ../vim-7.2.274/src/memline.c 2009-11-03 13:06:03.000000000 +0100
+--- src/memline.c 2009-10-29 20:55:08.000000000 +0100
+***************
+*** 1285,1291 ****
+ for (i = 0; i < dp->db_line_count; ++i)
+ {
+ txt_start = (dp->db_index[i] & DB_INDEX_MASK);
+! if (txt_start <= HEADER_SIZE
+ || txt_start >= (int)dp->db_txt_end)
+ {
+ p = (char_u *)"???";
+--- 1285,1291 ----
+ for (i = 0; i < dp->db_line_count; ++i)
+ {
+ txt_start = (dp->db_index[i] & DB_INDEX_MASK);
+! if (txt_start <= (int)HEADER_SIZE
+ || txt_start >= (int)dp->db_txt_end)
+ {
+ p = (char_u *)"???";
+***************
+*** 1296,1302 ****
+ ml_append(lnum++, p, (colnr_T)0, TRUE);
+ }
+ if (has_error)
+! ml_append(lnum++, (char_u *)_("???END"), (colnr_T)0, TRUE);
+ }
+ }
+ }
+--- 1296,1303 ----
+ ml_append(lnum++, p, (colnr_T)0, TRUE);
+ }
+ if (has_error)
+! ml_append(lnum++, (char_u *)_("???END"),
+! (colnr_T)0, TRUE);
+ }
+ }
+ }
+***************
+*** 3576,3586 ****
+ * Make swap file name out of the file name and a directory name.
+ * Returns pointer to allocated memory or NULL.
+ */
+- /*ARGSUSED*/
+ char_u *
+ makeswapname(fname, ffname, buf, dir_name)
+ char_u *fname;
+! char_u *ffname;
+ buf_T *buf;
+ char_u *dir_name;
+ {
+--- 3577,3586 ----
+ * Make swap file name out of the file name and a directory name.
+ * Returns pointer to allocated memory or NULL.
+ */
+ char_u *
+ makeswapname(fname, ffname, buf, dir_name)
+ char_u *fname;
+! char_u *ffname UNUSED;
+ buf_T *buf;
+ char_u *dir_name;
+ {
+*** ../vim-7.2.274/src/version.c 2009-11-03 14:46:35.000000000 +0100
+--- src/version.c 2009-11-03 15:28:33.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 275,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite colour?
+GAWAIN: Blue ... No yelloooooww!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.276
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.276
+Problem: Crash when setting 'isprint' to a small bullet. (Raul Coronado)
+Solution: Check for the character to be < 256. Also make it possible to
+ specify a range of multi-byte characters. (Lech Lorens)
+Files: src/charset.c
+
+
+*** ../vim-7.2.275/src/charset.c 2009-10-07 16:19:52.000000000 +0200
+--- src/charset.c 2009-11-03 12:46:12.000000000 +0100
+***************
+*** 187,195 ****
+ if (VIM_ISDIGIT(*p))
+ c2 = getdigits(&p);
+ else
+ c2 = *p++;
+ }
+! if (c <= 0 || (c2 < c && c2 != -1) || c2 >= 256
+ || !(*p == NUL || *p == ','))
+ return FAIL;
+
+--- 187,200 ----
+ if (VIM_ISDIGIT(*p))
+ c2 = getdigits(&p);
+ else
++ #ifdef FEAT_MBYTE
++ if (has_mbyte)
++ c2 = mb_ptr2char_adv(&p);
++ else
++ #endif
+ c2 = *p++;
+ }
+! if (c <= 0 || c >= 256 || (c2 < c && c2 != -1) || c2 >= 256
+ || !(*p == NUL || *p == ','))
+ return FAIL;
+
+*** ../vim-7.2.275/src/version.c 2009-11-03 15:32:58.000000000 +0100
+--- src/version.c 2009-11-03 16:03:18.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 276,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite editor?
+GAWAIN: Emacs ... No, Viiiiiiiiiiimmmmmmm!
+ "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.277
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.277
+Problem: CTRL-Y in a diff'ed window may move the cursor outside of the
+ window. (Lech Lorens)
+Solution: Limit the number of filler lines to the height of the window.
+ Don't reset filler lines to zero for an empty buffer.
+Files: src/move.c
+
+
+*** ../vim-7.2.276/src/move.c 2009-05-15 21:31:11.000000000 +0200
+--- src/move.c 2009-11-03 14:39:55.000000000 +0100
+***************
+*** 183,191 ****
+ if (curwin->w_topline != 1)
+ redraw_later(NOT_VALID);
+ curwin->w_topline = 1;
+- #ifdef FEAT_DIFF
+- curwin->w_topfill = 0;
+- #endif
+ curwin->w_botline = 2;
+ curwin->w_valid |= VALID_BOTLINE|VALID_BOTLINE_AP;
+ #ifdef FEAT_SCROLLBIND
+--- 183,188 ----
+***************
+*** 1257,1263 ****
+ while (line_count-- > 0)
+ {
+ #ifdef FEAT_DIFF
+! if (curwin->w_topfill < diff_check(curwin, curwin->w_topline))
+ {
+ ++curwin->w_topfill;
+ ++done;
+--- 1254,1261 ----
+ while (line_count-- > 0)
+ {
+ #ifdef FEAT_DIFF
+! if (curwin->w_topfill < diff_check(curwin, curwin->w_topline)
+! && curwin->w_topfill < curwin->w_height - 1)
+ {
+ ++curwin->w_topfill;
+ ++done;
+*** ../vim-7.2.276/src/version.c 2009-11-03 16:03:59.000000000 +0100
+--- src/version.c 2009-11-03 16:22:04.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 277,
+ /**/
+
+--
+SIGFUN -- signature too funny (core dumped)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.278
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.278
+Problem: Using magic number in the folding code.
+Solution: Use the defined MAX_LEVEL.
+Files: src/fold.c
+
+
+*** ../vim-7.2.277/src/fold.c 2009-11-03 14:46:35.000000000 +0100
+--- src/fold.c 2009-11-03 12:36:37.000000000 +0100
+***************
+*** 1932,1938 ****
+ #ifdef FEAT_EVAL
+ if (*wp->w_p_fdt != NUL)
+ {
+! char_u dashes[51];
+ win_T *save_curwin;
+ int level;
+ char_u *p;
+--- 1932,1938 ----
+ #ifdef FEAT_EVAL
+ if (*wp->w_p_fdt != NUL)
+ {
+! char_u dashes[MAX_LEVEL + 2];
+ win_T *save_curwin;
+ int level;
+ char_u *p;
+***************
+*** 1944,1951 ****
+ /* Set "v:folddashes" to a string of "level" dashes. */
+ /* Set "v:foldlevel" to "level". */
+ level = foldinfo->fi_level;
+! if (level > 50)
+! level = 50;
+ vim_memset(dashes, '-', (size_t)level);
+ dashes[level] = NUL;
+ set_vim_var_string(VV_FOLDDASHES, dashes, -1);
+--- 1944,1951 ----
+ /* Set "v:folddashes" to a string of "level" dashes. */
+ /* Set "v:foldlevel" to "level". */
+ level = foldinfo->fi_level;
+! if (level > (int)sizeof(dashes) - 1)
+! level = (int)sizeof(dashes) - 1;
+ vim_memset(dashes, '-', (size_t)level);
+ dashes[level] = NUL;
+ set_vim_var_string(VV_FOLDDASHES, dashes, -1);
+*** ../vim-7.2.277/src/version.c 2009-11-03 16:22:59.000000000 +0100
+--- src/version.c 2009-11-03 16:29:08.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 278,
+ /**/
+
+--
+BRIDGEKEEPER: What is the air-speed velocity of an unladen swallow?
+ARTHUR: What do you mean? An African or European swallow?
+BRIDGEKEEPER: Er ... I don't know that ... Aaaaarrrrrrggghhh!
+ BRIDGEKEEPER is cast into the gorge.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.279
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.279
+Problem: Invalid memory read with visual mode "r". (Dominique Pelle)
+Solution: Make sure the cursor position is valid. Don't check the cursor
+ position but the position being used. And make sure we get the
+ right line.
+Files: src/misc2.c, src/ops.c
+
+
+*** ../vim-7.2.278/src/misc2.c 2009-05-16 21:06:36.000000000 +0200
+--- src/misc2.c 2009-11-03 16:43:10.000000000 +0100
+***************
+*** 156,162 ****
+ || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL)
+ #endif
+ ;
+! line = ml_get_curline();
+
+ if (wcol >= MAXCOL)
+ {
+--- 156,162 ----
+ || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL)
+ #endif
+ ;
+! line = ml_get_buf(curbuf, pos->lnum, FALSE);
+
+ if (wcol >= MAXCOL)
+ {
+***************
+*** 332,340 ****
+ #endif
+
+ #ifdef FEAT_MBYTE
+! /* prevent cursor from moving on the trail byte */
+ if (has_mbyte)
+! mb_adjust_cursor();
+ #endif
+
+ if (col < wcol)
+--- 332,340 ----
+ #endif
+
+ #ifdef FEAT_MBYTE
+! /* prevent from moving onto a trail byte */
+ if (has_mbyte)
+! mb_adjustpos(pos);
+ #endif
+
+ if (col < wcol)
+*** ../vim-7.2.278/src/ops.c 2009-09-30 15:15:33.000000000 +0200
+--- src/ops.c 2009-11-03 15:18:50.000000000 +0100
+***************
+*** 2020,2025 ****
+--- 2020,2026 ----
+ bd.is_MAX = (curwin->w_curswant == MAXCOL);
+ for ( ; curwin->w_cursor.lnum <= oap->end.lnum; ++curwin->w_cursor.lnum)
+ {
++ curwin->w_cursor.col = 0; /* make sure cursor position is valid */
+ block_prep(oap, &bd, curwin->w_cursor.lnum, TRUE);
+ if (bd.textlen == 0 && (!virtual_op || bd.is_MAX))
+ continue; /* nothing to replace */
+***************
+*** 2035,2040 ****
+--- 2036,2042 ----
+ {
+ pos_T vpos;
+
++ vpos.lnum = curwin->w_cursor.lnum;
+ getvpos(&vpos, oap->start_vcol);
+ bd.startspaces += vpos.coladd;
+ n = bd.startspaces;
+***************
+*** 2693,2703 ****
+ * initial coladd offset as part of "startspaces" */
+ if (bd.is_short)
+ {
+! linenr_T lnum = curwin->w_cursor.lnum;
+!
+! curwin->w_cursor.lnum = linenr;
+ (void)getvpos(&vpos, oap->start_vcol);
+- curwin->w_cursor.lnum = lnum;
+ }
+ else
+ vpos.coladd = 0;
+--- 2695,2702 ----
+ * initial coladd offset as part of "startspaces" */
+ if (bd.is_short)
+ {
+! vpos.lnum = linenr;
+ (void)getvpos(&vpos, oap->start_vcol);
+ }
+ else
+ vpos.coladd = 0;
+*** ../vim-7.2.278/src/version.c 2009-11-03 16:29:48.000000000 +0100
+--- src/version.c 2009-11-03 16:41:53.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 279,
+ /**/
+
+--
+BEDEVERE: How do you know so much about swallows?
+ARTHUR: Well you have to know these things when you're a king, you know.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.280
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.280
+Problem: A redraw in a custom statusline with %! may cause a crash.
+ (Yukihiro Nakadaira)
+Solution: Make a copy of 'statusline'. Also fix typo in function name
+ redraw_custum_statusline. (party by Dominique Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.279/src/screen.c 2009-07-29 16:13:35.000000000 +0200
+--- src/screen.c 2009-11-03 17:13:16.000000000 +0100
+***************
+*** 132,138 ****
+ static void draw_vsep_win __ARGS((win_T *wp, int row));
+ #endif
+ #ifdef FEAT_STL_OPT
+! static void redraw_custum_statusline __ARGS((win_T *wp));
+ #endif
+ #ifdef FEAT_SEARCH_EXTRA
+ #define SEARCH_HL_PRIORITY 0
+--- 132,138 ----
+ static void draw_vsep_win __ARGS((win_T *wp, int row));
+ #endif
+ #ifdef FEAT_STL_OPT
+! static void redraw_custom_statusline __ARGS((win_T *wp));
+ #endif
+ #ifdef FEAT_SEARCH_EXTRA
+ #define SEARCH_HL_PRIORITY 0
+***************
+*** 5772,5778 ****
+ else if (*p_stl != NUL || *wp->w_p_stl != NUL)
+ {
+ /* redraw custom status line */
+! redraw_custum_statusline(wp);
+ }
+ #endif
+ else
+--- 5794,5800 ----
+ else if (*p_stl != NUL || *wp->w_p_stl != NUL)
+ {
+ /* redraw custom status line */
+! redraw_custom_statusline(wp);
+ }
+ #endif
+ else
+***************
+*** 5897,5914 ****
+ * errors encountered.
+ */
+ static void
+! redraw_custum_statusline(wp)
+ win_T *wp;
+ {
+! int save_called_emsg = called_emsg;
+
+ called_emsg = FALSE;
+ win_redr_custom(wp, FALSE);
+ if (called_emsg)
+ set_string_option_direct((char_u *)"statusline", -1,
+ (char_u *)"", OPT_FREE | (*wp->w_p_stl != NUL
+ ? OPT_LOCAL : OPT_GLOBAL), SID_ERROR);
+ called_emsg |= save_called_emsg;
+ }
+ #endif
+
+--- 5919,5949 ----
+ * errors encountered.
+ */
+ static void
+! redraw_custom_statusline(wp)
+ win_T *wp;
+ {
+! static int entered = FALSE;
+! int save_called_emsg = called_emsg;
+!
+! /* When called recursively return. This can happen when the statusline
+! * contains an expression that triggers a redraw. */
+! if (entered)
+! return;
+! entered = TRUE;
+
+ called_emsg = FALSE;
+ win_redr_custom(wp, FALSE);
+ if (called_emsg)
++ {
++ /* When there is an error disable the statusline, otherwise the
++ * display is messed up with errors and a redraw triggers the problem
++ * again and again. */
+ set_string_option_direct((char_u *)"statusline", -1,
+ (char_u *)"", OPT_FREE | (*wp->w_p_stl != NUL
+ ? OPT_LOCAL : OPT_GLOBAL), SID_ERROR);
++ }
+ called_emsg |= save_called_emsg;
++ entered = FALSE;
+ }
+ #endif
+
+***************
+*** 6016,6021 ****
+--- 6051,6057 ----
+ int len;
+ int fillchar;
+ char_u buf[MAXPATHL];
++ char_u *stl;
+ char_u *p;
+ struct stl_hlrec hltab[STL_MAX_ITEM];
+ struct stl_hlrec tabtab[STL_MAX_ITEM];
+***************
+*** 6025,6031 ****
+ if (wp == NULL)
+ {
+ /* Use 'tabline'. Always at the first line of the screen. */
+! p = p_tal;
+ row = 0;
+ fillchar = ' ';
+ attr = hl_attr(HLF_TPF);
+--- 6061,6067 ----
+ if (wp == NULL)
+ {
+ /* Use 'tabline'. Always at the first line of the screen. */
+! stl = p_tal;
+ row = 0;
+ fillchar = ' ';
+ attr = hl_attr(HLF_TPF);
+***************
+*** 6042,6058 ****
+
+ if (draw_ruler)
+ {
+! p = p_ruf;
+ /* advance past any leading group spec - implicit in ru_col */
+! if (*p == '%')
+ {
+! if (*++p == '-')
+! p++;
+! if (atoi((char *) p))
+! while (VIM_ISDIGIT(*p))
+! p++;
+! if (*p++ != '(')
+! p = p_ruf;
+ }
+ #ifdef FEAT_VERTSPLIT
+ col = ru_col - (Columns - W_WIDTH(wp));
+--- 6078,6094 ----
+
+ if (draw_ruler)
+ {
+! stl = p_ruf;
+ /* advance past any leading group spec - implicit in ru_col */
+! if (*stl == '%')
+ {
+! if (*++stl == '-')
+! stl++;
+! if (atoi((char *)stl))
+! while (VIM_ISDIGIT(*stl))
+! stl++;
+! if (*stl++ != '(')
+! stl = p_ruf;
+ }
+ #ifdef FEAT_VERTSPLIT
+ col = ru_col - (Columns - W_WIDTH(wp));
+***************
+*** 6081,6089 ****
+ else
+ {
+ if (*wp->w_p_stl != NUL)
+! p = wp->w_p_stl;
+ else
+! p = p_stl;
+ # ifdef FEAT_EVAL
+ use_sandbox = was_set_insecurely((char_u *)"statusline",
+ *wp->w_p_stl == NUL ? 0 : OPT_LOCAL);
+--- 6117,6125 ----
+ else
+ {
+ if (*wp->w_p_stl != NUL)
+! stl = wp->w_p_stl;
+ else
+! stl = p_stl;
+ # ifdef FEAT_EVAL
+ use_sandbox = was_set_insecurely((char_u *)"statusline",
+ *wp->w_p_stl == NUL ? 0 : OPT_LOCAL);
+***************
+*** 6098,6107 ****
+ if (maxwidth <= 0)
+ return;
+
+ width = build_stl_str_hl(wp == NULL ? curwin : wp,
+ buf, sizeof(buf),
+! p, use_sandbox,
+ fillchar, maxwidth, hltab, tabtab);
+ len = (int)STRLEN(buf);
+
+ while (width < maxwidth && len < (int)sizeof(buf) - 1)
+--- 6134,6147 ----
+ if (maxwidth <= 0)
+ return;
+
++ /* Make a copy, because the statusline may include a function call that
++ * might change the option value and free the memory. */
++ stl = vim_strsave(stl);
+ width = build_stl_str_hl(wp == NULL ? curwin : wp,
+ buf, sizeof(buf),
+! stl, use_sandbox,
+ fillchar, maxwidth, hltab, tabtab);
++ vim_free(stl);
+ len = (int)STRLEN(buf);
+
+ while (width < maxwidth && len < (int)sizeof(buf) - 1)
+***************
+*** 9465,9471 ****
+ #if defined(FEAT_STL_OPT) && defined(FEAT_WINDOWS)
+ if ((*p_stl != NUL || *curwin->w_p_stl != NUL) && curwin->w_status_height)
+ {
+! redraw_custum_statusline(curwin);
+ }
+ else
+ #endif
+--- 9505,9511 ----
+ #if defined(FEAT_STL_OPT) && defined(FEAT_WINDOWS)
+ if ((*p_stl != NUL || *curwin->w_p_stl != NUL) && curwin->w_status_height)
+ {
+! redraw_custom_statusline(curwin);
+ }
+ else
+ #endif
+*** ../vim-7.2.279/src/version.c 2009-11-03 16:44:04.000000000 +0100
+--- src/version.c 2009-11-03 17:15:35.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 280,
+ /**/
+
+--
+Every exit is an entrance into something else.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.281
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.281
+Problem: 'cursorcolumn' highlighting is wrong in diff mode.
+Solution: Adjust the column computation. (Lech Lorens)
+Files: src/screen.c
+
+
+*** ../vim-7.2.280/src/screen.c 2009-11-03 17:20:18.000000000 +0100
+--- src/screen.c 2009-11-03 17:13:16.000000000 +0100
+***************
+*** 3008,3018 ****
+ mb_ptr_adv(ptr);
+ }
+
+! #ifdef FEAT_VIRTUALEDIT
+! /* When 'virtualedit' is set the end of the line may be before the
+! * start of the displayed part. */
+! if (vcol < v && *ptr == NUL && virtual_active())
+ vcol = v;
+ #endif
+
+ /* Handle a character that's not completely on the screen: Put ptr at
+--- 3008,3040 ----
+ mb_ptr_adv(ptr);
+ }
+
+! #if defined(FEAT_SYN_HL) || defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
+! /* When:
+! * - 'cuc' is set, or
+! * - 'virtualedit' is set, or
+! * - the visual mode is active,
+! * the end of the line may be before the start of the displayed part.
+! */
+! if (vcol < v && (
+! # ifdef FEAT_SYN_HL
+! wp->w_p_cuc
+! # if defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
+! ||
+! # endif
+! # endif
+! # ifdef FEAT_VIRTUALEDIT
+! virtual_active()
+! # ifdef FEAT_VISUAL
+! ||
+! # endif
+! # endif
+! # ifdef FEAT_VISUAL
+! (VIsual_active && wp->w_buffer == curwin->w_buffer)
+! # endif
+! ))
+! {
+ vcol = v;
++ }
+ #endif
+
+ /* Handle a character that's not completely on the screen: Put ptr at
+*** ../vim-7.2.280/src/version.c 2009-11-03 17:20:18.000000000 +0100
+--- src/version.c 2009-11-03 17:34:54.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 281,
+ /**/
+
+--
+Every person is responsible for the choices he makes.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.282
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.282
+Problem: A fold can't be closed.
+Solution: Initialize fd_small to MAYBE. (Lech Lorens)
+Files: src/fold.c
+
+
+*** ../vim-7.2.281/src/fold.c 2009-11-03 16:29:48.000000000 +0100
+--- src/fold.c 2009-11-03 17:41:50.000000000 +0100
+***************
+*** 2851,2856 ****
+--- 2851,2858 ----
+ fp[1].fd_top = bot + 1;
+ fp[1].fd_len = fp->fd_len - (fp[1].fd_top - fp->fd_top);
+ fp[1].fd_flags = fp->fd_flags;
++ fp[1].fd_small = MAYBE;
++ fp->fd_small = MAYBE;
+
+ /* Move nested folds below bot to new fold. There can't be
+ * any between top and bot, they have been removed by the caller. */
+*** ../vim-7.2.281/src/version.c 2009-11-03 17:36:09.000000000 +0100
+--- src/version.c 2009-11-03 17:59:12.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 282,
+ /**/
+
+--
+You can be stopped by the police for biking over 65 miles per hour.
+You are not allowed to walk across a street on your hands.
+ [real standing laws in Connecticut, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.283
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.283
+Problem: Changing font while the window is maximized doesn't keep the
+ window maximized.
+Solution: Recompute number of lines and columns after changing font. (James
+ Vega)
+Files: src/gui_gtk_x11.c
+
+
+*** ../vim-7.2.282/src/gui_gtk_x11.c 2009-09-23 18:14:13.000000000 +0200
+--- src/gui_gtk_x11.c 2009-11-03 17:56:27.000000000 +0100
+***************
+*** 5267,5274 ****
+ # endif
+ #endif /* !HAVE_GTK2 */
+
+! /* Preserve the logical dimensions of the screen. */
+! update_window_manager_hints(0, 0);
+
+ return OK;
+ }
+--- 5267,5290 ----
+ # endif
+ #endif /* !HAVE_GTK2 */
+
+! #ifdef HAVE_GTK2
+! if (gui_mch_maximized())
+! {
+! int w, h;
+!
+! /* Update lines and columns in accordance with the new font, keep the
+! * window maximized. */
+! gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h);
+! w -= get_menu_tool_width();
+! h -= get_menu_tool_height();
+! gui_resize_shell(w, h);
+! }
+! else
+! #endif
+! {
+! /* Preserve the logical dimensions of the screen. */
+! update_window_manager_hints(0, 0);
+! }
+
+ return OK;
+ }
+*** ../vim-7.2.282/src/version.c 2009-11-03 18:04:26.000000000 +0100
+--- src/version.c 2009-11-03 18:11:53.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 283,
+ /**/
+
+--
+If an elephant is left tied to a parking meter, the parking fee has to be paid
+just as it would for a vehicle.
+ [real standing law in Florida, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.284
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.284
+Problem: When editing the same buffer in two windows, one with folding,
+ display may be wrong after changes.
+Solution: Call set_topline() to take care of side effects. (Lech Lorens)
+Files: src/misc1.c
+
+
+*** ../vim-7.2.283/src/misc1.c 2009-07-22 11:03:38.000000000 +0200
+--- src/misc1.c 2009-11-03 18:38:15.000000000 +0100
+***************
+*** 2886,2891 ****
+--- 2886,2898 ----
+ }
+ #endif
+ }
++
++ #ifdef FEAT_FOLDING
++ /* Take care of side effects for setting w_topline when folds have
++ * changed. Esp. when the buffer was changed in another window. */
++ if (hasAnyFolding(wp))
++ set_topline(wp, wp->w_topline);
++ #endif
+ }
+ }
+
+*** ../vim-7.2.283/src/version.c 2009-11-03 18:13:36.000000000 +0100
+--- src/version.c 2009-11-03 18:44:12.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 284,
+ /**/
+
+--
+Men may not be seen publicly in any kind of strapless gown.
+ [real standing law in Florida, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///