Merge remote branch 'fedora/f19' into rhel-7.0

This commit is contained in:
Daniel Mach 2013-04-18 07:20:31 -04:00
commit e6cf33afbc
83 changed files with 13504 additions and 1 deletions

69
7.3.823 Normal file
View File

@ -0,0 +1,69 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.823
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.3.823 (after 7.3.821)
Problem: Building with Cygwin: '-lsupc++' is not needed.
Solution: Remove it. (Ken Takata)
Files: src/Make_cyg.mak
*** ../vim-7.3.822/src/Make_cyg.mak 2013-02-16 18:16:11.000000000 +0100
--- src/Make_cyg.mak 2013-02-17 15:04:05.000000000 +0100
***************
*** 1,6 ****
#
# Makefile for VIM on Win32, using Cygnus gcc
! # Last updated by Dan Sharp. Last Change: 2012 Jun 30
#
# Also read INSTALLpc.txt!
#
--- 1,6 ----
#
# Makefile for VIM on Win32, using Cygnus gcc
! # Last updated by Dan Sharp. Last Change: 2013 Feb 17
#
# Also read INSTALLpc.txt!
#
***************
*** 487,493 ****
EXTRA_OBJS += $(OUTDIR)/if_ole.o
EXTRA_LIBS += -loleaut32
ifeq (yes, $(STATIC_STDCPLUS))
! EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -lsupc++ -Wl,-Bdynamic
else
EXTRA_LIBS += -lstdc++
endif
--- 487,493 ----
EXTRA_OBJS += $(OUTDIR)/if_ole.o
EXTRA_LIBS += -loleaut32
ifeq (yes, $(STATIC_STDCPLUS))
! EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
else
EXTRA_LIBS += -lstdc++
endif
*** ../vim-7.3.822/src/version.c 2013-02-17 15:45:34.000000000 +0100
--- src/version.c 2013-02-20 13:33:42.000000000 +0100
***************
*** 727,728 ****
--- 727,730 ----
{ /* Add new patch number below this line */
+ /**/
+ 823,
/**/
--
ARTHUR: Now stand aside worthy adversary.
BLACK KNIGHT: (Glancing at his shoulder) 'Tis but a scratch.
ARTHUR: A scratch? Your arm's off.
"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/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

49
7.3.824 Normal file
View File

@ -0,0 +1,49 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.824
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.3.824
Problem: Can redefine builtin functions. (ZyX)
Solution: Disallow adding a function to g:.
Files: src/eval.c
*** ../vim-7.3.823/src/eval.c 2013-02-14 22:11:31.000000000 +0100
--- src/eval.c 2013-02-20 15:17:50.000000000 +0100
***************
*** 21164,21169 ****
--- 21164,21172 ----
if (arg[j] != NUL)
emsg_funcname((char *)e_invarg2, arg);
}
+ /* Disallow using the g: dict. */
+ if (fudi.fd_dict != NULL && fudi.fd_dict->dv_scope == VAR_DEF_SCOPE)
+ EMSG(_("E862: Cannot use g: here"));
}
/*
*** ../vim-7.3.823/src/version.c 2013-02-20 13:34:14.000000000 +0100
--- src/version.c 2013-02-20 14:11:01.000000000 +0100
***************
*** 727,728 ****
--- 727,730 ----
{ /* Add new patch number below this line */
+ /**/
+ 824,
/**/
--
ARTHUR: You are indeed brave Sir knight, but the fight is mine.
BLACK KNIGHT: Had enough?
ARTHUR: You stupid bastard. You havn't got any arms left.
"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/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

125
7.3.825 Normal file
View File

@ -0,0 +1,125 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.825
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.3.825
Problem: With Python errors are not always clear.
Solution: Print the stack trace, unless :silent is used. (ZyX)
Files: src/if_python3.c, src/if_python.c
*** ../vim-7.3.824/src/if_python3.c 2013-02-13 14:17:00.000000000 +0100
--- src/if_python3.c 2013-02-20 15:26:03.000000000 +0100
***************
*** 122,127 ****
--- 122,128 ----
# define PyDict_SetItemString py3_PyDict_SetItemString
# define PyErr_BadArgument py3_PyErr_BadArgument
# define PyErr_Clear py3_PyErr_Clear
+ # define PyErr_PrintEx py3_PyErr_PrintEx
# define PyErr_NoMemory py3_PyErr_NoMemory
# define PyErr_Occurred py3_PyErr_Occurred
# define PyErr_SetNone py3_PyErr_SetNone
***************
*** 279,284 ****
--- 280,286 ----
static void* (*py3_PyMem_Malloc)(size_t);
static int (*py3_Py_IsInitialized)(void);
static void (*py3_PyErr_Clear)(void);
+ static void (*py3_PyErr_PrintEx)(int);
static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *);
static iternextfunc py3__PyObject_NextNotImplemented;
static PyObject* py3__Py_NoneStruct;
***************
*** 403,408 ****
--- 405,411 ----
{"_Py_FalseStruct", (PYTHON_PROC*)&py3__Py_FalseStruct},
{"_Py_TrueStruct", (PYTHON_PROC*)&py3__Py_TrueStruct},
{"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear},
+ {"PyErr_PrintEx", (PYTHON_PROC*)&py3_PyErr_PrintEx},
{"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init},
{"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject},
{"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab},
***************
*** 842,848 ****
--- 845,855 ----
r = PyRun_String(PyBytes_AsString(cmdbytes), Py_eval_input,
globals, globals);
if (r == NULL)
+ {
+ if (PyErr_Occurred() && !msg_silent)
+ PyErr_PrintEx(0);
EMSG(_("E860: Eval did not return a valid python 3 object"));
+ }
else
{
if (ConvertFromPyObject(r, rettv) == -1)
*** ../vim-7.3.824/src/if_python.c 2013-02-13 14:17:00.000000000 +0100
--- src/if_python.c 2013-02-20 15:26:03.000000000 +0100
***************
*** 148,153 ****
--- 148,154 ----
# define PyDict_SetItemString dll_PyDict_SetItemString
# define PyErr_BadArgument dll_PyErr_BadArgument
# define PyErr_Clear dll_PyErr_Clear
+ # define PyErr_PrintEx dll_PyErr_PrintEx
# define PyErr_NoMemory dll_PyErr_NoMemory
# define PyErr_Occurred dll_PyErr_Occurred
# define PyErr_SetNone dll_PyErr_SetNone
***************
*** 251,256 ****
--- 252,258 ----
static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
static int(*dll_PyErr_BadArgument)(void);
static void(*dll_PyErr_Clear)(void);
+ static void(*dll_PyErr_PrintEx)(int);
static PyObject*(*dll_PyErr_NoMemory)(void);
static PyObject*(*dll_PyErr_Occurred)(void);
static void(*dll_PyErr_SetNone)(PyObject *);
***************
*** 380,385 ****
--- 382,388 ----
{"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString},
{"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument},
{"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear},
+ {"PyErr_PrintEx", (PYTHON_PROC*)&dll_PyErr_PrintEx},
{"PyErr_NoMemory", (PYTHON_PROC*)&dll_PyErr_NoMemory},
{"PyErr_Occurred", (PYTHON_PROC*)&dll_PyErr_Occurred},
{"PyErr_SetNone", (PYTHON_PROC*)&dll_PyErr_SetNone},
***************
*** 856,862 ****
--- 859,869 ----
r = PyRun_String((char *)(cmd), Py_eval_input, globals, globals);
if (r == NULL)
+ {
+ if (PyErr_Occurred() && !msg_silent)
+ PyErr_PrintEx(0);
EMSG(_("E858: Eval did not return a valid python object"));
+ }
else
{
if (ConvertFromPyObject(r, rettv) == -1)
*** ../vim-7.3.824/src/version.c 2013-02-20 15:19:38.000000000 +0100
--- src/version.c 2013-02-20 15:27:20.000000000 +0100
***************
*** 727,728 ****
--- 727,730 ----
{ /* Add new patch number below this line */
+ /**/
+ 825,
/**/
--
ARTHUR: What are you going to do. bleed on me?
"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/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

155
7.3.826 Normal file
View File

@ -0,0 +1,155 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.826
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.3.826
Problem: List of features in :version output is hard to read.
Solution: Make columns. (Nazri Ramliy)
Files: src/version.c
*** ../vim-7.3.825/src/version.c 2013-02-20 16:09:35.000000000 +0100
--- src/version.c 2013-02-20 16:27:44.000000000 +0100
***************
*** 34,39 ****
--- 34,42 ----
# if (defined(VMS) && defined(VAXC)) || defined(PROTO)
char longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__)
+ sizeof(__TIME__) + 3];
+
+ static void list_features __ARGS((void));
+
void
make_version()
{
***************
*** 2435,2440 ****
--- 2440,2513 ----
}
}
+ /*
+ * List all features aligned in columns, dictionary style.
+ */
+ static void
+ list_features()
+ {
+ int i;
+ int ncol;
+ int nrow;
+ int nfeat = 0;
+ int width = 0;
+
+ /* Find the length of the longest feature name, use that + 1 as the column
+ * width */
+ for (i = 0; features[i] != NULL; ++i)
+ {
+ int l = STRLEN(features[i]);
+
+ if (l > width)
+ width = l;
+ ++nfeat;
+ }
+ width += 1;
+
+ if (Columns < width)
+ {
+ /* Not enough screen columns - show one per line */
+ for (i = 0; features[i] != NULL; ++i)
+ {
+ version_msg(features[i]);
+ if (msg_col > 0)
+ msg_putchar('\n');
+ }
+ return;
+ }
+
+ ncol = (int) Columns / width;
+ /* The rightmost column doesn't need a separator.
+ * Sacrifice it to fit in one more column if possible. */
+ if (Columns % width == width - 1)
+ ncol++;
+
+ nrow = nfeat / ncol + (nfeat % ncol ? 1 : 0);
+
+ for (i = 0; !got_int && i < nrow * ncol; ++i)
+ {
+ int idx = (i / ncol) + (i % ncol) * nrow;
+
+ if (idx < nfeat)
+ {
+ int last_col = (i + 1) % ncol == 0;
+
+ msg_puts((char_u *)features[idx]);
+ if (last_col)
+ {
+ if (msg_col > 0)
+ msg_putchar('\n');
+ }
+ else
+ {
+ while (msg_col % width)
+ msg_putchar(' ');
+ }
+ }
+ else
+ msg_putchar('\n');
+ }
+ }
void
list_version()
{
***************
*** 2632,2646 ****
#endif
version_msg(_(" Features included (+) or not (-):\n"));
! /* print all the features */
! for (i = 0; features[i] != NULL; ++i)
! {
! version_msg(features[i]);
! if (msg_col > 0)
! version_msg(" ");
! }
- version_msg("\n");
#ifdef SYS_VIMRC_FILE
version_msg(_(" system vimrc file: \""));
version_msg(SYS_VIMRC_FILE);
--- 2705,2712 ----
#endif
version_msg(_(" Features included (+) or not (-):\n"));
! list_features();
#ifdef SYS_VIMRC_FILE
version_msg(_(" system vimrc file: \""));
version_msg(SYS_VIMRC_FILE);
*** ../vim-7.3.825/src/version.c 2013-02-20 16:09:35.000000000 +0100
--- src/version.c 2013-02-20 16:27:44.000000000 +0100
***************
*** 727,728 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 826,
/**/
--
Mrs Abbott: I'm a paediatrician.
Basil: Feet?
Mrs Abbott: Children.
Sybil: Oh, Basil!
Basil: Well, children have feet, don't they? That's how they move
around, my dear. You must take a look next time, it's most
interesting. (Fawlty Towers)
/// 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 ///

94
7.3.827 Normal file
View File

@ -0,0 +1,94 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.827
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.3.827 (after 7.3.825)
Problem: Python tests fail.
Solution: Adjust the output for the stack trace.
Files: src/testdir/test86.in, src/testdir/test86.ok,
src/testdir/test87.ok
*** ../vim-7.3.826/src/testdir/test86.in 2013-02-13 14:17:00.000000000 +0100
--- src/testdir/test86.in 2013-02-17 21:16:13.000000000 +0100
***************
*** 1,5 ****
--- 1,11 ----
Tests for various python features. vim: set ft=vim :
+ NOTE: This will cause errors when run under valgrind.
+ This would require recompiling Python with:
+ ./configure --without-pymalloc
+ See http://svn.python.org/view/python/trunk/Misc/README.valgrind?view=markup
+
+
STARTTEST
:so small.vim
:if !has('python') | e! test.ok | wq! test.out | endif
*** ../vim-7.3.826/src/testdir/test86.ok 2013-02-13 14:17:00.000000000 +0100
--- src/testdir/test86.ok 2013-02-20 16:33:20.000000000 +0100
***************
*** 61,67 ****
0.0
"\0": Vim(let):E859:
{"\0": 1}: Vim(let):E859:
! undefined_name: Vim(let):E858:
vim: Vim(let):E859:
[1]
[1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1]
--- 61,67 ----
0.0
"\0": Vim(let):E859:
{"\0": 1}: Vim(let):E859:
! undefined_name: Vim(let):Trace
vim: Vim(let):E859:
[1]
[1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1]
*** ../vim-7.3.826/src/testdir/test87.ok 2013-02-13 14:17:00.000000000 +0100
--- src/testdir/test87.ok 2013-02-20 16:33:31.000000000 +0100
***************
*** 61,67 ****
0.0
"\0": Vim(let):E861:
{"\0": 1}: Vim(let):E861:
! undefined_name: Vim(let):E860:
vim: Vim(let):E861:
[1]
[1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1]
--- 61,67 ----
0.0
"\0": Vim(let):E861:
{"\0": 1}: Vim(let):E861:
! undefined_name: Vim(let):Trace
vim: Vim(let):E861:
[1]
[1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1]
*** ../vim-7.3.826/src/version.c 2013-02-20 16:46:52.000000000 +0100
--- src/version.c 2013-02-20 16:48:39.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 827,
/**/
--
Any resemblance between the above views and those of my employer, my terminal,
or the view out my window are purely coincidental. Any resemblance between
the above and my own views is non-deterministic. The question of the
existence of views in the absence of anyone to hold them is left as an
exercise for the reader. The question of the existence of the reader is left
as an exercise for the second god coefficient. (A discussion of
non-orthogonal, non-integral polytheism is beyond the scope of this article.)
(Ralph Jennings)
/// 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 ///

131
7.3.828 Normal file
View File

@ -0,0 +1,131 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.828
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.3.828
Problem: Mappings are not aware of wildmenu mode.
Solution: Add wildmenumode(). (Christian Brabandt)
Files: src/eval.c, runtime/doc/eval.txt
*** ../vim-7.3.827/src/eval.c 2013-02-20 15:19:38.000000000 +0100
--- src/eval.c 2013-02-20 17:45:19.000000000 +0100
***************
*** 751,756 ****
--- 751,757 ----
static void f_values __ARGS((typval_T *argvars, typval_T *rettv));
static void f_virtcol __ARGS((typval_T *argvars, typval_T *rettv));
static void f_visualmode __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_wildmenumode __ARGS((typval_T *argvars, typval_T *rettv));
static void f_winbufnr __ARGS((typval_T *argvars, typval_T *rettv));
static void f_wincol __ARGS((typval_T *argvars, typval_T *rettv));
static void f_winheight __ARGS((typval_T *argvars, typval_T *rettv));
***************
*** 8121,8126 ****
--- 8122,8128 ----
{"values", 1, 1, f_values},
{"virtcol", 1, 1, f_virtcol},
{"visualmode", 0, 1, f_visualmode},
+ {"wildmenumode", 0, 0, f_wildmenumode},
{"winbufnr", 1, 1, f_winbufnr},
{"wincol", 0, 0, f_wincol},
{"winheight", 1, 1, f_winheight},
***************
*** 18576,18581 ****
--- 18578,18597 ----
#endif
}
+ /*
+ * "wildmenumode()" function
+ */
+ static void
+ f_wildmenumode(argvars, rettv)
+ typval_T *argvars UNUSED;
+ typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_WILDMENU
+ if (wild_menu_showing)
+ rettv->vval.v_number = 1;
+ #endif
+ }
+
/*
* "winbufnr(nr)" function
*/
*** ../vim-7.3.827/runtime/doc/eval.txt 2013-02-13 17:34:59.000000000 +0100
--- runtime/doc/eval.txt 2013-02-20 17:43:23.000000000 +0100
***************
*** 1974,1986 ****
toupper( {expr}) String the String {expr} switched to uppercase
tr( {src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr}
to chars in {tostr}
! trunc( {expr} Float truncate Float {expr}
type( {name}) Number type of variable {name}
undofile( {name}) String undo file name for {name}
undotree() List undo file tree
values( {dict}) List values in {dict}
virtcol( {expr}) Number screen column of cursor or mark
visualmode( [expr]) String last visual mode used
winbufnr( {nr}) Number buffer number of window {nr}
wincol() Number window column of the cursor
winheight( {nr}) Number height of window {nr}
--- 1986,1999 ----
toupper( {expr}) String the String {expr} switched to uppercase
tr( {src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr}
to chars in {tostr}
! trunc( {expr}) Float truncate Float {expr}
type( {name}) Number type of variable {name}
undofile( {name}) String undo file name for {name}
undotree() List undo file tree
values( {dict}) List values in {dict}
virtcol( {expr}) Number screen column of cursor or mark
visualmode( [expr]) String last visual mode used
+ wildmenumode() Number whether 'wildmenu' mode is active
winbufnr( {nr}) Number buffer number of window {nr}
wincol() Number window column of the cursor
winheight( {nr}) Number height of window {nr}
***************
*** 6121,6126 ****
--- 6163,6180 ----
Dictionary or Float is not a Number or String, thus does not
cause the mode to be cleared.
+ wildmenumode() *wildmenumode()*
+ Returns non-zero when the wildmenu is active and zero
+ otherwise. See 'wildmenu' and 'wildmode'.
+ This can be used in mappings to handle the 'wildcharm' option
+ gracefully. (Makes only sense with |mapmode-c| mappings).
+
+ For example to make <c-j> work like <down> in wildmode, use: >
+ :cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"
+ <
+ (Note, this needs the 'wildcharm' option set appropriately).
+
+
*winbufnr()*
winbufnr({nr}) The result is a Number, which is the number of the buffer
associated with window {nr}. When {nr} is zero, the number of
*** ../vim-7.3.827/src/version.c 2013-02-20 16:54:24.000000000 +0100
--- src/version.c 2013-02-20 17:41:17.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 828,
/**/
--
"Beware of bugs in the above code; I have only proved
it correct, not tried it." -- Donald Knuth
/// 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 ///

83
7.3.829 Normal file
View File

@ -0,0 +1,83 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.829
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.3.829
Problem: When compiled with the +rightleft feature 'showmatch' also shows a
match for the opening paren. When 'revins' is set the screen may
scroll.
Solution: Only check the opening paren when the +rightleft feature was
enabled. Do not show a match that is not visible. (partly by
Christian Brabandt)
Files: src/search.c
*** ../vim-7.3.828/src/search.c 2013-01-23 16:43:07.000000000 +0100
--- src/search.c 2013-02-20 18:33:33.000000000 +0100
***************
*** 2431,2442 ****
/* 'matchpairs' is "x:y,x:y" */
for (p = curbuf->b_p_mps; *p != NUL; ++p)
{
- if (PTR2CHAR(p) == c
#ifdef FEAT_RIGHTLEFT
! && (curwin->w_p_rl ^ p_ri)
! #endif
! )
break;
p += MB_PTR2LEN(p) + 1;
if (PTR2CHAR(p) == c
#ifdef FEAT_RIGHTLEFT
--- 2431,2440 ----
/* 'matchpairs' is "x:y,x:y" */
for (p = curbuf->b_p_mps; *p != NUL; ++p)
{
#ifdef FEAT_RIGHTLEFT
! if (PTR2CHAR(p) == c && (curwin->w_p_rl ^ p_ri))
break;
+ #endif
p += MB_PTR2LEN(p) + 1;
if (PTR2CHAR(p) == c
#ifdef FEAT_RIGHTLEFT
***************
*** 2451,2457 ****
if ((lpos = findmatch(NULL, NUL)) == NULL) /* no match, so beep */
vim_beep();
! else if (lpos->lnum >= curwin->w_topline)
{
if (!curwin->w_p_wrap)
getvcol(curwin, lpos, NULL, &vcol, NULL);
--- 2449,2455 ----
if ((lpos = findmatch(NULL, NUL)) == NULL) /* no match, so beep */
vim_beep();
! else if (lpos->lnum >= curwin->w_topline && lpos->lnum < curwin->w_botline)
{
if (!curwin->w_p_wrap)
getvcol(curwin, lpos, NULL, &vcol, NULL);
*** ../vim-7.3.828/src/version.c 2013-02-20 17:58:01.000000000 +0100
--- src/version.c 2013-02-20 18:35:12.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 829,
/**/
--
BLACK KNIGHT: The Black Knight always triumphs. Have at you!
ARTHUR takes his last leg off. The BLACK KNIGHT's body lands upright.
BLACK KNIGHT: All right, we'll call it a draw.
"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/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

88
7.3.830 Normal file
View File

@ -0,0 +1,88 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.830
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.3.830
Problem: :mksession confuses bytes, columns and characters when positioning
the cursor.
Solution: Use w_virtcol with "|" instead of w_cursor.col with "l".
Files: src/ex_docmd.c
*** ../vim-7.3.829/src/ex_docmd.c 2013-02-14 22:11:31.000000000 +0100
--- src/ex_docmd.c 2013-02-20 19:13:21.000000000 +0100
***************
*** 10829,10852 ****
{
if (fprintf(fd,
"let s:c = %ld - ((%ld * winwidth(0) + %ld) / %ld)",
! (long)wp->w_cursor.col,
! (long)(wp->w_cursor.col - wp->w_leftcol),
(long)wp->w_width / 2, (long)wp->w_width) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "if s:c > 0") == FAIL
|| fprintf(fd,
! " exe 'normal! 0' . s:c . 'lzs' . (%ld - s:c) . 'l'",
! (long)wp->w_cursor.col) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "else") == FAIL
! || fprintf(fd, " normal! 0%dl", wp->w_cursor.col) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "endif") == FAIL)
return FAIL;
}
else
{
! if (fprintf(fd, "normal! 0%dl", wp->w_cursor.col) < 0
|| put_eol(fd) == FAIL)
return FAIL;
}
--- 10829,10852 ----
{
if (fprintf(fd,
"let s:c = %ld - ((%ld * winwidth(0) + %ld) / %ld)",
! (long)wp->w_virtcol + 1,
! (long)(wp->w_virtcol - wp->w_leftcol),
(long)wp->w_width / 2, (long)wp->w_width) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "if s:c > 0") == FAIL
|| fprintf(fd,
! " exe 'normal! ' . s:c . '|zs' . %ld . '|'",
! (long)wp->w_virtcol + 1) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "else") == FAIL
! || fprintf(fd, " normal! %d|", wp->w_virtcol + 1) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "endif") == FAIL)
return FAIL;
}
else
{
! if (fprintf(fd, "normal! 0%d|", wp->w_virtcol + 1) < 0
|| put_eol(fd) == FAIL)
return FAIL;
}
*** ../vim-7.3.829/src/version.c 2013-02-20 18:39:07.000000000 +0100
--- src/version.c 2013-02-20 19:14:18.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 830,
/**/
--
Westheimer's Discovery:
A couple of months in the laboratory can
frequently save a couple of hours in the library.
/// 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 ///

609
7.3.831 Normal file
View File

@ -0,0 +1,609 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.831
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.3.831
Problem: Clumsy to handle the situation that a variable does not exist.
Solution: Add default value to getbufvar() et al. (Shougo Matsushita,
Hirohito Higashi)
Files: runtime/doc/eval.txt, src/eval.c src/testdir/test91.in,
src/testdir/test91.ok, src/testdir/Make_amiga.mak,
src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
src/testdir/Make_os2.mak, src/testdir/Make_vms.mms,
src/testdir/Makefile
*** ../vim-7.3.830/runtime/doc/eval.txt 2013-02-20 17:58:01.000000000 +0100
--- runtime/doc/eval.txt 2013-02-20 20:53:50.000000000 +0100
***************
*** 1761,1772 ****
foldtextresult( {lnum}) String text for closed fold at {lnum}
foreground( ) Number bring the Vim window to the foreground
function( {name}) Funcref reference to function {name}
! garbagecollect( [at_exit]) none free memory, breaking cyclic references
get( {list}, {idx} [, {def}]) any get item {idx} from {list} or {def}
get( {dict}, {key} [, {def}]) any get item {key} from {dict} or {def}
getbufline( {expr}, {lnum} [, {end}])
List lines {lnum} to {end} of buffer {expr}
! getbufvar( {expr}, {varname}) any variable {varname} in buffer {expr}
getchar( [expr]) Number get one character from the user
getcharmod( ) Number modifiers for the last typed character
getcmdline() String return the current command-line
--- 1772,1784 ----
foldtextresult( {lnum}) String text for closed fold at {lnum}
foreground( ) Number bring the Vim window to the foreground
function( {name}) Funcref reference to function {name}
! garbagecollect( [{atexit}]) none free memory, breaking cyclic references
get( {list}, {idx} [, {def}]) any get item {idx} from {list} or {def}
get( {dict}, {key} [, {def}]) any get item {key} from {dict} or {def}
getbufline( {expr}, {lnum} [, {end}])
List lines {lnum} to {end} of buffer {expr}
! getbufvar( {expr}, {varname} [, {def}])
! any variable {varname} in buffer {expr}
getchar( [expr]) Number get one character from the user
getcharmod( ) Number modifiers for the last typed character
getcmdline() String return the current command-line
***************
*** 1787,1798 ****
getqflist() List list of quickfix items
getreg( [{regname} [, 1]]) String contents of register
getregtype( [{regname}]) String type of register
! gettabvar( {nr}, {varname}) any variable {varname} in tab {nr}
! gettabwinvar( {tabnr}, {winnr}, {name})
any {name} in {winnr} in tab page {tabnr}
getwinposx() Number X coord in pixels of GUI Vim window
getwinposy() Number Y coord in pixels of GUI Vim window
! getwinvar( {nr}, {varname}) any variable {varname} in window {nr}
glob( {expr} [, {nosuf} [, {list}]])
any expand file wildcards in {expr}
globpath( {path}, {expr} [, {flag}])
--- 1799,1812 ----
getqflist() List list of quickfix items
getreg( [{regname} [, 1]]) String contents of register
getregtype( [{regname}]) String type of register
! gettabvar( {nr}, {varname} [, {def}])
! any variable {varname} in tab {nr} or {def}
! gettabwinvar( {tabnr}, {winnr}, {name} [, {def}])
any {name} in {winnr} in tab page {tabnr}
getwinposx() Number X coord in pixels of GUI Vim window
getwinposy() Number Y coord in pixels of GUI Vim window
! getwinvar( {nr}, {varname} [, {def}])
! any variable {varname} in window {nr}
glob( {expr} [, {nosuf} [, {list}]])
any expand file wildcards in {expr}
globpath( {path}, {expr} [, {flag}])
***************
*** 3131,3137 ****
Example: >
:let lines = getbufline(bufnr("myfile"), 1, "$")
! getbufvar({expr}, {varname}) *getbufvar()*
The result is the value of option or local buffer variable
{varname} in buffer {expr}. Note that the name without "b:"
must be used.
--- 3146,3152 ----
Example: >
:let lines = getbufline(bufnr("myfile"), 1, "$")
! getbufvar({expr}, {varname} [, {def}]) *getbufvar()*
The result is the value of option or local buffer variable
{varname} in buffer {expr}. Note that the name without "b:"
must be used.
***************
*** 3141,3148 ****
doesn't work for a global variable, window-local variable or
window-local option.
For the use of {expr}, see |bufname()| above.
! When the buffer or variable doesn't exist an empty string is
! returned, there is no error message.
Examples: >
:let bufmodified = getbufvar(1, "&mod")
:echo "todo myvar = " . getbufvar("todo", "myvar")
--- 3156,3163 ----
doesn't work for a global variable, window-local variable or
window-local option.
For the use of {expr}, see |bufname()| above.
! When the buffer or variable doesn't exist {def} or an empty
! string is returned, there is no error message.
Examples: >
:let bufmodified = getbufvar(1, "&mod")
:echo "todo myvar = " . getbufvar("todo", "myvar")
***************
*** 3414,3439 ****
<CTRL-V> is one character with value 0x16.
If {regname} is not specified, |v:register| is used.
! gettabvar({tabnr}, {varname}) *gettabvar()*
Get the value of a tab-local variable {varname} in tab page
{tabnr}. |t:var|
Tabs are numbered starting with one.
Note that the name without "t:" must be used.
! gettabwinvar({tabnr}, {winnr}, {varname}) *gettabwinvar()*
Get the value of window-local variable {varname} in window
{winnr} in tab page {tabnr}.
When {varname} starts with "&" get the value of a window-local
option.
Tabs are numbered starting with one. For the current tabpage
use |getwinvar()|.
When {winnr} is zero the current window is used.
This also works for a global option, buffer-local option and
window-local option, but it doesn't work for a global variable
or buffer-local variable.
! When {varname} is empty a dictionary with all window-local
! variables is returned.
! Note that {varname} must be the name without "w:".
Examples: >
:let list_is_on = gettabwinvar(1, 2, '&list')
:echo "myvar = " . gettabwinvar(3, 1, 'myvar')
--- 3434,3463 ----
<CTRL-V> is one character with value 0x16.
If {regname} is not specified, |v:register| is used.
! gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()*
Get the value of a tab-local variable {varname} in tab page
{tabnr}. |t:var|
Tabs are numbered starting with one.
Note that the name without "t:" must be used.
+ When the tab or variable doesn't exist {def} or an empty
+ string is returned, there is no error message.
! gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()*
Get the value of window-local variable {varname} in window
{winnr} in tab page {tabnr}.
When {varname} starts with "&" get the value of a window-local
option.
+ When {varname} is empty a dictionary with all window-local
+ variables is returned.
+ Note that {varname} must be the name without "w:".
Tabs are numbered starting with one. For the current tabpage
use |getwinvar()|.
When {winnr} is zero the current window is used.
This also works for a global option, buffer-local option and
window-local option, but it doesn't work for a global variable
or buffer-local variable.
! When the tab, window or variable doesn't exist {def} or an
! empty string is returned, there is no error message.
Examples: >
:let list_is_on = gettabwinvar(1, 2, '&list')
:echo "myvar = " . gettabwinvar(3, 1, 'myvar')
***************
*** 3448,3454 ****
the top of the GUI Vim window. The result will be -1 if the
information is not available.
! getwinvar({winnr}, {varname}) *getwinvar()*
Like |gettabwinvar()| for the current tabpage.
Examples: >
:let list_is_on = getwinvar(2, '&list')
--- 3472,3478 ----
the top of the GUI Vim window. The result will be -1 if the
information is not available.
! getwinvar({winnr}, {varname} [, {def}]) *getwinvar()*
Like |gettabwinvar()| for the current tabpage.
Examples: >
:let list_is_on = getwinvar(2, '&list')
*** ../vim-7.3.830/src/eval.c 2013-02-20 17:58:01.000000000 +0100
--- src/eval.c 2013-02-20 20:52:09.000000000 +0100
***************
*** 7916,7922 ****
{"garbagecollect", 0, 1, f_garbagecollect},
{"get", 2, 3, f_get},
{"getbufline", 2, 3, f_getbufline},
! {"getbufvar", 2, 2, f_getbufvar},
{"getchar", 0, 1, f_getchar},
{"getcharmod", 0, 0, f_getcharmod},
{"getcmdline", 0, 0, f_getcmdline},
--- 7916,7922 ----
{"garbagecollect", 0, 1, f_garbagecollect},
{"get", 2, 3, f_get},
{"getbufline", 2, 3, f_getbufline},
! {"getbufvar", 2, 3, f_getbufvar},
{"getchar", 0, 1, f_getchar},
{"getcharmod", 0, 0, f_getcharmod},
{"getcmdline", 0, 0, f_getcmdline},
***************
*** 7936,7946 ****
{"getqflist", 0, 0, f_getqflist},
{"getreg", 0, 2, f_getreg},
{"getregtype", 0, 1, f_getregtype},
! {"gettabvar", 2, 2, f_gettabvar},
! {"gettabwinvar", 3, 3, f_gettabwinvar},
{"getwinposx", 0, 0, f_getwinposx},
{"getwinposy", 0, 0, f_getwinposy},
! {"getwinvar", 2, 2, f_getwinvar},
{"glob", 1, 3, f_glob},
{"globpath", 2, 3, f_globpath},
{"has", 1, 1, f_has},
--- 7936,7946 ----
{"getqflist", 0, 0, f_getqflist},
{"getreg", 0, 2, f_getreg},
{"getregtype", 0, 1, f_getregtype},
! {"gettabvar", 2, 3, f_gettabvar},
! {"gettabwinvar", 3, 4, f_gettabwinvar},
{"getwinposx", 0, 0, f_getwinposx},
{"getwinposy", 0, 0, f_getwinposy},
! {"getwinvar", 2, 3, f_getwinvar},
{"glob", 1, 3, f_glob},
{"globpath", 2, 3, f_globpath},
{"has", 1, 1, f_has},
***************
*** 11115,11122 ****
++emsg_off;
buf = get_buf_tv(&argvars[0]);
! rettv->v_type = VAR_STRING;
! rettv->vval.v_string = NULL;
if (buf != NULL && varname != NULL)
{
--- 11115,11128 ----
++emsg_off;
buf = get_buf_tv(&argvars[0]);
! if (argvars[2].v_type != VAR_UNKNOWN)
! /* set the default value */
! copy_tv(&argvars[2], rettv);
! else
! {
! rettv->v_type = VAR_STRING;
! rettv->vval.v_string = NULL;
! }
if (buf != NULL && varname != NULL)
{
***************
*** 11785,11791 ****
--- 11791,11801 ----
v = find_var_in_ht(&tp->tp_vars.dv_hashtab, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
+ else if (argvars[2].v_type != VAR_UNKNOWN)
+ copy_tv(&argvars[2], rettv);
}
+ else if (argvars[2].v_type != VAR_UNKNOWN)
+ copy_tv(&argvars[2], rettv);
}
/*
***************
*** 11907,11914 ****
varname = get_tv_string_chk(&argvars[off + 1]);
++emsg_off;
! rettv->v_type = VAR_STRING;
! rettv->vval.v_string = NULL;
if (win != NULL && varname != NULL)
{
--- 11917,11930 ----
varname = get_tv_string_chk(&argvars[off + 1]);
++emsg_off;
! if (argvars[off + 2].v_type != VAR_UNKNOWN)
! /* set the default return value */
! copy_tv(&argvars[off + 2], rettv);
! else
! {
! rettv->v_type = VAR_STRING;
! rettv->vval.v_string = NULL;
! }
if (win != NULL && varname != NULL)
{
*** ../vim-7.3.830/src/testdir/test91.in 2013-02-20 21:09:20.000000000 +0100
--- src/testdir/test91.in 2013-02-20 20:57:49.000000000 +0100
***************
*** 0 ****
--- 1,98 ----
+ Tests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().
+ vim: set ft=vim :
+
+ STARTTEST
+ :so small.vim
+ :"
+ :" test for getbufvar()
+ :let b:var_num = 1234
+ :let def_num = 5678
+ :$put =string(getbufvar(1, 'var_num'))
+ :$put =string(getbufvar(1, 'var_num', def_num))
+ :$put =string(getbufvar(1, ''))
+ :$put =string(getbufvar(1, '', def_num))
+ :unlet b:var_num
+ :$put =string(getbufvar(1, 'var_num', def_num))
+ :$put =string(getbufvar(1, ''))
+ :$put =string(getbufvar(1, '', def_num))
+ :$put =string(getbufvar(9, ''))
+ :$put =string(getbufvar(9, '', def_num))
+ :unlet def_num
+ :$put =string(getbufvar(1, '&autoindent'))
+ :$put =string(getbufvar(1, '&autoindent', 1))
+ :"
+ :" test for getwinvar()
+ :let w:var_str = "Dance"
+ :let def_str = "Chance"
+ :$put =string(getwinvar(1, 'var_str'))
+ :$put =string(getwinvar(1, 'var_str', def_str))
+ :$put =string(getwinvar(1, ''))
+ :$put =string(getwinvar(1, '', def_str))
+ :unlet w:var_str
+ :$put =string(getwinvar(1, 'var_str', def_str))
+ :$put =string(getwinvar(1, ''))
+ :$put =string(getwinvar(1, '', def_str))
+ :$put =string(getwinvar(9, ''))
+ :$put =string(getwinvar(9, '', def_str))
+ :$put =string(getwinvar(1, '&nu'))
+ :$put =string(getwinvar(1, '&nu', 1))
+ :unlet def_str
+ :"
+ :" test for gettabvar()
+ :tabnew
+ :tabnew
+ :let t:var_list = [1, 2, 3]
+ :let def_list = [4, 5, 6, 7]
+ :tabrewind
+ :$put =string(gettabvar(3, 'var_list'))
+ :$put =string(gettabvar(3, 'var_list', def_list))
+ :$put =string(gettabvar(3, ''))
+ :$put =string(gettabvar(3, '', def_list))
+ :tablast
+ :unlet t:var_list
+ :tabrewind
+ :$put =string(gettabvar(3, 'var_list', def_list))
+ :$put =string(gettabvar(9, ''))
+ :$put =string(gettabvar(9, '', def_list))
+ :$put =string(gettabvar(3, '&nu'))
+ :$put =string(gettabvar(3, '&nu', def_list))
+ :unlet def_list
+ :tabonly
+ :"
+ :" test for gettabwinvar()
+ :tabnew
+ :tabnew
+ :tabprev
+ :split
+ :split
+ :wincmd w
+ :vert split
+ :wincmd w
+ :let w:var_dict = {'dict': 'tabwin'}
+ :let def_dict = {'dict2': 'newval'}
+ :wincmd b
+ :tabrewind
+ :$put =string(gettabwinvar(2, 3, 'var_dict'))
+ :$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
+ :$put =string(gettabwinvar(2, 3, ''))
+ :$put =string(gettabwinvar(2, 3, '', def_dict))
+ :tabnext
+ :3wincmd w
+ :unlet w:var_dict
+ :tabrewind
+ :$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
+ :$put =string(gettabwinvar(2, 3, ''))
+ :$put =string(gettabwinvar(2, 3, '', def_dict))
+ :$put =string(gettabwinvar(2, 9, ''))
+ :$put =string(gettabwinvar(2, 9, '', def_dict))
+ :$put =string(gettabwinvar(9, 3, ''))
+ :$put =string(gettabwinvar(9, 3, '', def_dict))
+ :unlet def_dict
+ :$put =string(gettabwinvar(2, 3, '&nux'))
+ :$put =string(gettabwinvar(2, 3, '&nux', 1))
+ :tabonly
+ :"
+ :/^start/,$wq! test.out
+ ENDTEST
+
+ start:
*** ../vim-7.3.830/src/testdir/test91.ok 2013-02-20 21:09:20.000000000 +0100
--- src/testdir/test91.ok 2013-02-20 20:57:45.000000000 +0100
***************
*** 0 ****
--- 1,45 ----
+ start:
+ 1234
+ 1234
+ {'var_num': 1234}
+ {'var_num': 1234}
+ 5678
+ {}
+ {}
+ ''
+ 5678
+ 0
+ 0
+ 'Dance'
+ 'Dance'
+ {'var_str': 'Dance'}
+ {'var_str': 'Dance'}
+ 'Chance'
+ {}
+ {}
+ ''
+ 'Chance'
+ 0
+ 0
+ [1, 2, 3]
+ [1, 2, 3]
+ ''
+ [4, 5, 6, 7]
+ [4, 5, 6, 7]
+ ''
+ [4, 5, 6, 7]
+ ''
+ [4, 5, 6, 7]
+ {'dict': 'tabwin'}
+ {'dict': 'tabwin'}
+ {'var_dict': {'dict': 'tabwin'}}
+ {'var_dict': {'dict': 'tabwin'}}
+ {'dict2': 'newval'}
+ {}
+ {}
+ ''
+ {'dict2': 'newval'}
+ ''
+ {'dict2': 'newval'}
+ ''
+ 1
*** ../vim-7.3.830/src/testdir/Make_amiga.mak 2013-02-13 17:34:59.000000000 +0100
--- src/testdir/Make_amiga.mak 2013-02-20 20:21:03.000000000 +0100
***************
*** 32,38 ****
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out
.SUFFIXES: .in .out
--- 32,38 ----
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out test91.out
.SUFFIXES: .in .out
***************
*** 139,141 ****
--- 139,142 ----
test88.out: test88.in
test89.out: test89.in
test90.out: test90.in
+ test91.out: test91.in
*** ../vim-7.3.830/src/testdir/Make_dos.mak 2013-02-13 17:34:59.000000000 +0100
--- src/testdir/Make_dos.mak 2013-02-20 20:21:13.000000000 +0100
***************
*** 31,37 ****
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out
SCRIPTS32 = test50.out test70.out
--- 31,37 ----
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out
SCRIPTS32 = test50.out test70.out
*** ../vim-7.3.830/src/testdir/Make_ming.mak 2013-02-13 17:34:59.000000000 +0100
--- src/testdir/Make_ming.mak 2013-02-20 20:21:19.000000000 +0100
***************
*** 51,57 ****
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out
SCRIPTS32 = test50.out test70.out
--- 51,57 ----
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out
SCRIPTS32 = test50.out test70.out
*** ../vim-7.3.830/src/testdir/Make_os2.mak 2013-02-13 17:34:59.000000000 +0100
--- src/testdir/Make_os2.mak 2013-02-20 20:21:25.000000000 +0100
***************
*** 32,38 ****
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out
.SUFFIXES: .in .out
--- 32,38 ----
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out test91.out
.SUFFIXES: .in .out
*** ../vim-7.3.830/src/testdir/Make_vms.mms 2013-02-13 17:34:59.000000000 +0100
--- src/testdir/Make_vms.mms 2013-02-20 20:21:31.000000000 +0100
***************
*** 4,10 ****
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
! # Last change: 2013 Feb 13
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
--- 4,10 ----
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
! # Last change: 2013 Feb 20
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
***************
*** 77,83 ****
test71.out test72.out test74.out test75.out test76.out \
test77.out test78.out test79.out test80.out test81.out \
test82.out test83.out test84.out test88.out test89.out \
! test90.out
# Known problems:
# Test 30: a problem around mac format - unknown reason
--- 77,83 ----
test71.out test72.out test74.out test75.out test76.out \
test77.out test78.out test79.out test80.out test81.out \
test82.out test83.out test84.out test88.out test89.out \
! test90.out test91.out
# Known problems:
# Test 30: a problem around mac format - unknown reason
*** ../vim-7.3.830/src/testdir/Makefile 2013-02-13 17:34:59.000000000 +0100
--- src/testdir/Makefile 2013-02-20 20:21:47.000000000 +0100
***************
*** 28,34 ****
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out
SCRIPTS_GUI = test16.out
--- 28,34 ----
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out
SCRIPTS_GUI = test16.out
*** ../vim-7.3.830/src/version.c 2013-02-20 19:26:24.000000000 +0100
--- src/version.c 2013-02-20 21:08:40.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 831,
/**/
--
|
Ceci n'est pas une pipe.
/// 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 ///

66
7.3.832 Normal file
View File

@ -0,0 +1,66 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.832
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.3.832
Problem: Compiler warning.
Solution: Add type cast. (Mike Williams)
Files: src/version.c
*** ../vim-7.3.831/src/version.c 2013-02-20 21:11:14.000000000 +0100
--- src/version.c 2013-02-26 11:21:41.000000000 +0100
***************
*** 2466,2472 ****
* width */
for (i = 0; features[i] != NULL; ++i)
{
! int l = STRLEN(features[i]);
if (l > width)
width = l;
--- 2468,2474 ----
* width */
for (i = 0; features[i] != NULL; ++i)
{
! int l = (int)STRLEN(features[i]);
if (l > width)
width = l;
***************
*** 2518,2523 ****
--- 2520,2526 ----
msg_putchar('\n');
}
}
+
void
list_version()
{
*** ../vim-7.3.831/src/version.c 2013-02-20 21:11:14.000000000 +0100
--- src/version.c 2013-02-26 11:21:41.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 832,
/**/
--
Engineers are always delighted to share wisdom, even in areas in which they
have no experience whatsoever. Their logic provides them with inherent
insight into any field of expertise. This can be a problem when dealing with
the illogical people who believe that knowledge can only be derived through
experience.
(Scott Adams - The Dilbert principle)
/// 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 ///

118
7.3.833 Normal file
View File

@ -0,0 +1,118 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.833
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.3.833
Problem: In the terminal the scroll wheel always scrolls the active window.
Solution: Scroll the window under the mouse pointer, like in the GUI.
(Bradie Rao)
Files: src/edit.c, src/normal.c
*** ../vim-7.3.832/src/edit.c 2013-02-13 16:30:17.000000000 +0100
--- src/edit.c 2013-02-26 11:20:31.000000000 +0100
***************
*** 9139,9147 ****
tpos = curwin->w_cursor;
! # if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
! /* Currently the mouse coordinates are only known in the GUI. */
! if (gui.in_use && mouse_row >= 0 && mouse_col >= 0)
{
int row, col;
--- 9139,9146 ----
tpos = curwin->w_cursor;
! # ifdef FEAT_WINDOWS
! if (mouse_row >= 0 && mouse_col >= 0)
{
int row, col;
***************
*** 9191,9197 ****
# endif
}
! # if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
curwin->w_redr_status = TRUE;
curwin = old_curwin;
--- 9190,9196 ----
# endif
}
! # ifdef FEAT_WINDOWS
curwin->w_redr_status = TRUE;
curwin = old_curwin;
*** ../vim-7.3.832/src/normal.c 2013-02-14 22:11:31.000000000 +0100
--- src/normal.c 2013-02-26 11:20:31.000000000 +0100
***************
*** 4649,4659 ****
nv_mousescroll(cap)
cmdarg_T *cap;
{
! # if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
win_T *old_curwin = curwin;
! /* Currently we only get the mouse coordinates in the GUI. */
! if (gui.in_use && mouse_row >= 0 && mouse_col >= 0)
{
int row, col;
--- 4649,4658 ----
nv_mousescroll(cap)
cmdarg_T *cap;
{
! # ifdef FEAT_WINDOWS
win_T *old_curwin = curwin;
! if (mouse_row >= 0 && mouse_col >= 0)
{
int row, col;
***************
*** 4698,4704 ****
}
# endif
! # if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
curwin->w_redr_status = TRUE;
curwin = old_curwin;
--- 4697,4703 ----
}
# endif
! # ifdef FEAT_WINDOWS
curwin->w_redr_status = TRUE;
curwin = old_curwin;
*** ../vim-7.3.832/src/version.c 2013-02-26 11:25:28.000000000 +0100
--- src/version.c 2013-02-26 13:28:51.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 833,
/**/
--
Female engineers become irresistible at the age of consent and remain that
way until about thirty minutes after their clinical death. Longer if it's a
warm day.
(Scott Adams - The Dilbert principle)
/// 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 ///

83
7.3.834 Normal file
View File

@ -0,0 +1,83 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.834
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.3.834
Problem: Ruby 2.0 has a few API changes.
Solution: Add handling of Ruby 2.0. (Yasuhiro Matsumoto)
Files: src/if_ruby.c
*** ../vim-7.3.833/src/if_ruby.c 2013-02-14 22:19:47.000000000 +0100
--- src/if_ruby.c 2013-02-26 13:41:24.000000000 +0100
***************
*** 189,195 ****
--- 189,197 ----
#ifndef RUBY19_OR_LATER
#define rb_num2long dll_rb_num2long
#endif
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER <= 19
#define rb_num2ulong dll_rb_num2ulong
+ #endif
#define rb_obj_alloc dll_rb_obj_alloc
#define rb_obj_as_string dll_rb_obj_as_string
#define rb_obj_id dll_rb_obj_id
***************
*** 344,349 ****
--- 346,362 ----
{
return dll_rb_int2big(x);
}
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20
+ VALUE
+ rb_float_new_in_heap(double d)
+ {
+ return dll_rb_float_new(d);
+ }
+ unsigned long rb_num2ulong(VALUE x)
+ {
+ return (long)RSHIFT((SIGNED_VALUE)(x),1);
+ }
+ #endif
#endif
static HINSTANCE hinstRuby = NULL; /* Instance of ruby.dll */
***************
*** 434,440 ****
--- 447,457 ----
#endif
#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
{"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr},
+ # if DYNAMIC_RUBY_VER <= 19
{"rb_float_new", (RUBY_PROC*)&dll_rb_float_new},
+ # else
+ {"rb_float_new_in_heap", (RUBY_PROC*)&dll_rb_float_new},
+ # endif
{"rb_ary_new", (RUBY_PROC*)&dll_rb_ary_new},
{"rb_ary_push", (RUBY_PROC*)&dll_rb_ary_push},
#endif
*** ../vim-7.3.833/src/version.c 2013-02-26 13:30:28.000000000 +0100
--- src/version.c 2013-02-26 13:33:34.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 834,
/**/
--
An alien life briefly visits earth. Just before departing it leaves a
message in the dust on the back of a white van. The world is shocked
and wants to know what it means. After months of studies the worlds
best linguistic scientists are able to decipher the message: "Wash me!".
/// 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 ///

60
7.3.835 Normal file
View File

@ -0,0 +1,60 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.835
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.3.835
Problem: "xxd -i" fails on an empty file.
Solution: Do output the closing } for an empty file. (partly by Lawrence
Woodman)
Files: src/xxd/xxd.c
*** ../vim-7.3.834/src/xxd/xxd.c 2011-04-11 21:35:03.000000000 +0200
--- src/xxd/xxd.c 2013-02-26 14:08:48.000000000 +0100
***************
*** 729,737 ****
if (c == EOF && ferror(fp))
die(2);
! if (p)
! if (fputs("\n};\n" + 3 * (fp == stdin), fpo) == EOF)
! die(3);
if (fp != stdin)
{
--- 729,738 ----
if (c == EOF && ferror(fp))
die(2);
! if (p && fputs("\n", fpo) == EOF)
! die(3);
! if (fputs("};\n" + 3 * (fp == stdin), fpo) == EOF)
! die(3);
if (fp != stdin)
{
*** ../vim-7.3.834/src/version.c 2013-02-26 13:41:31.000000000 +0100
--- src/version.c 2013-02-26 14:11:21.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 835,
/**/
--
For society, it's probably a good thing that engineers value function over
appearance. For example, you wouldn't want engineers to build nuclear power
plants that only _look_ like they would keep all the radiation inside.
(Scott Adams - The Dilbert principle)
/// 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 ///

2071
7.3.836 Normal file

File diff suppressed because it is too large Load Diff

84
7.3.837 Normal file
View File

@ -0,0 +1,84 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.837
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.3.837 (after 7.3.826)
Problem: Empty lines in :version output when 'columns' is 320.
Solution: Simplify the logic of making columns. (Nazri Ramliy, Roland
Eggner)
Files: src/version.c
*** ../vim-7.3.836/src/version.c 2013-02-26 14:56:24.000000000 +0100
--- src/version.c 2013-02-26 15:10:56.000000000 +0100
***************
*** 2496,2509 ****
return;
}
- ncol = (int) Columns / width;
/* The rightmost column doesn't need a separator.
* Sacrifice it to fit in one more column if possible. */
! if (Columns % width == width - 1)
! ncol++;
!
nrow = nfeat / ncol + (nfeat % ncol ? 1 : 0);
for (i = 0; !got_int && i < nrow * ncol; ++i)
{
int idx = (i / ncol) + (i % ncol) * nrow;
--- 2498,2509 ----
return;
}
/* The rightmost column doesn't need a separator.
* Sacrifice it to fit in one more column if possible. */
! ncol = (int) (Columns + 1) / width;
nrow = nfeat / ncol + (nfeat % ncol ? 1 : 0);
+ /* i counts columns then rows. idx counts rows then columns. */
for (i = 0; !got_int && i < nrow * ncol; ++i)
{
int idx = (i / ncol) + (i % ncol) * nrow;
***************
*** 2525,2531 ****
}
}
else
! msg_putchar('\n');
}
}
--- 2525,2534 ----
}
}
else
! {
! if (msg_col > 0)
! msg_putchar('\n');
! }
}
}
*** ../vim-7.3.836/src/version.c 2013-02-26 14:56:24.000000000 +0100
--- src/version.c 2013-02-26 15:10:56.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 837,
/**/
--
Imagine a world without hypothetical situations.
/// 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 ///

364
7.3.838 Normal file
View File

@ -0,0 +1,364 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.838
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.3.838 (after 7.3.830)
Problem: Insufficient testing for mksession.
Solution: Add tests. (mostly by Roland Eggner)
Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
src/testdir/Make_vms.mms, src/testdir/Makefile,
src/testdir/test92.in, src/testdir/test92.ok,
src/testdir/test93.in, src/testdir/test93.ok,
src/ex_docmd.c
*** ../vim-7.3.837/src/testdir/Make_amiga.mak 2013-02-20 21:11:14.000000000 +0100
--- src/testdir/Make_amiga.mak 2013-02-26 15:30:10.000000000 +0100
***************
*** 32,38 ****
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out test91.out
.SUFFIXES: .in .out
--- 32,38 ----
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out test91.out test92.out test93.out
.SUFFIXES: .in .out
***************
*** 140,142 ****
--- 140,144 ----
test89.out: test89.in
test90.out: test90.in
test91.out: test91.in
+ test92.out: test92.in
+ test93.out: test93.in
*** ../vim-7.3.837/src/testdir/Make_dos.mak 2013-02-20 21:11:14.000000000 +0100
--- src/testdir/Make_dos.mak 2013-02-26 15:30:10.000000000 +0100
***************
*** 31,37 ****
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out
SCRIPTS32 = test50.out test70.out
--- 31,37 ----
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out test92.out test93.out
SCRIPTS32 = test50.out test70.out
*** ../vim-7.3.837/src/testdir/Make_ming.mak 2013-02-20 21:11:14.000000000 +0100
--- src/testdir/Make_ming.mak 2013-02-26 15:30:10.000000000 +0100
***************
*** 51,57 ****
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out
SCRIPTS32 = test50.out test70.out
--- 51,57 ----
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out test92.out test93.out
SCRIPTS32 = test50.out test70.out
*** ../vim-7.3.837/src/testdir/Make_os2.mak 2013-02-20 21:11:14.000000000 +0100
--- src/testdir/Make_os2.mak 2013-02-26 15:30:10.000000000 +0100
***************
*** 32,38 ****
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out test91.out
.SUFFIXES: .in .out
--- 32,38 ----
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out test91.out test92.out test93.out
.SUFFIXES: .in .out
*** ../vim-7.3.837/src/testdir/Make_vms.mms 2013-02-20 21:11:14.000000000 +0100
--- src/testdir/Make_vms.mms 2013-02-26 15:30:10.000000000 +0100
***************
*** 4,10 ****
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
! # Last change: 2013 Feb 20
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
--- 4,10 ----
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
! # Last change: 2013-02-21
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
***************
*** 77,83 ****
test71.out test72.out test74.out test75.out test76.out \
test77.out test78.out test79.out test80.out test81.out \
test82.out test83.out test84.out test88.out test89.out \
! test90.out test91.out
# Known problems:
# Test 30: a problem around mac format - unknown reason
--- 77,83 ----
test71.out test72.out test74.out test75.out test76.out \
test77.out test78.out test79.out test80.out test81.out \
test82.out test83.out test84.out test88.out test89.out \
! test90.out test91.out test92.out test93.out
# Known problems:
# Test 30: a problem around mac format - unknown reason
*** ../vim-7.3.837/src/testdir/Makefile 2013-02-20 21:11:14.000000000 +0100
--- src/testdir/Makefile 2013-02-26 15:30:10.000000000 +0100
***************
*** 28,34 ****
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out
SCRIPTS_GUI = test16.out
--- 28,34 ----
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out test92.out test93.out
SCRIPTS_GUI = test16.out
*** ../vim-7.3.837/src/testdir/test92.in 2013-02-26 17:20:44.000000000 +0100
--- src/testdir/test92.in 2013-02-26 16:27:55.000000000 +0100
***************
*** 0 ****
--- 1,48 ----
+ vim: set ft=vim fenc=utf-8:
+
+ Tests if :mksession saves cursor columns correctly in presence of tab and
+ multibyte characters when fileencoding=utf-8.
+
+ STARTTEST
+ :so mbyte.vim
+ :if !has('mksession')
+ : e! test.ok
+ : wq! test.out
+ :endif
+ :set sessionoptions=buffers splitbelow fileencoding=utf-8
+ /^start:
+ :vsplit
+ j16|:split
+ j16|:split
+ j16|:split
+ j8|:split
+ j8|:split
+ j16|:split
+ j16|:split
+ j16|:wincmd l
+ /^start:
+ :set nowrap
+ j16|3zl:split
+ j016|3zl:split
+ j016|3zl:split
+ j08|3zl:split
+ j08|3zl:split
+ j016|3zl:split
+ j016|3zl:split
+ j016|3zl:split
+ :mksession! test.out
+ :new test.out
+ :v/\(^ *normal! 0\|^ *exe 'normal!\)/d
+ :w
+ :qa!
+ ENDTEST
+
+ start:
+ no multibyte chAracter
+ one leaDing tab
+ four leadinG spaces
+ two consecutive tabs
+ two tabs in one line
+ one … multibyteCharacter
+ a “€ two multiByte characters
+ “€‚¬ three mulTibyte characters
*** ../vim-7.3.837/src/testdir/test92.ok 2013-02-26 17:20:44.000000000 +0100
--- src/testdir/test92.ok 2013-02-26 17:13:48.000000000 +0100
***************
*** 0 ****
--- 1,26 ----
+ normal! 016|
+ normal! 016|
+ normal! 016|
+ normal! 08|
+ normal! 08|
+ normal! 016|
+ normal! 016|
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 8 . '|'
+ normal! 08|
+ exe 'normal! ' . s:c . '|zs' . 8 . '|'
+ normal! 08|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
*** ../vim-7.3.837/src/testdir/test93.in 2013-02-26 17:20:44.000000000 +0100
--- src/testdir/test93.in 2013-02-26 17:13:01.000000000 +0100
***************
*** 0 ****
--- 1,48 ----
+ vim: set ft=vim fenc=latin1:
+
+ Tests if :mksession saves cursor columns correctly in presence of tab and
+ multibyte characters when fileencoding=latin1.
+
+ STARTTEST
+ :so mbyte.vim
+ :if !has('mksession')
+ : e! test.ok
+ : wq! test.out
+ :endif
+ :set sessionoptions=buffers splitbelow fileencoding=latin1
+ /^start:
+ :vsplit
+ j16|:split
+ j16|:split
+ j16|:split
+ j8|:split
+ j8|:split
+ j16|:split
+ j16|:split
+ j16|:wincmd l
+ /^start:
+ :set nowrap
+ j16|3zl:split
+ j016|3zl:split
+ j016|3zl:split
+ j08|3zl:split
+ j08|3zl:split
+ j016|3zl:split
+ j016|3zl:split
+ j016|3zl:split
+ :mksession! test.out
+ :new test.out
+ :v/\(^ *normal! 0\|^ *exe 'normal!\)/d
+ :w
+ :qa!
+ ENDTEST
+
+ start:
+ no multibyte chAracter
+ one leaDing tab
+ four leadinG spaces
+ two consecutive tabs
+ two tabs in one line
+ one ä multibyteCharacter
+ aä Ä two multiByte characters
+ Aäöü three mulTibyte characters
*** ../vim-7.3.837/src/testdir/test93.ok 2013-02-26 17:20:44.000000000 +0100
--- src/testdir/test93.ok 2013-02-26 17:14:02.000000000 +0100
***************
*** 0 ****
--- 1,26 ----
+ normal! 016|
+ normal! 016|
+ normal! 016|
+ normal! 08|
+ normal! 08|
+ normal! 016|
+ normal! 016|
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 8 . '|'
+ normal! 08|
+ exe 'normal! ' . s:c . '|zs' . 8 . '|'
+ normal! 08|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
+ exe 'normal! ' . s:c . '|zs' . 16 . '|'
+ normal! 016|
*** ../vim-7.3.837/src/ex_docmd.c 2013-02-20 19:26:24.000000000 +0100
--- src/ex_docmd.c 2013-02-26 16:14:07.000000000 +0100
***************
*** 10839,10845 ****
(long)wp->w_virtcol + 1) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "else") == FAIL
! || fprintf(fd, " normal! %d|", wp->w_virtcol + 1) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "endif") == FAIL)
return FAIL;
--- 10839,10845 ----
(long)wp->w_virtcol + 1) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "else") == FAIL
! || fprintf(fd, " normal! 0%d|", wp->w_virtcol + 1) < 0
|| put_eol(fd) == FAIL
|| put_line(fd, "endif") == FAIL)
return FAIL;
*** ../vim-7.3.837/src/version.c 2013-02-26 15:27:20.000000000 +0100
--- src/version.c 2013-02-26 15:31:06.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 838,
/**/
--
It doesn't really matter what you are able to do if you don't do it.
(Bram Moolenaar)
/// 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 ///

76
7.3.839 Normal file
View File

@ -0,0 +1,76 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.839
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.3.839
Problem: Some files missing in the list of distributed files.
Solution: Add lines for new files.
Files: Filelist
*** ../vim-7.3.838/Filelist 2012-10-03 21:48:38.000000000 +0200
--- Filelist 2013-02-26 17:55:17.000000000 +0100
***************
*** 73,78 ****
--- 73,79 ----
src/version.c \
src/version.h \
src/vim.h \
+ src/winclip.c \
src/window.c \
src/xxd/xxd.c \
src/main.aap \
***************
*** 83,88 ****
--- 84,90 ----
src/testdir/test60.vim \
src/testdir/test83-tags? \
src/proto.h \
+ src/proto/arabic.pro \
src/proto/blowfish.pro \
src/proto/buffer.pro \
src/proto/charset.pro \
***************
*** 130,135 ****
--- 132,138 ----
src/proto/ui.pro \
src/proto/undo.pro \
src/proto/version.pro \
+ src/proto/winclip.pro \
src/proto/window.pro \
***************
*** 444,449 ****
--- 447,453 ----
src/os_beos.c \
src/os_beos.h \
src/os_beos.rsrc \
+ src/proto/os_beos.pro \
src/os_mint.h \
src/os_vms_fix.com \
src/toolbar.phi \
*** ../vim-7.3.838/src/version.c 2013-02-26 17:21:15.000000000 +0100
--- src/version.c 2013-02-26 17:56:40.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 839,
/**/
--
Normal people believe that if it ain't broke, don't fix it. Engineers believe
that if it ain't broke, it doesn't have enough features yet.
(Scott Adams - The Dilbert principle)
/// 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 ///

54
7.3.840 Normal file
View File

@ -0,0 +1,54 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.840
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.3.840
Problem: "\@<!" in regexp does not work correctly with multi-byte
characters, especially cp932.
Solution: Move column to start of multi-byte character. (Yasuhiro Matsumoto)
Files: src/regexp.c
*** ../vim-7.3.839/src/regexp.c 2013-01-30 18:21:48.000000000 +0100
--- src/regexp.c 2013-02-26 18:37:45.000000000 +0100
***************
*** 5449,5454 ****
--- 5449,5461 ----
}
}
else
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ rp->rs_un.regsave.rs_u.pos.col -=
+ (*mb_head_off)(regline, regline
+ + rp->rs_un.regsave.rs_u.pos.col - 1) + 1;
+ else
+ #endif
--rp->rs_un.regsave.rs_u.pos.col;
}
else
*** ../vim-7.3.839/src/version.c 2013-02-26 17:59:37.000000000 +0100
--- src/version.c 2013-02-26 18:39:28.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 840,
/**/
--
I learned the customs and mannerisms of engineers by observing them, much the
way Jane Goodall learned about the great apes, but without the hassle of
grooming.
(Scott Adams - The Dilbert principle)
/// 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 ///

59
7.3.841 Normal file
View File

@ -0,0 +1,59 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.841
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.3.841
Problem: When a "cond ? one : two" expression has a subscript it is not
parsed correctly. (Andy Wokula)
Solution: Handle a subscript also when the type is unknown. (Christian
Brabandt)
Files: src/eval.c
*** ../vim-7.3.840/src/eval.c 2013-02-20 21:11:14.000000000 +0100
--- src/eval.c 2013-02-26 19:27:59.000000000 +0100
***************
*** 5164,5169 ****
--- 5164,5179 ----
ret = get_func_tv(s, len, rettv, arg,
curwin->w_cursor.lnum, curwin->w_cursor.lnum,
&len, evaluate, NULL);
+
+ /* If evaluate is FALSE rettv->v_type was not set in
+ * get_func_tv, but it's needed in handle_subscript() to parse
+ * what follows. So set it here. */
+ if (rettv->v_type == VAR_UNKNOWN && !evaluate && **arg == '(')
+ {
+ rettv->vval.v_string = vim_strsave("");
+ rettv->v_type = VAR_FUNC;
+ }
+
/* Stop the expression evaluation when immediately
* aborting on error, or when an interrupt occurred or
* an exception was thrown but not caught. */
*** ../vim-7.3.840/src/version.c 2013-02-26 18:45:49.000000000 +0100
--- src/version.c 2013-02-26 19:35:36.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 841,
/**/
--
If someone questions your market projections, simply point out that your
target market is "People who are nuts" and "People who will buy any damn
thing". Nobody is going to tell you there aren't enough of those people
to go around.
(Scott Adams - The Dilbert principle)
/// 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 ///

54
7.3.842 Normal file
View File

@ -0,0 +1,54 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.842
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.3.842
Problem: Compiler warning for signed/unsigned pointer.
Solution: Add type cast. (Christian Brabandt)
Files: src/eval.c
*** ../vim-7.3.841/src/eval.c 2013-02-26 19:36:03.000000000 +0100
--- src/eval.c 2013-02-26 21:41:24.000000000 +0100
***************
*** 5170,5176 ****
* what follows. So set it here. */
if (rettv->v_type == VAR_UNKNOWN && !evaluate && **arg == '(')
{
! rettv->vval.v_string = vim_strsave("");
rettv->v_type = VAR_FUNC;
}
--- 5170,5176 ----
* what follows. So set it here. */
if (rettv->v_type == VAR_UNKNOWN && !evaluate && **arg == '(')
{
! rettv->vval.v_string = vim_strsave((char_u *)"");
rettv->v_type = VAR_FUNC;
}
*** ../vim-7.3.841/src/version.c 2013-02-26 19:36:03.000000000 +0100
--- src/version.c 2013-02-26 21:43:21.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 842,
/**/
--
The process for understanding customers primarily involves sitting around with
other marketing people and talking about what you would to if you were dumb
enough to be a customer.
(Scott Adams - The Dilbert principle)
/// 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 ///

111
7.3.843 Normal file
View File

@ -0,0 +1,111 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.843
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.3.843 (after 7.3.841)
Problem: Missing test file changes.
Solution: Change the tests.
Files: src/testdir/test49.vim, src/testdir/test49.ok
*** ../vim-7.3.842/src/testdir/test49.vim 2012-12-05 19:00:03.000000000 +0100
--- src/testdir/test49.vim 2013-02-26 19:22:36.000000000 +0100
***************
*** 9624,9630 ****
Xcheck 0
"-------------------------------------------------------------------------------
! " Test 87: $VIMNOERRTHROW and $VIMNOINTTHROW support {{{1
"
" It is possible to configure Vim for throwing exceptions on error
" or interrupt, controlled by variables $VIMNOERRTHROW and
--- 9624,9661 ----
Xcheck 0
"-------------------------------------------------------------------------------
! " Test 87 using (expr) ? funcref : funcref {{{1
! "
! " Vim needs to correctly parse the funcref and even when it does
! " not execute the funcref, it needs to consume the trailing ()
! "-------------------------------------------------------------------------------
!
! XpathINIT
!
! func Add2(x1, x2)
! return a:x1 + a:x2
! endfu
!
! func GetStr()
! return "abcdefghijklmnopqrstuvwxyp"
! endfu
!
! echo function('Add2')(2,3)
!
! Xout 1 ? function('Add2')(1,2) : function('Add2')(2,3)
! Xout 0 ? function('Add2')(1,2) : function('Add2')(2,3)
! " Make sure, GetStr() still works.
! Xout GetStr()[0:10]
!
!
! delfunction GetStr
! delfunction Add2
! Xout "Successfully executed funcref Add2"
!
! Xcheck 0
!
! "-------------------------------------------------------------------------------
! " Test 88: $VIMNOERRTHROW and $VIMNOINTTHROW support {{{1
"
" It is possible to configure Vim for throwing exceptions on error
" or interrupt, controlled by variables $VIMNOERRTHROW and
*** ../vim-7.3.842/src/testdir/test49.ok 2012-11-14 22:38:04.000000000 +0100
--- src/testdir/test49.ok 2013-02-26 19:22:36.000000000 +0100
***************
*** 87,94 ****
*** Test 85: OK (198689)
--- Test 86: No Crash for vimgrep on BufUnload
*** Test 86: OK (0)
! --- Test 87: All tests were run with throwing exceptions on error.
The $VIMNOERRTHROW control is not configured.
! --- Test 87: All tests were run with throwing exceptions on interrupt.
The $VIMNOINTTHROW control is not configured.
! *** Test 87: OK (50443995)
--- 87,99 ----
*** Test 85: OK (198689)
--- Test 86: No Crash for vimgrep on BufUnload
*** Test 86: OK (0)
! --- Test 87: 3
! --- Test 87: 5
! --- Test 87: abcdefghijk
! --- Test 87: Successfully executed funcref Add2
! *** Test 87: OK (0)
! --- Test 88: All tests were run with throwing exceptions on error.
The $VIMNOERRTHROW control is not configured.
! --- Test 88: All tests were run with throwing exceptions on interrupt.
The $VIMNOINTTHROW control is not configured.
! *** Test 88: OK (50443995)
*** ../vim-7.3.842/src/version.c 2013-02-26 21:43:28.000000000 +0100
--- src/version.c 2013-02-26 22:53:13.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 843,
/**/
--
Never enter the boss's office unless it's absolutely necessary. Every boss
saves one corner of the desk for useless assignments that are doled out like
Halloween candy to each visitor.
(Scott Adams - The Dilbert principle)
/// 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 ///

197
7.3.844 Normal file
View File

@ -0,0 +1,197 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.844
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.3.844
Problem: Enum is not indented correctly with "public" etc.
Solution: Skip "public", "private" and "protected". (Hong Xu)
Files: src/misc1.c
*** ../vim-7.3.843/src/misc1.c 2013-02-13 16:10:13.000000000 +0100
--- src/misc1.c 2013-03-07 12:59:45.000000000 +0100
***************
*** 5275,5280 ****
--- 5275,5281 ----
static int cin_is_cpp_baseclass __ARGS((colnr_T *col));
static int get_baseclass_amount __ARGS((int col, int ind_maxparen, int ind_maxcomment, int ind_cpp_baseclass));
static int cin_ends_in __ARGS((char_u *, char_u *, char_u *));
+ static int cin_starts_with __ARGS((char_u *s, char *word));
static int cin_skip2pos __ARGS((pos_T *trypos));
static pos_T *find_start_brace __ARGS((int));
static pos_T *find_match_paren __ARGS((int, int));
***************
*** 5446,5469 ****
}
/*
! * Recognize structure initialization and enumerations.
! * Q&D-Implementation:
! * check for "=" at end or "[typedef] enum" at beginning of line.
*/
static int
cin_isinit(void)
{
char_u *s;
s = cin_skipcomment(ml_get_curline());
! if (STRNCMP(s, "typedef", 7) == 0 && !vim_isIDc(s[7]))
s = cin_skipcomment(s + 7);
! if (STRNCMP(s, "static", 6) == 0 && !vim_isIDc(s[6]))
! s = cin_skipcomment(s + 6);
! if (STRNCMP(s, "enum", 4) == 0 && !vim_isIDc(s[4]))
return TRUE;
if (cin_ends_in(s, (char_u *)"=", (char_u *)"{"))
--- 5447,5486 ----
}
/*
! * Recognize structure initialization and enumerations:
! * "[typedef] [static|public|protected|private] enum"
! * "[typedef] [static|public|protected|private] = {"
*/
static int
cin_isinit(void)
{
char_u *s;
+ static char *skip[] = {"static", "public", "protected", "private"};
s = cin_skipcomment(ml_get_curline());
! if (cin_starts_with(s, "typedef"))
s = cin_skipcomment(s + 7);
! for (;;)
! {
! int i, l;
!
! for (i = 0; i < (int)(sizeof(skip) / sizeof(char *)); ++i)
! {
! l = strlen(skip[i]);
! if (cin_starts_with(s, skip[i]))
! {
! s = cin_skipcomment(s + l);
! l = 0;
! break;
! }
! }
! if (l != 0)
! break;
! }
! if (cin_starts_with(s, "enum"))
return TRUE;
if (cin_ends_in(s, (char_u *)"=", (char_u *)"{"))
***************
*** 5481,5487 ****
int strict; /* Allow relaxed check of case statement for JS */
{
s = cin_skipcomment(s);
! if (STRNCMP(s, "case", 4) == 0 && !vim_isIDc(s[4]))
{
for (s += 4; *s; ++s)
{
--- 5498,5504 ----
int strict; /* Allow relaxed check of case statement for JS */
{
s = cin_skipcomment(s);
! if (cin_starts_with(s, "case"))
{
for (s += 4; *s; ++s)
{
***************
*** 6049,6055 ****
p = cin_skipcomment(p);
if (*p == '}') /* accept "} while (cond);" */
p = cin_skipcomment(p + 1);
! if (STRNCMP(p, "while", 5) == 0 && !vim_isIDc(p[5]))
{
cursor_save = curwin->w_cursor;
curwin->w_cursor.lnum = lnum;
--- 6066,6072 ----
p = cin_skipcomment(p);
if (*p == '}') /* accept "} while (cond);" */
p = cin_skipcomment(p + 1);
! if (cin_starts_with(p, "while"))
{
cursor_save = curwin->w_cursor;
curwin->w_cursor.lnum = lnum;
***************
*** 6156,6162 ****
s = cin_skipcomment(ml_get(trypos->lnum));
if (*s == '}') /* accept "} while (cond);" */
s = cin_skipcomment(s + 1);
! if (STRNCMP(s, "while", 5) == 0 && !vim_isIDc(s[5]))
{
curwin->w_cursor.lnum = trypos->lnum;
return TRUE;
--- 6173,6179 ----
s = cin_skipcomment(ml_get(trypos->lnum));
if (*s == '}') /* accept "} while (cond);" */
s = cin_skipcomment(s + 1);
! if (cin_starts_with(s, "while"))
{
curwin->w_cursor.lnum = trypos->lnum;
return TRUE;
***************
*** 6406,6411 ****
--- 6423,6441 ----
}
/*
+ * Return TRUE when "s" starts with "word" and then a non-ID character.
+ */
+ static int
+ cin_starts_with(s, word)
+ char_u *s;
+ char *word;
+ {
+ int l = STRLEN(word);
+
+ return (STRNCMP(s, word, l) == 0 && !vim_isIDc(s[l]));
+ }
+
+ /*
* Skip strings, chars and comments until at or past "trypos".
* Return the column found.
*/
*** ../vim-7.3.843/src/version.c 2013-02-26 22:54:06.000000000 +0100
--- src/version.c 2013-03-07 13:12:20.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 844,
/**/
--
Now it is such a bizarrely improbable coincidence that anything as
mind-bogglingly useful as the Babel fish could have evolved purely by chance
that some thinkers have chosen to see it as a final and clinching proof of the
NON-existence of God.
The argument goes something like this: 'I refuse to prove that I exist,' says
God, 'for proof denies faith, and without faith I am nothing.'
'But,' says Man, 'the Babel fish is a dead giveaway, isn't it? It could not
have evolved by chance. It proves you exist, and so therefore, by your own
arguments, you don't. QED.'
'Oh dear,' says God, 'I hadn't thought of that,' and promptly vanishes in a
puff of logic.
'Oh, that was easy,' says Man, and for an encore goes on to prove that black
is white and gets himself killed on the next pedestrian crossing.
-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
/// 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 ///

88
7.3.845 Normal file
View File

@ -0,0 +1,88 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.845
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.3.845 (after 7.3.844)
Problem: Enum indenting is not tested.
Solution: Add tests. (Hong Xu)
Files: src/testdir/test3.in, src/testdir/test3.ok
*** ../vim-7.3.844/src/testdir/test3.in 2012-06-13 13:40:45.000000000 +0200
--- src/testdir/test3.in 2013-03-07 12:39:35.000000000 +0100
***************
*** 318,323 ****
--- 318,337 ----
maybe
} soppie;
+ public static enum
+ {
+ yes = 0,
+ no,
+ maybe
+ } soppie;
+
+ static private enum
+ {
+ yes = 0,
+ no,
+ maybe
+ } soppie;
+
{
int a,
b;
*** ../vim-7.3.844/src/testdir/test3.ok 2012-06-13 13:40:45.000000000 +0200
--- src/testdir/test3.ok 2013-03-07 12:40:03.000000000 +0100
***************
*** 306,311 ****
--- 306,325 ----
maybe
} soppie;
+ public static enum
+ {
+ yes = 0,
+ no,
+ maybe
+ } soppie;
+
+ static private enum
+ {
+ yes = 0,
+ no,
+ maybe
+ } soppie;
+
{
int a,
b;
*** ../vim-7.3.844/src/version.c 2013-03-07 13:13:45.000000000 +0100
--- src/version.c 2013-03-07 13:18:49.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 845,
/**/
--
"So this is it," said Arthur, "we are going to die."
"Yes," said Ford, "except...no! Wait a minute!" He suddenly lunged across
the chamber at something behind Arthur's line of vision. "What's this
switch?" he cried.
"What? Where?" cried Arthur, twisting around.
"No, I was only fooling," said Ford, "we are going to die after all."
-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
/// 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 ///

46
7.3.846 Normal file
View File

@ -0,0 +1,46 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.846
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.3.846
Problem: Missing proto file, listing a non-existing proto file.
Solution: Remove the file. Add os_beos.pro only in Mercurial.
Files: Filelist
*** ../vim-7.3.845/Filelist 2013-02-26 17:59:37.000000000 +0100
--- Filelist 2013-03-07 13:27:30.000000000 +0100
***************
*** 84,90 ****
src/testdir/test60.vim \
src/testdir/test83-tags? \
src/proto.h \
- src/proto/arabic.pro \
src/proto/blowfish.pro \
src/proto/buffer.pro \
src/proto/charset.pro \
--- 84,89 ----
*** ../vim-7.3.845/src/version.c 2013-03-07 13:21:28.000000000 +0100
--- src/version.c 2013-03-07 13:23:02.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 846,
/**/
--
I am also told that there is a logical proof out there somewhere
that demonstrates that there is no task which duct tape cannot handle.
-- Paul Brannan
/// 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 ///

47
7.3.847 Normal file
View File

@ -0,0 +1,47 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.847
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.3.847
Problem: Test 55 fails when messages are translated.
Solution: Set language to C. (Ken Takata)
Files: src/testdir/test55.in
*** ../vim-7.3.846/src/testdir/test55.in 2012-08-29 16:55:09.000000000 +0200
--- src/testdir/test55.in 2013-03-07 14:33:12.000000000 +0100
***************
*** 3,8 ****
--- 3,9 ----
STARTTEST
:so small.vim
:fun Test(...)
+ :lang C
:" Creating List directly with different types
:let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]
:$put =string(l)
*** ../vim-7.3.846/src/version.c 2013-03-07 13:32:03.000000000 +0100
--- src/version.c 2013-03-07 14:49:57.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 847,
/**/
--
"Space is big. Really big. You just won't believe how vastly hugely mind-
bogglingly big it is. I mean, you may think it's a long way down the
road to the chemist, but that's just peanuts to space."
-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
/// 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 ///

153
7.3.848 Normal file
View File

@ -0,0 +1,153 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.848
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.3.848
Problem: Can't build with Ruby 2.0 when using MinGW x64 or MSVC10.
Solution: Fix it. Also detect RUBY_PLATFORM and RUBY_INSTALL_NAME for x64.
(Ken Takata)
Files: src/Make_cyg.mak, src/Make_ming.mak, src/if_ruby.c
*** ../vim-7.3.847/src/Make_cyg.mak 2013-02-26 14:56:24.000000000 +0100
--- src/Make_cyg.mak 2013-03-07 14:56:29.000000000 +0100
***************
*** 229,246 ****
--- 229,254 ----
ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),)
RUBY_PLATFORM = i386-mingw32
else
+ ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),)
+ RUBY_PLATFORM = x64-mingw32
+ else
RUBY_PLATFORM = i386-mswin32
endif
endif
endif
+ endif
ifndef RUBY_INSTALL_NAME
ifeq ($(RUBY_VER), 16)
RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
else
+ ifeq ($(ARCH),x86-64)
+ RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER)
+ else
RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER)
endif
endif
+ endif
ifeq (19, $(word 1,$(sort 19 $(RUBY_VER))))
RUBY_19_OR_LATER = 1
*** ../vim-7.3.847/src/Make_ming.mak 2013-02-26 14:56:24.000000000 +0100
--- src/Make_ming.mak 2013-03-07 14:56:29.000000000 +0100
***************
*** 288,305 ****
--- 288,313 ----
ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),)
RUBY_PLATFORM = i386-mingw32
else
+ ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),)
+ RUBY_PLATFORM = x64-mingw32
+ else
RUBY_PLATFORM = i386-mswin32
endif
endif
endif
+ endif
ifndef RUBY_INSTALL_NAME
ifeq ($(RUBY_VER), 16)
RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
else
+ ifeq ($(ARCH),x86-64)
+ RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER)
+ else
RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER)
endif
endif
+ endif
ifeq (19, $(word 1,$(sort 19 $(RUBY_VER))))
RUBY_19_OR_LATER = 1
*** ../vim-7.3.847/src/if_ruby.c 2013-02-26 13:41:31.000000000 +0100
--- src/if_ruby.c 2013-03-07 14:56:29.000000000 +0100
***************
*** 39,44 ****
--- 39,47 ----
*/
# define rb_cFalseClass (*dll_rb_cFalseClass)
# define rb_cFixnum (*dll_rb_cFixnum)
+ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20
+ # define rb_cFloat (*dll_rb_cFloat)
+ # endif
# define rb_cNilClass (*dll_rb_cNilClass)
# define rb_cSymbol (*dll_rb_cSymbol)
# define rb_cTrueClass (*dll_rb_cTrueClass)
***************
*** 249,254 ****
--- 252,260 ----
static VALUE (*dll_rb_assoc_new) (VALUE, VALUE);
VALUE *dll_rb_cFalseClass;
VALUE *dll_rb_cFixnum;
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20
+ VALUE *dll_rb_cFloat;
+ #endif
VALUE *dll_rb_cNilClass;
static VALUE *dll_rb_cObject;
VALUE *dll_rb_cSymbol;
***************
*** 352,358 ****
{
return dll_rb_float_new(d);
}
! unsigned long rb_num2ulong(VALUE x)
{
return (long)RSHIFT((SIGNED_VALUE)(x),1);
}
--- 358,364 ----
{
return dll_rb_float_new(d);
}
! VALUE rb_num2ulong(VALUE x)
{
return (long)RSHIFT((SIGNED_VALUE)(x),1);
}
***************
*** 373,378 ****
--- 379,387 ----
{"rb_assoc_new", (RUBY_PROC*)&dll_rb_assoc_new},
{"rb_cFalseClass", (RUBY_PROC*)&dll_rb_cFalseClass},
{"rb_cFixnum", (RUBY_PROC*)&dll_rb_cFixnum},
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20
+ {"rb_cFloat", (RUBY_PROC*)&dll_rb_cFloat},
+ #endif
{"rb_cNilClass", (RUBY_PROC*)&dll_rb_cNilClass},
{"rb_cObject", (RUBY_PROC*)&dll_rb_cObject},
{"rb_cSymbol", (RUBY_PROC*)&dll_rb_cSymbol},
*** ../vim-7.3.847/src/version.c 2013-03-07 14:50:30.000000000 +0100
--- src/version.c 2013-03-07 14:57:03.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 848,
/**/
--
`The Guide says there is an art to flying,' said Ford, `or at least a
knack. The knack lies in learning how to throw yourself at the ground
and miss.' He smiled weakly.
-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
/// 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 ///

55
7.3.849 Normal file
View File

@ -0,0 +1,55 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.849
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.3.849
Problem: ":g//" gives "Pattern not found error" with E486. Should not use
the error number, it's not a regular error message.
Solution: Use a normal message. (David Bürgin)
Files: src/ex_cmds.c
*** ../vim-7.3.848/src/ex_cmds.c 2013-02-06 18:23:58.000000000 +0100
--- src/ex_cmds.c 2013-03-07 16:05:49.000000000 +0100
***************
*** 5411,5417 ****
if (type == 'v')
smsg((char_u *)_("Pattern found in every line: %s"), pat);
else
! smsg((char_u *)_(e_patnotf2), pat);
}
else
global_exe(cmd);
--- 5411,5417 ----
if (type == 'v')
smsg((char_u *)_("Pattern found in every line: %s"), pat);
else
! smsg((char_u *)_("Pattern not found: %s"), pat);
}
else
global_exe(cmd);
*** ../vim-7.3.848/src/version.c 2013-03-07 15:16:16.000000000 +0100
--- src/version.c 2013-03-07 16:03:57.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 849,
/**/
--
Apparently, 1 in 5 people in the world are Chinese. And there are 5
people in my family, so it must be one of them. It's either my mum
or my dad. Or my older brother Colin. Or my younger brother
Ho-Cha-Chu. But I think it's Colin.
/// 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 ///

82
7.3.850 Normal file
View File

@ -0,0 +1,82 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.850
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.3.850
Problem: ":vimgrep //" matches everywhere.
Solution: Make it use the previous search pattern. (David Bürgin)
Files: runtime/doc/quickfix.txt, src/quickfix.c
*** ../vim-7.3.849/runtime/doc/quickfix.txt 2010-08-15 21:57:19.000000000 +0200
--- runtime/doc/quickfix.txt 2013-03-07 16:17:39.000000000 +0100
***************
*** 563,568 ****
--- 574,581 ----
'ignorecase' applies. To overrule it put |/\c| in the
pattern to ignore case or |/\C| to match case.
'smartcase' is not used.
+ If {pattern} is empty (e.g. // is specified), the last
+ used search pattern is used. |last-pattern|
When a number is put before the command this is used
as the maximum number of matches to find. Use
*** ../vim-7.3.849/src/quickfix.c 2012-12-12 15:55:16.000000000 +0100
--- src/quickfix.c 2013-03-07 16:21:17.000000000 +0100
***************
*** 3179,3185 ****
EMSG(_(e_invalpat));
goto theend;
}
! regmatch.regprog = vim_regcomp(s, RE_MAGIC);
if (regmatch.regprog == NULL)
goto theend;
regmatch.rmm_ic = p_ic;
--- 3179,3198 ----
EMSG(_(e_invalpat));
goto theend;
}
!
! if (s != NULL && *s == NUL)
! {
! /* Pattern is empty, use last search pattern. */
! if (last_search_pat() == NULL)
! {
! EMSG(_(e_noprevre));
! goto theend;
! }
! regmatch.regprog = vim_regcomp(last_search_pat(), RE_MAGIC);
! }
! else
! regmatch.regprog = vim_regcomp(s, RE_MAGIC);
!
if (regmatch.regprog == NULL)
goto theend;
regmatch.rmm_ic = p_ic;
*** ../vim-7.3.849/src/version.c 2013-03-07 16:08:31.000000000 +0100
--- src/version.c 2013-03-07 16:16:26.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 850,
/**/
--
The technology involved in making anything invisible is so infinitely
complex that nine hundred and ninety-nine billion, nine hundred and
ninety-nine million, nine hundred and ninety-nine thousand, nine hundred
and ninety-nine times out of a trillion it is much simpler and more
effective just to take the thing away and do without it.
-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
/// 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 ///

67
7.3.851 Normal file
View File

@ -0,0 +1,67 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.851
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.3.851
Problem: Using an empty pattern with :sort silently continues when there is
no previous search pattern.
Solution: Give an error message.
Files: src/ex_cmds.c
*** ../vim-7.3.850/src/ex_cmds.c 2013-03-07 16:08:31.000000000 +0100
--- src/ex_cmds.c 2013-03-07 16:25:28.000000000 +0100
***************
*** 415,422 ****
}
*s = NUL;
/* Use last search pattern if sort pattern is empty. */
! if (s == p + 1 && last_search_pat() != NULL)
regmatch.regprog = vim_regcomp(last_search_pat(), RE_MAGIC);
else
regmatch.regprog = vim_regcomp(p + 1, RE_MAGIC);
if (regmatch.regprog == NULL)
--- 415,429 ----
}
*s = NUL;
/* Use last search pattern if sort pattern is empty. */
! if (s == p + 1)
! {
! if (last_search_pat() == NULL)
! {
! EMSG(_(e_noprevre));
! goto sortend;
! }
regmatch.regprog = vim_regcomp(last_search_pat(), RE_MAGIC);
+ }
else
regmatch.regprog = vim_regcomp(p + 1, RE_MAGIC);
if (regmatch.regprog == NULL)
*** ../vim-7.3.850/src/version.c 2013-03-07 16:32:49.000000000 +0100
--- src/version.c 2013-03-07 16:38:49.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 851,
/**/
--
This planet has -- or rather had -- a problem, which was this: most
of the people living on it were unhappy for pretty much of the time.
Many solutions were suggested for this problem, but most of these
were largely concerned with the movements of small green pieces of
paper, which is odd because on the whole it wasn't the small green
pieces of paper that were unhappy.
-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
/// 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 ///

124
7.3.852 Normal file
View File

@ -0,0 +1,124 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.852
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.3.852
Problem: system() breaks clipboard text. (Yukihiro Nakadaira)
Solution: Use Xutf8TextPropertyToTextList(). (Christian Brabandt)
Also do not put the text in the clip buffer if conversion fails.
Files: src/ui.c, src/ops.c
*** ../vim-7.3.851/src/ui.c 2012-10-21 00:58:34.000000000 +0200
--- src/ui.c 2013-03-07 17:30:37.000000000 +0100
***************
*** 2119,2125 ****
text_prop.encoding = *type;
text_prop.format = *format;
text_prop.nitems = len;
! status = XmbTextPropertyToTextList(X_DISPLAY, &text_prop,
&text_list, &n_text);
if (status != Success || n_text < 1)
{
--- 2119,2131 ----
text_prop.encoding = *type;
text_prop.format = *format;
text_prop.nitems = len;
! #ifdef FEAT_MBYTE
! if (*type == utf8_atom)
! status = Xutf8TextPropertyToTextList(X_DISPLAY, &text_prop,
! &text_list, &n_text);
! else
! #endif
! status = XmbTextPropertyToTextList(X_DISPLAY, &text_prop,
&text_list, &n_text);
if (status != Success || n_text < 1)
{
*** ../vim-7.3.851/src/ops.c 2012-12-12 16:11:28.000000000 +0100
--- src/ops.c 2013-03-07 17:55:59.000000000 +0100
***************
*** 5828,5833 ****
--- 5828,5835 ----
&& len < 1024*1024 && len > 0)
{
#ifdef FEAT_MBYTE
+ int ok = TRUE;
+
/* The CUT_BUFFER0 is supposed to always contain latin1. Convert from
* 'enc' when it is a multi-byte encoding. When 'enc' is an 8-bit
* encoding conversion usually doesn't work, so keep the text as-is.
***************
*** 5842,5847 ****
--- 5844,5850 ----
int intlen = len;
char_u *conv_str;
+ vc.vc_fail = TRUE;
conv_str = string_convert(&vc, str, &intlen);
len = intlen;
if (conv_str != NULL)
***************
*** 5849,5860 ****
vim_free(str);
str = conv_str;
}
convert_setup(&vc, NULL, NULL);
}
}
#endif
! XStoreBuffer(dpy, (char *)str, (int)len, 0);
! XFlush(dpy);
}
vim_free(str);
--- 5852,5877 ----
vim_free(str);
str = conv_str;
}
+ else
+ {
+ ok = FALSE;
+ }
convert_setup(&vc, NULL, NULL);
}
+ else
+ {
+ ok = FALSE;
+ }
}
+
+ /* Do not store the string if conversion failed. Better to use any
+ * other selection than garbled text. */
+ if (ok)
#endif
! {
! XStoreBuffer(dpy, (char *)str, (int)len, 0);
! XFlush(dpy);
! }
}
vim_free(str);
*** ../vim-7.3.851/src/version.c 2013-03-07 16:41:26.000000000 +0100
--- src/version.c 2013-03-07 18:01:08.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 852,
/**/
--
Tips for aliens in New York: Land anywhere. Central Park, anywhere.
No one will care or indeed even notice.
-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
/// 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 ///

96
7.3.853 Normal file
View File

@ -0,0 +1,96 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.853
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.3.853
Problem: Using "ra" in multiple lines on multi-byte characters leaves a few
characters not replaced.
Solution: Adjust the end column only in the last line. (Yasuhiro Matsumoto)
Files: src/testdir/test69.in, src/testdir/test69.ok, src/ops.c
*** ../vim-7.3.852/src/testdir/test69.in 2013-01-17 17:01:57.000000000 +0100
--- src/testdir/test69.in 2013-03-07 18:30:50.000000000 +0100
***************
*** 1,5 ****
--- 1,6 ----
Test for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
+ And test "ra" on multi-byte characters.
STARTTEST
:so mbyte.vim
***************
*** 144,149 ****
--- 145,159 ----
two three four
}
STARTTEST
+ /^ra test
+ jVjra
+ ENDTEST
+
+ ra test
+ bb
+ b
+
+ STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d
:1;/^Results/,$wq! test.out
ENDTEST
*** ../vim-7.3.852/src/testdir/test69.ok 2013-01-17 17:01:57.000000000 +0100
--- src/testdir/test69.ok 2013-03-07 18:31:32.000000000 +0100
***************
*** 144,146 ****
--- 144,151 ----
{
four
}
+
+ ra test
+ aaaa
+ aaa
+
*** ../vim-7.3.852/src/ops.c 2013-03-07 18:02:27.000000000 +0100
--- src/ops.c 2013-03-07 18:35:01.000000000 +0100
***************
*** 2194,2200 ****
{
/* This is slow, but it handles replacing a single-byte
* with a multi-byte and the other way around. */
! oap->end.col += (*mb_char2len)(c) - (*mb_char2len)(n);
n = State;
State = REPLACE;
ins_char(c);
--- 2194,2201 ----
{
/* This is slow, but it handles replacing a single-byte
* with a multi-byte and the other way around. */
! if (curwin->w_cursor.lnum == oap->end.lnum)
! oap->end.col += (*mb_char2len)(c) - (*mb_char2len)(n);
n = State;
State = REPLACE;
ins_char(c);
*** ../vim-7.3.852/src/version.c 2013-03-07 18:02:27.000000000 +0100
--- src/version.c 2013-03-07 18:36:46.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 853,
/**/
--
What a wonderfully exciting cough! Do you mind if I join you?
-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
/// 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 ///

49
7.3.854 Normal file
View File

@ -0,0 +1,49 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.854
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.3.854
Problem: After using backspace in insert mode completion, CTRL-N and CTRL-P
do not highlight the right entry. (Olivier Teuliere)
Solution: Set the current item to the shown item after using backspace.
Files: src/edit.c
*** ../vim-7.3.853/src/edit.c 2013-02-26 13:30:28.000000000 +0100
--- src/edit.c 2013-03-07 19:31:46.000000000 +0100
***************
*** 3380,3385 ****
--- 3380,3388 ----
if (compl_leader != NULL)
{
ins_compl_new_leader();
+ if (compl_shown_match != NULL)
+ /* Make sure current match is not a hidden item. */
+ compl_curr_match = compl_shown_match;
return NUL;
}
return K_BS;
*** ../vim-7.3.853/src/version.c 2013-03-07 18:50:52.000000000 +0100
--- src/version.c 2013-03-07 19:34:32.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 854,
/**/
--
If you put 7 of the most talented OSS developers in a room for a week
and asked them to fix a bug in a spreadsheet program, in 1 week
you'd have 2 new mail readers and a text-based web browser.
/// 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 ///

69
7.3.855 Normal file
View File

@ -0,0 +1,69 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.855
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.3.855
Problem: Compiler warnings.
Solution: Add type casts. (Mike Williams)
Files: src/misc1.c
*** ../vim-7.3.854/src/misc1.c 2013-03-07 13:13:45.000000000 +0100
--- src/misc1.c 2013-03-13 16:58:12.000000000 +0100
***************
*** 5468,5474 ****
for (i = 0; i < (int)(sizeof(skip) / sizeof(char *)); ++i)
{
! l = strlen(skip[i]);
if (cin_starts_with(s, skip[i]))
{
s = cin_skipcomment(s + l);
--- 5468,5474 ----
for (i = 0; i < (int)(sizeof(skip) / sizeof(char *)); ++i)
{
! l = (int)strlen(skip[i]);
if (cin_starts_with(s, skip[i]))
{
s = cin_skipcomment(s + l);
***************
*** 6430,6436 ****
char_u *s;
char *word;
{
! int l = STRLEN(word);
return (STRNCMP(s, word, l) == 0 && !vim_isIDc(s[l]));
}
--- 6430,6436 ----
char_u *s;
char *word;
{
! int l = (int)STRLEN(word);
return (STRNCMP(s, word, l) == 0 && !vim_isIDc(s[l]));
}
*** ../vim-7.3.854/src/version.c 2013-03-07 19:38:49.000000000 +0100
--- src/version.c 2013-03-13 16:59:02.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 855,
/**/
--
George: "I just got a new set of golf clubs for my wife!"
John: "Great trade!"
/// 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 ///

311
7.3.856 Normal file
View File

@ -0,0 +1,311 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.856
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.3.856
Problem: When calling system() multi-byte clipboard contents is garbled.
Solution: Save and restore the clipboard contents. (Yukihiro Nakadaira)
Files: src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, src/ops.c,
src/proto/ops.pro, src/os_unix.c, src/proto/ui.pro, src/ui.c
*** ../vim-7.3.855/src/gui_gtk_x11.c 2013-02-14 22:11:31.000000000 +0100
--- src/gui_gtk_x11.c 2013-03-13 17:28:00.000000000 +0100
***************
*** 5674,5685 ****
void
clip_mch_lose_selection(VimClipboard *cbd UNUSED)
{
! /* WEIRD: when using NULL to actually disown the selection, we lose the
! * selection the first time we own it. */
! /*
! gtk_selection_owner_set(NULL, cbd->gtk_sel_atom, (guint32)GDK_CURRENT_TIME);
gui_mch_update();
- */
}
/*
--- 5674,5681 ----
void
clip_mch_lose_selection(VimClipboard *cbd UNUSED)
{
! gtk_selection_owner_set(NULL, cbd->gtk_sel_atom, gui.event_time);
gui_mch_update();
}
/*
***************
*** 5705,5710 ****
--- 5701,5712 ----
{
}
+ int
+ clip_gtk_owner_exists(VimClipboard *cbd)
+ {
+ return gdk_selection_owner_get(cbd->gtk_sel_atom) != NULL;
+ }
+
#if defined(FEAT_MENU) || defined(PROTO)
/*
*** ../vim-7.3.855/src/proto/gui_gtk_x11.pro 2012-05-18 17:03:14.000000000 +0200
--- src/proto/gui_gtk_x11.pro 2013-03-13 17:35:17.000000000 +0100
***************
*** 59,64 ****
--- 59,65 ----
void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
int clip_mch_own_selection __ARGS((VimClipboard *cbd));
void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+ int clip_gtk_owner_exists __ARGS((VimClipboard *cbd));
void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
void gui_mch_draw_menubar __ARGS((void));
*** ../vim-7.3.855/src/ops.c 2013-03-07 18:50:52.000000000 +0100
--- src/ops.c 2013-03-13 17:30:50.000000000 +0100
***************
*** 1017,1022 ****
--- 1017,1035 ----
may_set_selection();
# endif
}
+
+ void
+ free_register(reg)
+ void *reg;
+ {
+ struct yankreg tmp;
+
+ tmp = *y_current;
+ *y_current = *(struct yankreg *)reg;
+ free_yank_all();
+ vim_free(reg);
+ *y_current = tmp;
+ }
#endif
#if defined(FEAT_MOUSE) || defined(PROTO)
*** ../vim-7.3.855/src/proto/ops.pro 2012-06-06 16:12:54.000000000 +0200
--- src/proto/ops.pro 2013-03-13 17:35:04.000000000 +0100
***************
*** 15,20 ****
--- 15,21 ----
int may_get_selection __ARGS((int regname));
void *get_register __ARGS((int name, int copy));
void put_register __ARGS((int name, void *reg));
+ void free_register __ARGS((void *reg));
int yank_register_mline __ARGS((int regname));
int do_record __ARGS((int c));
int do_execreg __ARGS((int regname, int colon, int addcr, int silent));
*** ../vim-7.3.855/src/os_unix.c 2013-02-26 14:56:24.000000000 +0100
--- src/os_unix.c 2013-03-13 17:33:00.000000000 +0100
***************
*** 1138,1143 ****
--- 1138,1148 ----
# if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
static void loose_clipboard __ARGS((void));
+ static void save_clipboard __ARGS((void));
+ static void restore_clipboard __ARGS((void));
+
+ static void *clip_star_save = NULL;
+ static void *clip_plus_save = NULL;
/*
* Called when Vim is going to sleep or execute a shell command.
***************
*** 1158,1163 ****
--- 1163,1204 ----
XFlush(x11_display);
}
}
+
+ /*
+ * Save clipboard text to restore later.
+ */
+ static void
+ save_clipboard()
+ {
+ if (clip_star.owned)
+ clip_star_save = get_register('*', TRUE);
+ if (clip_plus.owned)
+ clip_plus_save = get_register('+', TRUE);
+ }
+
+ /*
+ * Restore clipboard text if no one own the X selection.
+ */
+ static void
+ restore_clipboard()
+ {
+ if (clip_star_save != NULL)
+ {
+ if (!clip_gen_owner_exists(&clip_star))
+ put_register('*', clip_star_save);
+ else
+ free_register(clip_star_save);
+ clip_star_save = NULL;
+ }
+ if (clip_plus_save != NULL)
+ {
+ if (!clip_gen_owner_exists(&clip_plus))
+ put_register('+', clip_plus_save);
+ else
+ free_register(clip_plus_save);
+ clip_plus_save = NULL;
+ }
+ }
#endif
/*
***************
*** 3844,3849 ****
--- 3885,3891 ----
settmode(TMODE_COOK); /* set to normal mode */
# if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
+ save_clipboard();
loose_clipboard();
# endif
***************
*** 3917,3922 ****
--- 3959,3967 ----
# ifdef FEAT_TITLE
resettitle();
# endif
+ # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
+ restore_clipboard();
+ # endif
return x;
#else /* USE_SYSTEM */ /* don't use system(), use fork()/exec() */
***************
*** 3965,3970 ****
--- 4010,4018 ----
settmode(TMODE_COOK); /* set to normal mode */
# if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
+ /* Disown the clipboard, because is the executed command tries to obtain a
+ * selection and we own it we get a deadlock. */
+ save_clipboard();
loose_clipboard();
# endif
***************
*** 4836,4841 ****
--- 4884,4892 ----
# ifdef FEAT_TITLE
resettitle();
# endif
+ # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
+ restore_clipboard();
+ # endif
vim_free(newcmd);
return retval;
*** ../vim-7.3.855/src/proto/ui.pro 2012-07-10 16:49:08.000000000 +0200
--- src/proto/ui.pro 2013-03-13 17:35:08.000000000 +0100
***************
*** 29,34 ****
--- 29,35 ----
void clip_gen_lose_selection __ARGS((VimClipboard *cbd));
void clip_gen_set_selection __ARGS((VimClipboard *cbd));
void clip_gen_request_selection __ARGS((VimClipboard *cbd));
+ int clip_gen_owner_exists __ARGS((VimClipboard *cbd));
int vim_is_input_buf_full __ARGS((void));
int vim_is_input_buf_empty __ARGS((void));
int vim_free_in_input_buf __ARGS((void));
***************
*** 52,57 ****
--- 53,59 ----
void clip_x11_lose_selection __ARGS((Widget myShell, VimClipboard *cbd));
int clip_x11_own_selection __ARGS((Widget myShell, VimClipboard *cbd));
void clip_x11_set_selection __ARGS((VimClipboard *cbd));
+ int clip_x11_owner_exists __ARGS((VimClipboard *cbd));
void yank_cut_buffer0 __ARGS((Display *dpy, VimClipboard *cbd));
int jump_to_mouse __ARGS((int flags, int *inclusive, int which_button));
int mouse_comp_pos __ARGS((win_T *win, int *rowp, int *colp, linenr_T *lnump));
*** ../vim-7.3.855/src/ui.c 2013-03-07 18:02:27.000000000 +0100
--- src/ui.c 2013-03-13 17:31:31.000000000 +0100
***************
*** 1456,1461 ****
--- 1456,1476 ----
#endif
}
+ int
+ clip_gen_owner_exists(cbd)
+ VimClipboard *cbd;
+ {
+ #ifdef FEAT_XCLIPBOARD
+ # ifdef FEAT_GUI_GTK
+ if (gui.in_use)
+ return clip_gtk_owner_exists(cbd);
+ else
+ # endif
+ return clip_x11_owner_exists(cbd);
+ #endif
+ return TRUE;
+ }
+
#endif /* FEAT_CLIPBOARD */
/*****************************************************************************
***************
*** 2398,2404 ****
Widget myShell;
VimClipboard *cbd;
{
! XtDisownSelection(myShell, cbd->sel_atom, CurrentTime);
}
int
--- 2413,2420 ----
Widget myShell;
VimClipboard *cbd;
{
! XtDisownSelection(myShell, cbd->sel_atom,
! XtLastTimestampProcessed(XtDisplay(myShell)));
}
int
***************
*** 2440,2445 ****
--- 2456,2468 ----
VimClipboard *cbd UNUSED;
{
}
+
+ int
+ clip_x11_owner_exists(cbd)
+ VimClipboard *cbd;
+ {
+ return XGetSelectionOwner(X_DISPLAY, cbd->sel_atom) != None;
+ }
#endif
#if defined(FEAT_XCLIPBOARD) || defined(FEAT_GUI_X11) \
*** ../vim-7.3.855/src/version.c 2013-03-13 17:01:47.000000000 +0100
--- src/version.c 2013-03-13 17:45:25.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 856,
/**/
--
hundred-and-one symptoms of being an internet addict:
39. You move into a new house and decide to Netscape before you landscape.
/// 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 ///

91
7.3.857 Normal file
View File

@ -0,0 +1,91 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.857
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.3.857
Problem: The QuitPre autocommand event does not trigger for :qa and :wq.
Solution: Trigger the event. (Tatsuro Fujii)
Files: src/ex_docmd.c
*** ../vim-7.3.856/src/ex_docmd.c 2013-02-26 17:21:15.000000000 +0100
--- src/ex_docmd.c 2013-03-13 18:14:56.000000000 +0100
***************
*** 6526,6532 ****
}
#ifdef FEAT_AUTOCMD
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
! /* Refuse to quick when locked or when the buffer in the last window is
* being closed (can only happen in autocommands). */
if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing))
return;
--- 6526,6532 ----
}
#ifdef FEAT_AUTOCMD
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
! /* Refuse to quit when locked or when the buffer in the last window is
* being closed (can only happen in autocommands). */
if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing))
return;
***************
*** 6600,6606 ****
return;
}
#ifdef FEAT_AUTOCMD
! if (curbuf_locked())
return;
#endif
--- 6600,6609 ----
return;
}
#ifdef FEAT_AUTOCMD
! apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
! /* Refuse to quit when locked or when the buffer in the last window is
! * being closed (can only happen in autocommands). */
! if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing))
return;
#endif
***************
*** 6936,6942 ****
return;
}
#ifdef FEAT_AUTOCMD
! if (curbuf_locked())
return;
#endif
--- 6939,6948 ----
return;
}
#ifdef FEAT_AUTOCMD
! apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
! /* Refuse to quit when locked or when the buffer in the last window is
! * being closed (can only happen in autocommands). */
! if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing))
return;
#endif
*** ../vim-7.3.856/src/version.c 2013-03-13 17:50:20.000000000 +0100
--- src/version.c 2013-03-13 18:26:13.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 857,
/**/
--
The future isn't what it used to be.
/// 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 ///

159
7.3.858 Normal file
View File

@ -0,0 +1,159 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.858
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.3.858
Problem: "gv" selects the wrong area after some operators.
Solution: Save and restore the type of selection. (Christian Brabandt)
Files: src/testdir/test66.in, src/testdir/test66.ok, src/normal.c
*** ../vim-7.3.857/src/testdir/test66.in 2010-08-15 21:57:29.000000000 +0200
--- src/testdir/test66.in 2013-03-13 18:42:46.000000000 +0100
***************
*** 3,14 ****
STARTTEST
:so small.vim
/^abcdefgh
4jI j<<11|D
7|a 
7|a 
7|a 4k13|4j<
! :$-4,$w! test.out
:$-4,$s/\s\+//g
4kI j<<
7|a 
--- 3,16 ----
STARTTEST
:so small.vim
+ /^one
+ fe4jRugvr1:'<,'>w! test.out
/^abcdefgh
4jI j<<11|D
7|a 
7|a 
7|a 4k13|4j<
! :$-5,$w >> test.out
:$-4,$s/\s\+//g
4kI j<<
7|a 
***************
*** 18,23 ****
--- 20,31 ----
:qa!
ENDTEST
+ one two three
+ one two three
+ one two three
+ one two three
+ one two three
+
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
*** ../vim-7.3.857/src/testdir/test66.ok 2010-08-15 21:57:29.000000000 +0200
--- src/testdir/test66.ok 2013-03-13 18:42:46.000000000 +0100
***************
*** 1,3 ****
--- 1,9 ----
+ on1 two three
+ on1 two three
+ on1 two three
+ on1 two three
+ on1 two three
+
abcdefghijklmnopqrstuvwxyz
abcdefghij
abc defghijklmnopqrstuvwxyz
*** ../vim-7.3.857/src/normal.c 2013-02-26 13:30:28.000000000 +0100
--- src/normal.c 2013-03-13 18:47:49.000000000 +0100
***************
*** 21,26 ****
--- 21,27 ----
static int resel_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
static linenr_T resel_VIsual_line_count; /* number of lines */
static colnr_T resel_VIsual_vcol; /* nr of cols or end col */
+ static int VIsual_mode_orig = NUL; /* type of Visual mode, that user entered */
static int restart_VIsual_select = 0;
#endif
***************
*** 1594,1599 ****
--- 1595,1605 ----
curbuf->b_visual.vi_start = VIsual;
curbuf->b_visual.vi_end = curwin->w_cursor;
curbuf->b_visual.vi_mode = VIsual_mode;
+ if (VIsual_mode_orig != NUL)
+ {
+ curbuf->b_visual.vi_mode = VIsual_mode_orig;
+ VIsual_mode_orig = NUL;
+ }
curbuf->b_visual.vi_curswant = curwin->w_curswant;
# ifdef FEAT_EVAL
curbuf->b_visual_mode_eval = VIsual_mode;
***************
*** 7230,7235 ****
--- 7236,7242 ----
{
cap->cmdchar = 'c';
cap->nchar = NUL;
+ VIsual_mode_orig = VIsual_mode; /* remember original area for gv */
VIsual_mode = 'V';
nv_operator(cap);
}
***************
*** 7429,7435 ****
--- 7436,7445 ----
if (isupper(cap->cmdchar))
{
if (VIsual_mode != Ctrl_V)
+ {
+ VIsual_mode_orig = VIsual_mode;
VIsual_mode = 'V';
+ }
else if (cap->cmdchar == 'C' || cap->cmdchar == 'D')
curwin->w_curswant = MAXCOL;
}
***************
*** 7449,7455 ****
--- 7459,7468 ----
if (VIsual_active) /* "vs" and "vS" are the same as "vc" */
{
if (cap->cmdchar == 'S')
+ {
+ VIsual_mode_orig = VIsual_mode;
VIsual_mode = 'V';
+ }
cap->cmdchar = 'c';
nv_operator(cap);
}
*** ../vim-7.3.857/src/version.c 2013-03-13 18:30:39.000000000 +0100
--- src/version.c 2013-03-13 18:48:50.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 858,
/**/
--
"Oh, no! NOT the Spanish Inquisition!"
"NOBODY expects the Spanish Inquisition!!!"
-- Monty Python sketch --
"Oh, no! NOT another option!"
"EVERYBODY expects another option!!!"
-- Discussion in vim-dev mailing list --
/// 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 ///

316
7.3.859 Normal file
View File

@ -0,0 +1,316 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.859
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.3.859
Problem: 'ambiwidth' must be set by the user.
Solution: Detects East Asian ambiguous width (UAX #11) state of the terminal
at the start-up time and 'ambiwidth' accordingly. (Hayaki Saito)
Files: src/main.c, src/option.c, src/term.c, src/term.h,
src/proto/term.pro
*** ../vim-7.3.858/src/main.c 2013-01-17 13:59:56.000000000 +0100
--- src/main.c 2013-03-13 19:09:03.000000000 +0100
***************
*** 804,809 ****
--- 804,812 ----
starttermcap(); /* start termcap if not done by wait_return() */
TIME_MSG("start termcap");
+ #if defined(FEAT_TERMRESPONSE) && defined(FEAT_MBYTE)
+ may_req_ambiguous_character_width();
+ #endif
#ifdef FEAT_MOUSE
setmouse(); /* may start using the mouse */
*** ../vim-7.3.858/src/option.c 2013-02-13 15:44:22.000000000 +0100
--- src/option.c 2013-03-13 19:09:03.000000000 +0100
***************
*** 2900,2905 ****
--- 2900,2906 ----
p_term("t_op", T_OP)
p_term("t_RI", T_CRI)
p_term("t_RV", T_CRV)
+ p_term("t_u7", T_U7)
p_term("t_Sb", T_CSB)
p_term("t_Sf", T_CSF)
p_term("t_se", T_SE)
*** ../vim-7.3.858/src/term.c 2013-02-26 14:56:24.000000000 +0100
--- src/term.c 2013-03-13 19:18:22.000000000 +0100
***************
*** 111,116 ****
--- 111,121 ----
# define CRV_SENT 2 /* did send T_CRV, waiting for answer */
# define CRV_GOT 3 /* received T_CRV response */
static int crv_status = CRV_GET;
+ /* Request Cursor position report: */
+ # define U7_GET 1 /* send T_U7 when switched to RAW mode */
+ # define U7_SENT 2 /* did send T_U7, waiting for answer */
+ # define U7_GOT 3 /* received T_U7 response */
+ static int u7_status = U7_GET;
# endif
/*
***************
*** 933,938 ****
--- 938,944 ----
{(int)KS_CWP, IF_EB("\033[3;%d;%dt", ESC_STR "[3;%d;%dt")},
# endif
{(int)KS_CRV, IF_EB("\033[>c", ESC_STR "[>c")},
+ {(int)KS_U7, IF_EB("\033[6n", ESC_STR "[6n")},
{K_UP, IF_EB("\033O*A", ESC_STR "O*A")},
{K_DOWN, IF_EB("\033O*B", ESC_STR "O*B")},
***************
*** 1221,1226 ****
--- 1227,1233 ----
{(int)KS_CWP, "[%dCWP%d]"},
# endif
{(int)KS_CRV, "[CRV]"},
+ {(int)KS_U7, "[U7]"},
{K_UP, "[KU]"},
{K_DOWN, "[KD]"},
{K_LEFT, "[KL]"},
***************
*** 1596,1601 ****
--- 1603,1609 ----
{KS_TS, "ts"}, {KS_FS, "fs"},
{KS_CWP, "WP"}, {KS_CWS, "WS"},
{KS_CSI, "SI"}, {KS_CEI, "EI"},
+ {KS_U7, "u7"},
{(enum SpecialKey)0, NULL}
};
***************
*** 3183,3189 ****
/* May need to check for T_CRV response and termcodes, it
* doesn't work in Cooked mode, an external program may get
* them. */
! if (tmode != TMODE_RAW && crv_status == CRV_SENT)
(void)vpeekc_nomap();
check_for_codes_from_term();
}
--- 3191,3198 ----
/* May need to check for T_CRV response and termcodes, it
* doesn't work in Cooked mode, an external program may get
* them. */
! if (tmode != TMODE_RAW && (crv_status == CRV_SENT
! || u7_status == U7_SENT))
(void)vpeekc_nomap();
check_for_codes_from_term();
}
***************
*** 3245,3251 ****
# endif
{
/* May need to check for T_CRV response. */
! if (crv_status == CRV_SENT)
(void)vpeekc_nomap();
/* Check for termcodes first, otherwise an external program may
* get them. */
--- 3254,3260 ----
# endif
{
/* May need to check for T_CRV response. */
! if (crv_status == CRV_SENT || u7_status == U7_SENT)
(void)vpeekc_nomap();
/* Check for termcodes first, otherwise an external program may
* get them. */
***************
*** 3299,3304 ****
--- 3308,3355 ----
(void)vpeekc_nomap();
}
}
+
+ # if defined(FEAT_MBYTE) || defined(PROTO)
+ /*
+ * Check how the terminal treats ambiguous character width (UAX #11).
+ * First, we move the cursor to (0, 0) and print a test ambiguous character
+ * \u25bd (WHITE DOWN-POINTING TRIANGLE) and query current cursor position.
+ * If the terminal treats \u25bd as single width, the position is (0, 1),
+ * or if it is treated as double width, that will be (0, 2).
+ * This function has the side effect that changes cursor position, so
+ * it must be called immediately after entering termcap mode.
+ */
+ void
+ may_req_ambiguous_character_width()
+ {
+ if (u7_status == U7_GET
+ && cur_tmode == TMODE_RAW
+ && termcap_active
+ && p_ek
+ # ifdef UNIX
+ && isatty(1)
+ && isatty(read_cmd_fd)
+ # endif
+ && *T_U7 != NUL
+ && !option_was_set((char_u *)"ambiwidth"))
+ {
+ char_u buf[16];
+
+ term_windgoto(0, 0);
+ buf[mb_char2bytes(0x25bd, buf)] = 0;
+ out_str(buf);
+ out_str(T_U7);
+ u7_status = U7_SENT;
+ term_windgoto(0, 0);
+ out_str((char_u *)" ");
+ term_windgoto(0, 0);
+ /* check for the characters now, otherwise they might be eaten by
+ * get_keystroke() */
+ out_flush();
+ (void)vpeekc_nomap();
+ }
+ }
+ # endif
#endif
/*
***************
*** 4049,4061 ****
/* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */
|| key_name[0] == KS_URXVT_MOUSE)
{
! /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also
! * eat other possible responses to t_RV, rxvt returns
! * "<Esc>[?1;2c". Also accept CSI instead of <Esc>[.
! * mrxvt has been reported to have "+" in the version. Assume
! * the escape sequence ends with a letter or one of "{|}~". */
! if (*T_CRV != NUL && ((tp[0] == ESC && tp[1] == '[' && len >= 3)
! || (tp[0] == CSI && len >= 2)))
{
j = 0;
extra = 0;
--- 4100,4121 ----
/* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */
|| key_name[0] == KS_URXVT_MOUSE)
{
! /* Check for some responses from terminal start with "<Esc>[" or
! * CSI.
! *
! * - xterm version string: <Esc>[>{x};{vers};{y}c
! * Also eat other possible responses to t_RV, rxvt returns
! * "<Esc>[?1;2c". Also accept CSI instead of <Esc>[.
! * mrxvt has been reported to have "+" in the version. Assume
! * the escape sequence ends with a letter or one of "{|}~".
! *
! * - cursor position report: <Esc>[{row};{col}R
! * The final byte is 'R'. now it is only used for checking for
! * ambiguous-width character state.
! */
! if ((*T_CRV != NUL || *T_U7 != NUL)
! && ((tp[0] == ESC && tp[1] == '[' && len >= 3)
! || (tp[0] == CSI && len >= 2)))
{
j = 0;
extra = 0;
***************
*** 4067,4074 ****
if (i == len)
return -1; /* not enough characters */
/* eat it when at least one digit and ending in 'c' */
! if (i > 2 + (tp[0] != CSI) && tp[i] == 'c')
{
crv_status = CRV_GOT;
--- 4127,4153 ----
if (i == len)
return -1; /* not enough characters */
+ #ifdef FEAT_MBYTE
+ /* eat it when it has 2 arguments and ends in 'R' */
+ if (u7_status == U7_SENT && j == 1 && tp[i] == 'R')
+ {
+ char *p = NULL;
+
+ u7_status = U7_GOT;
+ if (extra == 2)
+ p = "single";
+ else if (extra == 3)
+ p = "double";
+ if (p != NULL)
+ set_option_value((char_u *)"ambw", 0L, (char_u *)p, 0);
+ key_name[0] = (int)KS_EXTRA;
+ key_name[1] = (int)KE_IGNORE;
+ slen = i + 1;
+ }
+ else
+ #endif
/* eat it when at least one digit and ending in 'c' */
! if (*T_CRV != NUL && i > 2 + (tp[0] != CSI) && tp[i] == 'c')
{
crv_status = CRV_GOT;
*** ../vim-7.3.858/src/term.h 2010-08-15 21:57:25.000000000 +0200
--- src/term.h 2013-03-13 19:09:03.000000000 +0100
***************
*** 83,92 ****
#ifdef FEAT_VERTSPLIT
KS_CSV, /* scroll region vertical */
#endif
! KS_OP /* original color pair */
};
! #define KS_LAST KS_OP
/*
* the terminal capabilities are stored in this array
--- 83,93 ----
#ifdef FEAT_VERTSPLIT
KS_CSV, /* scroll region vertical */
#endif
! KS_OP, /* original color pair */
! KS_U7 /* request cursor position */
};
! #define KS_LAST KS_U7
/*
* the terminal capabilities are stored in this array
***************
*** 158,163 ****
--- 159,165 ----
#define T_CEI (term_str(KS_CEI)) /* end insert mode */
#define T_CRV (term_str(KS_CRV)) /* request version string */
#define T_OP (term_str(KS_OP)) /* original color pair */
+ #define T_U7 (term_str(KS_U7)) /* request cursor position */
#define TMODE_COOK 0 /* terminal mode for external cmds and Ex mode */
#define TMODE_SLEEP 1 /* terminal mode for sleeping (cooked but no echo) */
*** ../vim-7.3.858/src/proto/term.pro 2012-02-05 22:05:44.000000000 +0100
--- src/proto/term.pro 2013-03-13 19:09:54.000000000 +0100
***************
*** 34,39 ****
--- 34,40 ----
void starttermcap __ARGS((void));
void stoptermcap __ARGS((void));
void may_req_termresponse __ARGS((void));
+ void may_req_ambiguous_character_width __ARGS((void));
int swapping_screen __ARGS((void));
void setmouse __ARGS((void));
int mouse_has __ARGS((int c));
*** ../vim-7.3.858/src/version.c 2013-03-13 19:02:37.000000000 +0100
--- src/version.c 2013-03-13 19:27:31.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 859,
/**/
--
Microsoft is to software what McDonalds is to gourmet cooking
/// 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 ///

85
7.3.860 Normal file
View File

@ -0,0 +1,85 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.860
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.3.860
Problem: When using --remote-expr try/catch does not work. (Andrey Radev)
Solution: Set emsg_silent instead of emsg_skip.
Files: src/main.c
*** ../vim-7.3.859/src/main.c 2013-03-13 19:29:24.000000000 +0100
--- src/main.c 2013-03-13 19:46:03.000000000 +0100
***************
*** 4025,4032 ****
/*
* Evaluate an expression that the client sent to a string.
- * Handles disabling error messages and disables debugging, otherwise Vim
- * hangs, waiting for "cont" to be typed.
*/
char_u *
eval_client_expr_to_string(expr)
--- 4025,4030 ----
***************
*** 4036,4050 ****
int save_dbl = debug_break_level;
int save_ro = redir_off;
debug_break_level = -1;
redir_off = 0;
! ++emsg_skip;
res = eval_to_string(expr, NULL, TRUE);
debug_break_level = save_dbl;
redir_off = save_ro;
! --emsg_skip;
/* A client can tell us to redraw, but not to display the cursor, so do
* that here. */
--- 4034,4054 ----
int save_dbl = debug_break_level;
int save_ro = redir_off;
+ /* Disable debugging, otherwise Vim hangs, waiting for "cont" to be
+ * typed. */
debug_break_level = -1;
redir_off = 0;
! /* Do not display error message, otherwise Vim hangs, waiting for "cont"
! * to be typed. Do generate errors so that try/catch works. */
! ++emsg_silent;
res = eval_to_string(expr, NULL, TRUE);
debug_break_level = save_dbl;
redir_off = save_ro;
! --emsg_silent;
! if (emsg_silent < 0)
! emsg_silent = 0;
/* A client can tell us to redraw, but not to display the cursor, so do
* that here. */
*** ../vim-7.3.859/src/version.c 2013-03-13 19:29:24.000000000 +0100
--- src/version.c 2013-03-13 20:09:47.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 860,
/**/
--
hundred-and-one symptoms of being an internet addict:
42. Your virtual girlfriend finds a new net sweetheart with a larger bandwidth.
/// 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 ///

165
7.3.861 Normal file
View File

@ -0,0 +1,165 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.861
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.3.861
Problem: ":setlocal number" clears global value of 'relativenumber'.
Solution: Do it properly. (Markus Heidelberg)
Files: src/testdir/test89.in, src/testdir/test89.ok, src/option.c
*** ../vim-7.3.860/src/testdir/test89.in 2013-02-14 20:10:28.000000000 +0100
--- src/testdir/test89.in 2013-03-13 20:27:10.000000000 +0100
***************
*** 10,15 ****
--- 10,52 ----
:$put ='results:'
:$put a
:$put b
+ :"
+ :set nonu nornu
+ :setglobal nu
+ :setlocal rnu
+ :redir @c | setglobal nu? | redir END
+ :set nonu nornu
+ :setglobal rnu
+ :setlocal nu
+ :redir @d | setglobal rnu? | redir END
+ :$put =':setlocal must NOT reset the other global value'
+ :$put c
+ :$put d
+ :"
+ :set nonu nornu
+ :setglobal nu
+ :setglobal rnu
+ :redir @e | setglobal nu? | redir END
+ :set nonu nornu
+ :setglobal rnu
+ :setglobal nu
+ :redir @f | setglobal rnu? | redir END
+ :$put =':setglobal MUST reset the other global value'
+ :$put e
+ :$put f
+ :"
+ :set nonu nornu
+ :set nu
+ :set rnu
+ :redir @g | setglobal nu? | redir END
+ :set nonu nornu
+ :set rnu
+ :set nu
+ :redir @h | setglobal rnu? | redir END
+ :$put =':set MUST reset the other global value'
+ :$put g
+ :$put h
+ :"
:/^results/,$w! test.out
:q!
ENDTEST
*** ../vim-7.3.860/src/testdir/test89.ok 2013-02-13 15:44:22.000000000 +0100
--- src/testdir/test89.ok 2013-03-13 20:27:10.000000000 +0100
***************
*** 5,7 ****
--- 5,22 ----
nonumber
relativenumber
+ :setlocal must NOT reset the other global value
+
+ number
+
+ relativenumber
+ :setglobal MUST reset the other global value
+
+ nonumber
+
+ norelativenumber
+ :set MUST reset the other global value
+
+ nonumber
+
+ norelativenumber
*** ../vim-7.3.860/src/option.c 2013-03-13 19:29:24.000000000 +0100
--- src/option.c 2013-03-13 20:35:20.000000000 +0100
***************
*** 7631,7652 ****
}
#endif
! /* 'number', 'relativenumber' */
! else if ((int *)varp == &curwin->w_p_nu
! || (int *)varp == &curwin->w_p_rnu)
{
! /* If 'number' is set, reset 'relativenumber'. */
! /* If 'relativenumber' is set, reset 'number'. */
! if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
! {
! curwin->w_p_rnu = FALSE;
curwin->w_allbuf_opt.wo_rnu = FALSE;
! }
! if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu)
! {
! curwin->w_p_nu = FALSE;
curwin->w_allbuf_opt.wo_nu = FALSE;
! }
}
else if ((int *)varp == &curbuf->b_p_ro)
--- 7631,7663 ----
}
#endif
! /* If 'number' is set, reset 'relativenumber'. */
! /* If 'relativenumber' is set, reset 'number'. */
! else if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
{
! curwin->w_p_rnu = FALSE;
!
! /* Only reset the global value if the own value is set globally. */
! if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0))
curwin->w_allbuf_opt.wo_rnu = FALSE;
! }
! else if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu)
! {
! curwin->w_p_nu = FALSE;
!
! /* Only reset the global value if the own value is set globally. */
! if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0))
curwin->w_allbuf_opt.wo_nu = FALSE;
! }
! else if ((int *)varp == &curwin->w_allbuf_opt.wo_nu
! && curwin->w_allbuf_opt.wo_nu)
! {
! curwin->w_allbuf_opt.wo_rnu = FALSE;
! }
! else if ((int *)varp == &curwin->w_allbuf_opt.wo_rnu
! && curwin->w_allbuf_opt.wo_rnu)
! {
! curwin->w_allbuf_opt.wo_nu = FALSE;
}
else if ((int *)varp == &curbuf->b_p_ro)
*** ../vim-7.3.860/src/version.c 2013-03-13 20:23:17.000000000 +0100
--- src/version.c 2013-03-13 20:42:09.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 861,
/**/
--
hundred-and-one symptoms of being an internet addict:
43. You tell the kids they can't use the computer because "Daddy's got work to
do" and you don't even have a job.
/// 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 ///

215
7.3.862 Normal file
View File

@ -0,0 +1,215 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.862
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.3.862
Problem: Dragging the status line can be slow.
Solution: Look ahead and drop the drag event if there is a next one.
Files: src/eval.c, src/misc1.c, src/proto/misc1.pro, src/normal.c
*** ../vim-7.3.861/src/eval.c 2013-02-26 21:43:28.000000000 +0100
--- src/eval.c 2013-03-16 14:02:36.000000000 +0100
***************
*** 11238,11264 ****
rettv->vval.v_string = vim_strsave(temp);
#ifdef FEAT_MOUSE
! if (n == K_LEFTMOUSE
! || n == K_LEFTMOUSE_NM
! || n == K_LEFTDRAG
! || n == K_LEFTRELEASE
! || n == K_LEFTRELEASE_NM
! || n == K_MIDDLEMOUSE
! || n == K_MIDDLEDRAG
! || n == K_MIDDLERELEASE
! || n == K_RIGHTMOUSE
! || n == K_RIGHTDRAG
! || n == K_RIGHTRELEASE
! || n == K_X1MOUSE
! || n == K_X1DRAG
! || n == K_X1RELEASE
! || n == K_X2MOUSE
! || n == K_X2DRAG
! || n == K_X2RELEASE
! || n == K_MOUSELEFT
! || n == K_MOUSERIGHT
! || n == K_MOUSEDOWN
! || n == K_MOUSEUP)
{
int row = mouse_row;
int col = mouse_col;
--- 11238,11244 ----
rettv->vval.v_string = vim_strsave(temp);
#ifdef FEAT_MOUSE
! if (is_mouse_key(n))
{
int row = mouse_row;
int col = mouse_col;
*** ../vim-7.3.861/src/misc1.c 2013-03-13 17:01:47.000000000 +0100
--- src/misc1.c 2013-03-16 14:08:05.000000000 +0100
***************
*** 3288,3293 ****
--- 3288,3325 ----
return r;
}
+ #if defined(FEAT_MOUSE) || defined(PROTO)
+ /*
+ * Return TRUE if "c" is a mouse key.
+ */
+ int
+ is_mouse_key(c)
+ int c;
+ {
+ return c == K_LEFTMOUSE
+ || c == K_LEFTMOUSE_NM
+ || c == K_LEFTDRAG
+ || c == K_LEFTRELEASE
+ || c == K_LEFTRELEASE_NM
+ || c == K_MIDDLEMOUSE
+ || c == K_MIDDLEDRAG
+ || c == K_MIDDLERELEASE
+ || c == K_RIGHTMOUSE
+ || c == K_RIGHTDRAG
+ || c == K_RIGHTRELEASE
+ || c == K_MOUSEDOWN
+ || c == K_MOUSEUP
+ || c == K_MOUSELEFT
+ || c == K_MOUSERIGHT
+ || c == K_X1MOUSE
+ || c == K_X1DRAG
+ || c == K_X1RELEASE
+ || c == K_X2MOUSE
+ || c == K_X2DRAG
+ || c == K_X2RELEASE;
+ }
+ #endif
+
/*
* Get a key stroke directly from the user.
* Ignores mouse clicks and scrollbar events, except a click for the left
***************
*** 3373,3403 ****
n = TO_SPECIAL(buf[1], buf[2]);
if (buf[1] == KS_MODIFIER
|| n == K_IGNORE
! #ifdef FEAT_MOUSE
! || n == K_LEFTMOUSE_NM
! || n == K_LEFTDRAG
! || n == K_LEFTRELEASE
! || n == K_LEFTRELEASE_NM
! || n == K_MIDDLEMOUSE
! || n == K_MIDDLEDRAG
! || n == K_MIDDLERELEASE
! || n == K_RIGHTMOUSE
! || n == K_RIGHTDRAG
! || n == K_RIGHTRELEASE
! || n == K_MOUSEDOWN
! || n == K_MOUSEUP
! || n == K_MOUSELEFT
! || n == K_MOUSERIGHT
! || n == K_X1MOUSE
! || n == K_X1DRAG
! || n == K_X1RELEASE
! || n == K_X2MOUSE
! || n == K_X2DRAG
! || n == K_X2RELEASE
! # ifdef FEAT_GUI
|| n == K_VER_SCROLLBAR
|| n == K_HOR_SCROLLBAR
- # endif
#endif
)
{
--- 3405,3414 ----
n = TO_SPECIAL(buf[1], buf[2]);
if (buf[1] == KS_MODIFIER
|| n == K_IGNORE
! || (is_mouse_key(n) && n != K_LEFTMOUSE)
! #ifdef FEAT_GUI
|| n == K_VER_SCROLLBAR
|| n == K_HOR_SCROLLBAR
#endif
)
{
*** ../vim-7.3.861/src/proto/misc1.pro 2012-11-20 16:56:49.000000000 +0100
--- src/proto/misc1.pro 2013-03-16 14:02:33.000000000 +0100
***************
*** 42,47 ****
--- 42,48 ----
void check_status __ARGS((buf_T *buf));
void change_warning __ARGS((int col));
int ask_yesno __ARGS((char_u *str, int direct));
+ int is_mouse_key __ARGS((int c));
int get_keystroke __ARGS((void));
int get_number __ARGS((int colon, int *mouse_used));
int prompt_for_number __ARGS((int *mouse_used));
*** ../vim-7.3.861/src/normal.c 2013-03-13 19:02:37.000000000 +0100
--- src/normal.c 2013-03-16 14:09:34.000000000 +0100
***************
*** 2443,2449 ****
return FALSE;
}
! which_button = get_mouse_button(KEY2TERMCAP1(c), &is_click, &is_drag);
#ifdef FEAT_MOUSESHAPE
/* May have stopped dragging the status or separator line. The pointer is
--- 2443,2473 ----
return FALSE;
}
! for (;;)
! {
! which_button = get_mouse_button(KEY2TERMCAP1(c), &is_click, &is_drag);
! if (is_drag)
! {
! /* If the next character is the same mouse event then use that
! * one. Speeds up dragging the status line. */
! if (vpeekc() != NUL)
! {
! int nc;
! int save_mouse_row = mouse_row;
! int save_mouse_col = mouse_col;
!
! /* Need to get the character, peeking doesn't get the actual
! * one. */
! nc = safe_vgetc();
! if (c == nc)
! continue;
! vungetc(nc);
! mouse_row = save_mouse_row;
! mouse_col = save_mouse_col;
! }
! }
! break;
! }
#ifdef FEAT_MOUSESHAPE
/* May have stopped dragging the status or separator line. The pointer is
*** ../vim-7.3.861/src/version.c 2013-03-13 20:42:28.000000000 +0100
--- src/version.c 2013-03-16 14:18:36.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 862,
/**/
--
hundred-and-one symptoms of being an internet addict:
53. To find out what time it is, you send yourself an e-mail and check the
"Date:" field.
/// 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 ///

91
7.3.863 Normal file
View File

@ -0,0 +1,91 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.863
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.3.863 (after 7.3.859)
Problem: Problem with 'ambiwidth' detection for ANSI terminal.
Solution: Work around not recognizing a term response. (Hayaki Saito)
Files: src/term.c
*** ../vim-7.3.862/src/term.c 2013-03-13 19:29:24.000000000 +0100
--- src/term.c 2013-03-16 14:29:00.000000000 +0100
***************
*** 3926,3933 ****
* Check at several positions in typebuf.tb_buf[], to catch something like
* "x<Up>" that can be mapped. Stop at max_offset, because characters
* after that cannot be used for mapping, and with @r commands
! * typebuf.tb_buf[]
! * can become very long.
* This is used often, KEEP IT FAST!
*/
for (offset = 0; offset < max_offset; ++offset)
--- 3926,3932 ----
* Check at several positions in typebuf.tb_buf[], to catch something like
* "x<Up>" that can be mapped. Stop at max_offset, because characters
* after that cannot be used for mapping, and with @r commands
! * typebuf.tb_buf[] can become very long.
* This is used often, KEEP IT FAST!
*/
for (offset = 0; offset < max_offset; ++offset)
***************
*** 4098,4104 ****
#ifdef FEAT_TERMRESPONSE
if (key_name[0] == NUL
/* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */
! || key_name[0] == KS_URXVT_MOUSE)
{
/* Check for some responses from terminal start with "<Esc>[" or
* CSI.
--- 4097,4107 ----
#ifdef FEAT_TERMRESPONSE
if (key_name[0] == NUL
/* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */
! || key_name[0] == KS_URXVT_MOUSE
! # ifdef FEAT_MBYTE
! || u7_status == U7_SENT
! # endif
! )
{
/* Check for some responses from terminal start with "<Esc>[" or
* CSI.
***************
*** 4129,4135 ****
#ifdef FEAT_MBYTE
/* eat it when it has 2 arguments and ends in 'R' */
! if (u7_status == U7_SENT && j == 1 && tp[i] == 'R')
{
char *p = NULL;
--- 4132,4138 ----
#ifdef FEAT_MBYTE
/* eat it when it has 2 arguments and ends in 'R' */
! if (j == 1 && tp[i] == 'R')
{
char *p = NULL;
*** ../vim-7.3.862/src/version.c 2013-03-16 14:20:45.000000000 +0100
--- src/version.c 2013-03-16 14:33:16.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 863,
/**/
--
hundred-and-one symptoms of being an internet addict:
54. You start tilting your head sideways to smile. :-)
/// 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 ///

48
7.3.864 Normal file
View File

@ -0,0 +1,48 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.864
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.3.864 (after 7.3.862)
Problem: Can't build without the mouse feature.
Solution: Add an #ifdef. (Ike Devolder)
Files: src/misc1.c
*** ../vim-7.3.863/src/misc1.c 2013-03-16 14:20:45.000000000 +0100
--- src/misc1.c 2013-03-16 21:33:08.000000000 +0100
***************
*** 3405,3411 ****
--- 3405,3413 ----
n = TO_SPECIAL(buf[1], buf[2]);
if (buf[1] == KS_MODIFIER
|| n == K_IGNORE
+ #ifdef FEAT_MOUSE
|| (is_mouse_key(n) && n != K_LEFTMOUSE)
+ #endif
#ifdef FEAT_GUI
|| n == K_VER_SCROLLBAR
|| n == K_HOR_SCROLLBAR
*** ../vim-7.3.863/src/version.c 2013-03-16 14:33:32.000000000 +0100
--- src/version.c 2013-03-16 21:34:15.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 864,
/**/
--
hundred-and-one symptoms of being an internet addict:
57. You begin to wonder how on earth your service provider is allowed to call
200 hours per month "unlimited."
/// 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 ///

74
7.3.865 Normal file
View File

@ -0,0 +1,74 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.865
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.3.865 (after 7.3.862)
Problem: Mouse position may be wrong.
Solution: Let vungetc() restore the mouse position.
Files: src/getchar.c
*** ../vim-7.3.864/src/getchar.c 2012-06-06 12:06:10.000000000 +0200
--- src/getchar.c 2013-03-16 21:41:02.000000000 +0100
***************
*** 1337,1342 ****
--- 1337,1346 ----
static int old_char = -1; /* character put back by vungetc() */
static int old_mod_mask; /* mod_mask for ungotten character */
+ #ifdef FEAT_MOUSE
+ static int old_mouse_row; /* mouse_row related to old_char */
+ static int old_mouse_col; /* mouse_col related to old_char */
+ #endif
#if defined(FEAT_EVAL) || defined(FEAT_EX_EXTRA) || defined(PROTO)
***************
*** 1567,1572 ****
--- 1571,1580 ----
c = old_char;
old_char = -1;
mod_mask = old_mod_mask;
+ #ifdef FEAT_MOUSE
+ mouse_row = old_mouse_row;
+ mouse_col = old_mouse_col;
+ #endif
}
else
{
***************
*** 1877,1882 ****
--- 1885,1894 ----
{
old_char = c;
old_mod_mask = mod_mask;
+ #ifdef FEAT_MOUSE
+ old_mouse_row = mouse_row;
+ old_mouse_col = mouse_col;
+ #endif
}
/*
*** ../vim-7.3.864/src/version.c 2013-03-16 21:35:28.000000000 +0100
--- src/version.c 2013-03-16 21:38:44.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 865,
/**/
--
Creating the world with Emacs: M-x let-there-be-light
Creating the world with Vim: :make world
/// 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 ///

196
7.3.866 Normal file
View File

@ -0,0 +1,196 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.866
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.3.866
Problem: Not serving the X selection during system() isn't nice.
Solution: When using fork() do not loose the selection, keep serving it.
Add a loop similar to handling I/O. (Yukihiro Nakadaira)
Files: src/os_unix.c
*** ../vim-7.3.865/src/os_unix.c 2013-03-13 17:50:20.000000000 +0100
--- src/os_unix.c 2013-03-19 12:34:04.000000000 +0100
***************
*** 132,137 ****
--- 132,138 ----
# include <X11/Shell.h>
# include <X11/StringDefs.h>
static Widget xterm_Shell = (Widget)0;
+ static void clip_update __ARGS((void));
static void xterm_update __ARGS((void));
# endif
***************
*** 1138,1148 ****
--- 1139,1151 ----
# if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
static void loose_clipboard __ARGS((void));
+ # ifdef USE_SYSTEM
static void save_clipboard __ARGS((void));
static void restore_clipboard __ARGS((void));
static void *clip_star_save = NULL;
static void *clip_plus_save = NULL;
+ # endif
/*
* Called when Vim is going to sleep or execute a shell command.
***************
*** 1164,1169 ****
--- 1167,1173 ----
}
}
+ # ifdef USE_SYSTEM
/*
* Save clipboard text to restore later.
*/
***************
*** 1199,1204 ****
--- 1203,1209 ----
clip_plus_save = NULL;
}
}
+ # endif
#endif
/*
***************
*** 4009,4021 ****
if (options & SHELL_COOKED)
settmode(TMODE_COOK); /* set to normal mode */
- # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
- /* Disown the clipboard, because is the executed command tries to obtain a
- * selection and we own it we get a deadlock. */
- save_clipboard();
- loose_clipboard();
- # endif
-
/*
* Do this loop twice:
* 1: find number of arguments
--- 4014,4019 ----
***************
*** 4788,4793 ****
--- 4786,4796 ----
}
else
wait_pid = 0;
+
+ # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
+ /* Handle any X events, e.g. serving the clipboard. */
+ clip_update();
+ # endif
}
finished:
p_more = p_more_save;
***************
*** 4814,4819 ****
--- 4817,4861 ----
close(toshell_fd);
close(fromshell_fd);
}
+ # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
+ else
+ {
+ /*
+ * Similar to the loop above, but only handle X events, no
+ * I/O.
+ */
+ for (;;)
+ {
+ if (got_int)
+ {
+ /* CTRL-C sends a signal to the child, we ignore it
+ * ourselves */
+ # ifdef HAVE_SETSID
+ kill(-pid, SIGINT);
+ # else
+ kill(0, SIGINT);
+ # endif
+ got_int = FALSE;
+ }
+ # ifdef __NeXT__
+ wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *)0);
+ # else
+ wait_pid = waitpid(pid, &status, WNOHANG);
+ # endif
+ if ((wait_pid == (pid_t)-1 && errno == ECHILD)
+ || (wait_pid == pid && WIFEXITED(status)))
+ {
+ wait_pid = pid;
+ break;
+ }
+
+ /* Handle any X events, e.g. serving the clipboard. */
+ clip_update();
+
+ mch_delay(10L, TRUE);
+ }
+ }
+ # endif
/*
* Wait until our child has exited.
***************
*** 4884,4892 ****
# ifdef FEAT_TITLE
resettitle();
# endif
- # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
- restore_clipboard();
- # endif
vim_free(newcmd);
return retval;
--- 4926,4931 ----
***************
*** 6868,6873 ****
--- 6907,6927 ----
# endif
/*
+ * Catch up with GUI or X events.
+ */
+ static void
+ clip_update()
+ {
+ # ifdef FEAT_GUI
+ if (gui.in_use)
+ gui_mch_update();
+ else
+ # endif
+ if (xterm_Shell != (Widget)0)
+ xterm_update();
+ }
+
+ /*
* Catch up with any queued X events. This may put keyboard input into the
* input buffer, call resize call-backs, trigger timers etc. If there is
* nothing in the X event queue (& no timers pending), then we return
*** ../vim-7.3.865/src/version.c 2013-03-16 21:42:12.000000000 +0100
--- src/version.c 2013-03-19 12:30:16.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 866,
/**/
--
hundred-and-one symptoms of being an internet addict:
71. You wonder how people walk
/// 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 ///

279
7.3.867 Normal file
View File

@ -0,0 +1,279 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.867
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.3.867
Problem: Matchparen does not update match when using auto-indenting.
(Marc Aldorasi)
Solution: Add the TextChanged and TextChangedI autocommand events.
Files: runtime/plugin/matchparen.vim, src/main.c, src/edit.c,
src/globals.h, src/vim.h, src/fileio.c, src/proto/fileio.pro,
runtime/doc/autocmd.txt
*** ../vim-7.3.866/runtime/plugin/matchparen.vim 2010-08-15 21:57:19.000000000 +0200
--- runtime/plugin/matchparen.vim 2013-03-19 13:16:46.000000000 +0100
***************
*** 1,6 ****
" Vim plugin for showing matching parens
" Maintainer: Bram Moolenaar <Bram@vim.org>
! " Last Change: 2008 Sep 03
" Exit quickly when:
" - this plugin was already loaded (or disabled)
--- 1,6 ----
" Vim plugin for showing matching parens
" Maintainer: Bram Moolenaar <Bram@vim.org>
! " Last Change: 2013 Mar 19
" Exit quickly when:
" - this plugin was already loaded (or disabled)
***************
*** 14,19 ****
--- 14,22 ----
augroup matchparen
" Replace all matchparen autocommands
autocmd! CursorMoved,CursorMovedI,WinEnter * call s:Highlight_Matching_Pair()
+ if exists('##TextChanged')
+ autocmd! TextChanged,TextChangedI * call s:Highlight_Matching_Pair()
+ endif
augroup END
" Skip the rest if it was already done.
***************
*** 82,89 ****
endif
" When not in a string or comment ignore matches inside them.
let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .
! \ '=~? "string\\|character\\|singlequote\\|comment"'
execute 'if' s_skip '| let s_skip = 0 | endif'
" Limit the search to lines visible in the window.
--- 85,93 ----
endif
" When not in a string or comment ignore matches inside them.
+ " We match "escape" for special items, such as lispEscapeSpecial.
let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .
! \ '=~? "string\\|character\\|singlequote\\|escape\\|comment"'
execute 'if' s_skip '| let s_skip = 0 | endif'
" Limit the search to lines visible in the window.
*** ../vim-7.3.866/src/main.c 2013-03-13 20:23:17.000000000 +0100
--- src/main.c 2013-03-19 13:00:34.000000000 +0100
***************
*** 1168,1173 ****
--- 1168,1186 ----
}
#endif
+ #ifdef FEAT_AUTOCMD
+ /* Trigger TextChanged if b_changedtick differs. */
+ if (!finish_op && has_textchanged()
+ && last_changedtick != curbuf->b_changedtick)
+ {
+ if (last_changedtick_buf == curbuf)
+ apply_autocmds(EVENT_TEXTCHANGED, NULL, NULL,
+ FALSE, curbuf);
+ last_changedtick_buf = curbuf;
+ last_changedtick = curbuf->b_changedtick;
+ }
+ #endif
+
#if defined(FEAT_DIFF) && defined(FEAT_SCROLLBIND)
/* Scroll-binding for diff mode may have been postponed until
* here. Avoids doing it for every change. */
*** ../vim-7.3.866/src/edit.c 2013-03-07 19:38:49.000000000 +0100
--- src/edit.c 2013-03-19 13:08:46.000000000 +0100
***************
*** 1593,1598 ****
--- 1593,1613 ----
last_cursormoved = curwin->w_cursor;
}
#endif
+ #ifdef FEAT_AUTOCMD
+ /* Trigger TextChangedI if b_changedtick differs. */
+ if (!ready && has_textchangedI()
+ && last_changedtick != curbuf->b_changedtick
+ # ifdef FEAT_INS_EXPAND
+ && !pum_visible()
+ # endif
+ )
+ {
+ if (last_changedtick_buf == curbuf)
+ apply_autocmds(EVENT_TEXTCHANGEDI, NULL, NULL, FALSE, curbuf);
+ last_changedtick_buf = curbuf;
+ last_changedtick = curbuf->b_changedtick;
+ }
+ #endif
if (must_redraw)
update_screen(0);
else if (clear_cmdline || redraw_cmdline)
*** ../vim-7.3.866/src/globals.h 2013-02-26 14:56:24.000000000 +0100
--- src/globals.h 2013-03-19 13:11:35.000000000 +0100
***************
*** 1057,1067 ****
EXTERN int autocmd_bufnr INIT(= 0); /* fnum for <abuf> on cmdline */
EXTERN char_u *autocmd_match INIT(= NULL); /* name for <amatch> on cmdline */
EXTERN int did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
! EXTERN pos_T last_cursormoved /* for CursorMoved event */
# ifdef DO_INIT
= INIT_POS_T(0, 0, 0)
# endif
;
#endif
#ifdef FEAT_WINDOWS
--- 1057,1069 ----
EXTERN int autocmd_bufnr INIT(= 0); /* fnum for <abuf> on cmdline */
EXTERN char_u *autocmd_match INIT(= NULL); /* name for <amatch> on cmdline */
EXTERN int did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
! EXTERN pos_T last_cursormoved /* for CursorMoved event */
# ifdef DO_INIT
= INIT_POS_T(0, 0, 0)
# endif
;
+ EXTERN int last_changedtick INIT(= 0); /* for TextChanged event */
+ EXTERN buf_T *last_changedtick_buf INIT(= NULL);
#endif
#ifdef FEAT_WINDOWS
*** ../vim-7.3.866/src/vim.h 2013-02-26 14:56:24.000000000 +0100
--- src/vim.h 2013-03-19 13:07:00.000000000 +0100
***************
*** 1300,1305 ****
--- 1300,1307 ----
EVENT_TABENTER, /* after entering a tab page */
EVENT_SHELLCMDPOST, /* after ":!cmd" */
EVENT_SHELLFILTERPOST, /* after ":1,2!cmd", ":w !cmd", ":r !cmd". */
+ EVENT_TEXTCHANGED, /* text was modified */
+ EVENT_TEXTCHANGEDI, /* text was modified in Insert mode*/
NUM_EVENTS /* MUST be the last one */
};
*** ../vim-7.3.866/src/fileio.c 2013-01-30 14:13:52.000000000 +0100
--- src/fileio.c 2013-03-19 13:08:31.000000000 +0100
***************
*** 7713,7718 ****
--- 7713,7720 ----
{"TabLeave", EVENT_TABLEAVE},
{"TermChanged", EVENT_TERMCHANGED},
{"TermResponse", EVENT_TERMRESPONSE},
+ {"TextChanged", EVENT_TEXTCHANGED},
+ {"TextChangedI", EVENT_TEXTCHANGEDI},
{"User", EVENT_USER},
{"VimEnter", EVENT_VIMENTER},
{"VimLeave", EVENT_VIMLEAVE},
***************
*** 9138,9143 ****
--- 9140,9163 ----
}
/*
+ * Return TRUE when there is a TextChanged autocommand defined.
+ */
+ int
+ has_textchanged()
+ {
+ return (first_autopat[(int)EVENT_TEXTCHANGED] != NULL);
+ }
+
+ /*
+ * Return TRUE when there is a TextChangedI autocommand defined.
+ */
+ int
+ has_textchangedI()
+ {
+ return (first_autopat[(int)EVENT_TEXTCHANGEDI] != NULL);
+ }
+
+ /*
* Return TRUE when there is an InsertCharPre autocommand defined.
*/
int
*** ../vim-7.3.866/src/proto/fileio.pro 2012-12-05 19:13:11.000000000 +0100
--- src/proto/fileio.pro 2013-03-19 13:10:13.000000000 +0100
***************
*** 44,49 ****
--- 44,51 ----
int trigger_cursorhold __ARGS((void));
int has_cursormoved __ARGS((void));
int has_cursormovedI __ARGS((void));
+ int has_textchanged __ARGS((void));
+ int has_textchangedI __ARGS((void));
int has_insertcharpre __ARGS((void));
void block_autocmds __ARGS((void));
void unblock_autocmds __ARGS((void));
*** ../vim-7.3.866/runtime/doc/autocmd.txt 2012-03-07 20:13:44.000000000 +0100
--- runtime/doc/autocmd.txt 2013-03-19 13:22:37.000000000 +0100
***************
*** 805,817 ****
TermResponse After the response to |t_RV| is received from
the terminal. The value of |v:termresponse|
can be used to do things depending on the
! terminal version.
*User*
User Never executed automatically. To be used for
autocommands that are only executed with
":doautocmd".
*UserGettingBored*
! UserGettingBored When the user hits CTRL-C. Just kidding! :-)
*VimEnter*
VimEnter After doing all the startup stuff, including
loading .vimrc files, executing the "-c cmd"
--- 828,858 ----
TermResponse After the response to |t_RV| is received from
the terminal. The value of |v:termresponse|
can be used to do things depending on the
! terminal version. Note that this event may be
! triggered halfway executing another event,
! especially if file I/O, a shell command or
! anything else that takes time is involved.
! *TextChanged*
! TextChanged After a change was made to the text in the
! current buffer in Normal mode. That is when
! |b:changedtick| has changed.
! Not triggered when there is typeahead or when
! an operator is pending.
! Careful: This is triggered very often, don't
! do anything that the user does not expect or
! that is slow.
! *TextChangedI*
! TextChangedI After a change was made to the text in the
! current buffer in Insert mode.
! Not triggered when the popup menu is visible.
! Otherwise the same as TextChanged.
*User*
User Never executed automatically. To be used for
autocommands that are only executed with
":doautocmd".
*UserGettingBored*
! UserGettingBored When the user presses the same key 42 times.
! Just kidding! :-)
*VimEnter*
VimEnter After doing all the startup stuff, including
loading .vimrc files, executing the "-c cmd"
*** ../vim-7.3.866/src/version.c 2013-03-19 12:35:33.000000000 +0100
--- src/version.c 2013-03-19 13:29:58.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 867,
/**/
--
hundred-and-one symptoms of being an internet addict:
73. You give your dog used motherboards instead of bones
/// 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 ///

90
7.3.868 Normal file
View File

@ -0,0 +1,90 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.868
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.3.868
Problem: When at the hit-return prompt and using "k" while no text has
scrolled off screen, then using "j", an empty line is displayed.
Solution: Only act on "k" when text scrolled off screen. Also accept
page-up and page-down. (cptstubing)
Files: src/message.c
*** ../vim-7.3.867/src/message.c 2012-11-14 18:10:49.000000000 +0100
--- src/message.c 2013-03-19 13:50:16.000000000 +0100
***************
*** 976,985 ****
*/
if (p_more && !p_cp)
{
! if (c == 'b' || c == 'k' || c == 'u' || c == 'g' || c == K_UP)
{
! /* scroll back to show older messages */
! do_more_prompt(c);
if (quit_more)
{
c = CAR; /* just pretend CR was hit */
--- 976,997 ----
*/
if (p_more && !p_cp)
{
! if (c == 'b' || c == 'k' || c == 'u' || c == 'g'
! || c == K_UP || c == K_PAGEUP)
{
! if (msg_scrolled > Rows)
! /* scroll back to show older messages */
! do_more_prompt(c);
! else
! {
! msg_didout = FALSE;
! c = K_IGNORE;
! msg_col =
! #ifdef FEAT_RIGHTLEFT
! cmdmsg_rl ? Columns - 1 :
! #endif
! 0;
! }
if (quit_more)
{
c = CAR; /* just pretend CR was hit */
***************
*** 993,999 ****
}
}
else if (msg_scrolled > Rows - 2
! && (c == 'j' || c == K_DOWN || c == 'd' || c == 'f'))
c = K_IGNORE;
}
} while ((had_got_int && c == Ctrl_C)
--- 1005,1012 ----
}
}
else if (msg_scrolled > Rows - 2
! && (c == 'j' || c == 'd' || c == 'f'
! || c == K_DOWN || c == K_PAGEDOWN))
c = K_IGNORE;
}
} while ((had_got_int && c == Ctrl_C)
*** ../vim-7.3.867/src/version.c 2013-03-19 13:33:18.000000000 +0100
--- src/version.c 2013-03-19 13:53:02.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 868,
/**/
--
hundred-and-one symptoms of being an internet addict:
74. Your most erotic dreams are about cybersex
/// 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 ///

358
7.3.869 Normal file
View File

@ -0,0 +1,358 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.869
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.3.869
Problem: bufwinnr() matches buffers in other tabs.
Solution: For bufwinnr() and ? only match buffers in the current tab.
(Alexey Radkov)
Files: src/buffer.c, src/diff.c, src/eval.c, src/ex_docmd.c,
src/if_perl.xs, src/proto/buffer.pro
*** ../vim-7.3.868/src/buffer.c 2013-02-17 15:45:34.000000000 +0100
--- src/buffer.c 2013-03-19 14:19:17.000000000 +0100
***************
*** 928,934 ****
if (!VIM_ISDIGIT(*arg))
{
p = skiptowhite_esc(arg);
! bnr = buflist_findpat(arg, p, command == DOBUF_WIPE, FALSE);
if (bnr < 0) /* failed */
break;
arg = p;
--- 928,935 ----
if (!VIM_ISDIGIT(*arg))
{
p = skiptowhite_esc(arg);
! bnr = buflist_findpat(arg, p, command == DOBUF_WIPE,
! FALSE, FALSE);
if (bnr < 0) /* failed */
break;
arg = p;
***************
*** 2129,2146 ****
return NULL;
}
! #if defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL) || defined(PROTO)
/*
* Find file in buffer list by a regexp pattern.
* Return fnum of the found buffer.
* Return < 0 for error.
*/
int
! buflist_findpat(pattern, pattern_end, unlisted, diffmode)
char_u *pattern;
char_u *pattern_end; /* pointer to first char after pattern */
int unlisted; /* find unlisted buffers */
int diffmode UNUSED; /* find diff-mode buffers only */
{
buf_T *buf;
regprog_T *prog;
--- 2130,2149 ----
return NULL;
}
! #if defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL) \
! || defined(PROTO)
/*
* Find file in buffer list by a regexp pattern.
* Return fnum of the found buffer.
* Return < 0 for error.
*/
int
! buflist_findpat(pattern, pattern_end, unlisted, diffmode, curtab_only)
char_u *pattern;
char_u *pattern_end; /* pointer to first char after pattern */
int unlisted; /* find unlisted buffers */
int diffmode UNUSED; /* find diff-mode buffers only */
+ int curtab_only; /* find buffers in current tab only */
{
buf_T *buf;
regprog_T *prog;
***************
*** 2208,2213 ****
--- 2211,2233 ----
#endif
&& buflist_match(prog, buf) != NULL)
{
+ if (curtab_only)
+ {
+ /* Ignore the match if the buffer is not open in
+ * the current tab. */
+ #ifdef FEAT_WINDOWS
+ win_T *wp;
+
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ if (wp->w_buffer == buf)
+ break;
+ if (wp == NULL)
+ continue;
+ #else
+ if (curwin->w_buffer != buf)
+ continue;
+ #endif
+ }
if (match >= 0) /* already found a match */
{
match = -2;
*** ../vim-7.3.868/src/diff.c 2012-10-21 22:18:17.000000000 +0200
--- src/diff.c 2013-03-19 14:11:40.000000000 +0100
***************
*** 2152,2158 ****
i = atol((char *)eap->arg);
else
{
! i = buflist_findpat(eap->arg, p, FALSE, TRUE);
if (i < 0)
return; /* error message already given */
}
--- 2152,2158 ----
i = atol((char *)eap->arg);
else
{
! i = buflist_findpat(eap->arg, p, FALSE, TRUE, FALSE);
if (i < 0)
return; /* error message already given */
}
*** ../vim-7.3.868/src/eval.c 2013-03-16 14:20:45.000000000 +0100
--- src/eval.c 2013-03-19 14:11:40.000000000 +0100
***************
*** 9019,9032 ****
rettv->vval.v_number = (buf != NULL && buf->b_ml.ml_mfp != NULL);
}
! static buf_T *get_buf_tv __ARGS((typval_T *tv));
/*
* Get buffer by number or pattern.
*/
static buf_T *
! get_buf_tv(tv)
typval_T *tv;
{
char_u *name = tv->vval.v_string;
int save_magic;
--- 9019,9033 ----
rettv->vval.v_number = (buf != NULL && buf->b_ml.ml_mfp != NULL);
}
! static buf_T *get_buf_tv __ARGS((typval_T *tv, int curtab_only));
/*
* Get buffer by number or pattern.
*/
static buf_T *
! get_buf_tv(tv, curtab_only)
typval_T *tv;
+ int curtab_only;
{
char_u *name = tv->vval.v_string;
int save_magic;
***************
*** 9049,9055 ****
p_cpo = (char_u *)"";
buf = buflist_findnr(buflist_findpat(name, name + STRLEN(name),
! TRUE, FALSE));
p_magic = save_magic;
p_cpo = save_cpo;
--- 9050,9056 ----
p_cpo = (char_u *)"";
buf = buflist_findnr(buflist_findpat(name, name + STRLEN(name),
! TRUE, FALSE, curtab_only));
p_magic = save_magic;
p_cpo = save_cpo;
***************
*** 9073,9079 ****
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
++emsg_off;
! buf = get_buf_tv(&argvars[0]);
rettv->v_type = VAR_STRING;
if (buf != NULL && buf->b_fname != NULL)
rettv->vval.v_string = vim_strsave(buf->b_fname);
--- 9074,9080 ----
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
++emsg_off;
! buf = get_buf_tv(&argvars[0], FALSE);
rettv->v_type = VAR_STRING;
if (buf != NULL && buf->b_fname != NULL)
rettv->vval.v_string = vim_strsave(buf->b_fname);
***************
*** 9096,9102 ****
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
++emsg_off;
! buf = get_buf_tv(&argvars[0]);
--emsg_off;
/* If the buffer isn't found and the second argument is not zero create a
--- 9097,9103 ----
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
++emsg_off;
! buf = get_buf_tv(&argvars[0], FALSE);
--emsg_off;
/* If the buffer isn't found and the second argument is not zero create a
***************
*** 9131,9137 ****
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
++emsg_off;
! buf = get_buf_tv(&argvars[0]);
#ifdef FEAT_WINDOWS
for (wp = firstwin; wp; wp = wp->w_next)
{
--- 9132,9138 ----
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
++emsg_off;
! buf = get_buf_tv(&argvars[0], TRUE);
#ifdef FEAT_WINDOWS
for (wp = firstwin; wp; wp = wp->w_next)
{
***************
*** 11095,11101 ****
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
++emsg_off;
! buf = get_buf_tv(&argvars[0]);
--emsg_off;
lnum = get_tv_lnum_buf(&argvars[1], buf);
--- 11096,11102 ----
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
++emsg_off;
! buf = get_buf_tv(&argvars[0], FALSE);
--emsg_off;
lnum = get_tv_lnum_buf(&argvars[1], buf);
***************
*** 11123,11129 ****
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
varname = get_tv_string_chk(&argvars[1]);
++emsg_off;
! buf = get_buf_tv(&argvars[0]);
if (argvars[2].v_type != VAR_UNKNOWN)
/* set the default value */
--- 11124,11130 ----
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
varname = get_tv_string_chk(&argvars[1]);
++emsg_off;
! buf = get_buf_tv(&argvars[0], FALSE);
if (argvars[2].v_type != VAR_UNKNOWN)
/* set the default value */
***************
*** 16216,16222 ****
return;
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
varname = get_tv_string_chk(&argvars[1]);
! buf = get_buf_tv(&argvars[0]);
varp = &argvars[2];
if (buf != NULL && varname != NULL && varp != NULL)
--- 16217,16223 ----
return;
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
varname = get_tv_string_chk(&argvars[1]);
! buf = get_buf_tv(&argvars[0], FALSE);
varp = &argvars[2];
if (buf != NULL && varname != NULL && varp != NULL)
*** ../vim-7.3.868/src/ex_docmd.c 2013-03-13 18:30:39.000000000 +0100
--- src/ex_docmd.c 2013-03-19 14:15:17.000000000 +0100
***************
*** 2645,2651 ****
while (p > ea.arg && vim_iswhite(p[-1]))
--p;
}
! ea.line2 = buflist_findpat(ea.arg, p, (ea.argt & BUFUNL) != 0, FALSE);
if (ea.line2 < 0) /* failed */
goto doend;
ea.addr_count = 1;
--- 2645,2652 ----
while (p > ea.arg && vim_iswhite(p[-1]))
--p;
}
! ea.line2 = buflist_findpat(ea.arg, p, (ea.argt & BUFUNL) != 0,
! FALSE, FALSE);
if (ea.line2 < 0) /* failed */
goto doend;
ea.addr_count = 1;
*** ../vim-7.3.868/src/if_perl.xs 2013-02-14 22:19:47.000000000 +0100
--- src/if_perl.xs 2013-03-19 14:15:46.000000000 +0100
***************
*** 1056,1062 ****
pat = (char_u *)SvPV(sv, len);
++emsg_off;
! b = buflist_findpat(pat, pat+len, FALSE, FALSE);
--emsg_off;
}
--- 1056,1062 ----
pat = (char_u *)SvPV(sv, len);
++emsg_off;
! b = buflist_findpat(pat, pat+len, FALSE, FALSE, FALSE);
--emsg_off;
}
*** ../vim-7.3.868/src/proto/buffer.pro 2012-10-03 18:24:55.000000000 +0200
--- src/proto/buffer.pro 2013-03-19 14:16:22.000000000 +0100
***************
*** 17,23 ****
void buflist_getfpos __ARGS((void));
buf_T *buflist_findname_exp __ARGS((char_u *fname));
buf_T *buflist_findname __ARGS((char_u *ffname));
! int buflist_findpat __ARGS((char_u *pattern, char_u *pattern_end, int unlisted, int diffmode));
int ExpandBufnames __ARGS((char_u *pat, int *num_file, char_u ***file, int options));
buf_T *buflist_findnr __ARGS((int nr));
char_u *buflist_nr2name __ARGS((int n, int fullname, int helptail));
--- 17,23 ----
void buflist_getfpos __ARGS((void));
buf_T *buflist_findname_exp __ARGS((char_u *fname));
buf_T *buflist_findname __ARGS((char_u *ffname));
! int buflist_findpat __ARGS((char_u *pattern, char_u *pattern_end, int unlisted, int diffmode, int curtab_only));
int ExpandBufnames __ARGS((char_u *pat, int *num_file, char_u ***file, int options));
buf_T *buflist_findnr __ARGS((int nr));
char_u *buflist_nr2name __ARGS((int n, int fullname, int helptail));
*** ../vim-7.3.868/src/version.c 2013-03-19 13:56:03.000000000 +0100
--- src/version.c 2013-03-19 14:23:42.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 869,
/**/
--
Proof techniques #2: Proof by Oddity.
SAMPLE: To prove that horses have an infinite number of legs.
(1) Horses have an even number of legs.
(2) They have two legs in back and fore legs in front.
(3) This makes a total of six legs, which certainly is an odd number of
legs for a horse.
(4) But the only number that is both odd and even is infinity.
(5) Therefore, horses must have an infinite number of legs.
/// 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 ///

203
7.3.870 Normal file
View File

@ -0,0 +1,203 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.870
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.3.870
Problem: Compiler warnings when using MingW 4.5.3.
Solution: Do not use MAKEINTRESOURCE. Adjust #if. (Ken Takata)
Files: src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, src/os_win32.c,
src/os_win32.h
*** ../vim-7.3.869/src/gui_w32.c 2012-11-20 16:53:34.000000000 +0100
--- src/gui_w32.c 2013-03-19 14:45:24.000000000 +0100
***************
*** 1614,1620 ****
#endif
#ifdef FEAT_EVAL
! # if _MSC_VER < 1400
/* HandleToLong() only exists in compilers that can do 64 bit builds */
# define HandleToLong(h) ((long)(h))
# endif
--- 1614,1620 ----
#endif
#ifdef FEAT_EVAL
! # ifndef HandleToLong
/* HandleToLong() only exists in compilers that can do 64 bit builds */
# define HandleToLong(h) ((long)(h))
# endif
*** ../vim-7.3.869/src/gui_w48.c 2013-01-25 19:28:34.000000000 +0100
--- src/gui_w48.c 2013-03-19 14:46:35.000000000 +0100
***************
*** 3265,3291 ****
* misc2.c! */
static LPCSTR mshape_idcs[] =
{
! MAKEINTRESOURCE(IDC_ARROW), /* arrow */
! MAKEINTRESOURCE(0), /* blank */
! MAKEINTRESOURCE(IDC_IBEAM), /* beam */
! MAKEINTRESOURCE(IDC_SIZENS), /* updown */
! MAKEINTRESOURCE(IDC_SIZENS), /* udsizing */
! MAKEINTRESOURCE(IDC_SIZEWE), /* leftright */
! MAKEINTRESOURCE(IDC_SIZEWE), /* lrsizing */
! MAKEINTRESOURCE(IDC_WAIT), /* busy */
#ifdef WIN3264
! MAKEINTRESOURCE(IDC_NO), /* no */
#else
! MAKEINTRESOURCE(IDC_ICON), /* no */
#endif
! MAKEINTRESOURCE(IDC_ARROW), /* crosshair */
! MAKEINTRESOURCE(IDC_ARROW), /* hand1 */
! MAKEINTRESOURCE(IDC_ARROW), /* hand2 */
! MAKEINTRESOURCE(IDC_ARROW), /* pencil */
! MAKEINTRESOURCE(IDC_ARROW), /* question */
! MAKEINTRESOURCE(IDC_ARROW), /* right-arrow */
! MAKEINTRESOURCE(IDC_UPARROW), /* up-arrow */
! MAKEINTRESOURCE(IDC_ARROW) /* last one */
};
void
--- 3265,3291 ----
* misc2.c! */
static LPCSTR mshape_idcs[] =
{
! IDC_ARROW, /* arrow */
! MAKEINTRESOURCE(0), /* blank */
! IDC_IBEAM, /* beam */
! IDC_SIZENS, /* updown */
! IDC_SIZENS, /* udsizing */
! IDC_SIZEWE, /* leftright */
! IDC_SIZEWE, /* lrsizing */
! IDC_WAIT, /* busy */
#ifdef WIN3264
! IDC_NO, /* no */
#else
! IDC_ICON, /* no */
#endif
! IDC_ARROW, /* crosshair */
! IDC_ARROW, /* hand1 */
! IDC_ARROW, /* hand2 */
! IDC_ARROW, /* pencil */
! IDC_ARROW, /* question */
! IDC_ARROW, /* right-arrow */
! IDC_UPARROW, /* up-arrow */
! IDC_ARROW /* last one */
};
void
***************
*** 3298,3304 ****
else
{
if (shape >= MSHAPE_NUMBERED)
! idc = MAKEINTRESOURCE(IDC_ARROW);
else
idc = mshape_idcs[shape];
#ifdef SetClassLongPtr
--- 3298,3304 ----
else
{
if (shape >= MSHAPE_NUMBERED)
! idc = IDC_ARROW;
else
idc = mshape_idcs[shape];
#ifdef SetClassLongPtr
*** ../vim-7.3.869/src/os_mswin.c 2013-02-26 14:56:24.000000000 +0100
--- src/os_mswin.c 2013-03-19 14:45:24.000000000 +0100
***************
*** 184,195 ****
--- 184,197 ----
}
# endif
+ # if !defined(__MINGW32__) || (__GNUC__ < 4)
int _chdrive(int drive)
{
char temp [3] = "-:";
temp[0] = drive + 'A' - 1;
return !SetCurrentDirectory(temp);
}
+ # endif
#else
# ifdef __BORLANDC__
/* being a more ANSI compliant compiler, BorlandC doesn't define _stricoll:
*** ../vim-7.3.869/src/os_win32.c 2013-02-26 14:56:24.000000000 +0100
--- src/os_win32.c 2013-03-19 14:45:24.000000000 +0100
***************
*** 163,169 ****
/* Enable common dialogs input unicode from IME if posible. */
#ifdef FEAT_MBYTE
! LRESULT (WINAPI *pDispatchMessage)(LPMSG) = DispatchMessage;
BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage;
BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG) = IsDialogMessage;
BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT) = PeekMessage;
--- 163,169 ----
/* Enable common dialogs input unicode from IME if posible. */
#ifdef FEAT_MBYTE
! LRESULT (WINAPI *pDispatchMessage)(CONST MSG *) = DispatchMessage;
BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage;
BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG) = IsDialogMessage;
BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT) = PeekMessage;
***************
*** 3464,3470 ****
&& (lnum != curbuf->b_ml.ml_line_count
|| curbuf->b_p_eol)))
{
! WriteFile(g_hChildStd_IN_Wr, "\n", 1, &ignored, NULL);
}
++lnum;
--- 3464,3470 ----
&& (lnum != curbuf->b_ml.ml_line_count
|| curbuf->b_p_eol)))
{
! WriteFile(g_hChildStd_IN_Wr, "\n", 1, (LPDWORD)&ignored, NULL);
}
++lnum;
*** ../vim-7.3.869/src/os_win32.h 2012-11-20 16:53:34.000000000 +0100
--- src/os_win32.h 2013-03-19 14:45:24.000000000 +0100
***************
*** 204,210 ****
/* Enable common dialogs input unicode from IME if posible. */
#ifdef FEAT_MBYTE
/* The variables are defined in os_win32.c. */
! extern LRESULT (WINAPI *pDispatchMessage)(LPMSG);
extern BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT);
extern BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG);
extern BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT);
--- 204,210 ----
/* Enable common dialogs input unicode from IME if posible. */
#ifdef FEAT_MBYTE
/* The variables are defined in os_win32.c. */
! extern LRESULT (WINAPI *pDispatchMessage)(CONST MSG *);
extern BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT);
extern BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG);
extern BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT);
*** ../vim-7.3.869/src/version.c 2013-03-19 14:25:50.000000000 +0100
--- src/version.c 2013-03-19 14:45:42.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 870,
/**/
--
Q: How many legs does a giraffe have?
A: Eight: two in front, two behind, two on the left and two on the right
/// 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 ///

102
7.3.871 Normal file
View File

@ -0,0 +1,102 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.871
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.3.871
Problem: search('^$', 'c') does not use the empty match under the cursor.
Solution: Special handling of the 'c' flag. (Christian Brabandt)
Add tests.
Files: src/search.c, src/testdir/test14.in, src/testdir/test14.ok
*** ../vim-7.3.870/src/search.c 2013-02-20 18:39:07.000000000 +0100
--- src/search.c 2013-03-19 15:23:13.000000000 +0100
***************
*** 727,732 ****
--- 727,734 ----
++matchcol;
}
}
+ if (options & SEARCH_START)
+ break;
if (ptr[matchcol] == NUL
|| (nmatched = vim_regexec_multi(&regmatch,
win, buf, lnum + matchpos.lnum,
*** ../vim-7.3.870/src/testdir/test14.in 2010-08-15 21:57:29.000000000 +0200
--- src/testdir/test14.in 2013-03-19 15:21:54.000000000 +0100
***************
*** 2,7 ****
--- 2,8 ----
Also test ":s/pat/sub/" with different ~s in sub.
Also test for ^Vxff and ^Vo123 in Insert mode.
Also test "[m", "]m", "[M" and "]M"
+ Also test search()
STARTTEST
:so small.vim
***************
*** 34,39 ****
--- 35,50 ----
2[MaJ:.w >>test.out
k[MaK:.w >>test.out
3[MaL:.w >>test.out
+ :"
+ /^foobar
+ :let startline = line('.')
+ :call search('foobar', 'c')
+ :call append(line('$'), line('.') - startline)
+ j:call search('^$', 'c')
+ :call append(line('$'), line('.') - startline)
+ :call search('^$', 'bc')
+ :call append(line('$'), line('.') - startline)
+ :/^search()/,$w >>test.out
:qa!
ENDTEST
***************
*** 64,66 ****
--- 75,82 ----
}
} e3
}
+
+ foobar
+
+
+ search()
*** ../vim-7.3.870/src/testdir/test14.ok 2010-08-15 21:57:29.000000000 +0200
--- src/testdir/test14.ok 2013-03-19 15:26:18.000000000 +0100
***************
*** 15,17 ****
--- 15,21 ----
}JH e3
}K e2
{LF
+ search()
+ 0
+ 1
+ 1
*** ../vim-7.3.870/src/version.c 2013-03-19 14:48:25.000000000 +0100
--- src/version.c 2013-03-19 15:26:38.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 871,
/**/
--
hundred-and-one symptoms of being an internet addict:
75. You start wondering whether you could actually upgrade your brain
with a Pentium Pro microprocessor 80. The upgrade works just fine.
/// 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 ///

524
7.3.872 Normal file
View File

@ -0,0 +1,524 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.872
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.3.872
Problem: On some systems case of file names is always ignored, on others
never.
Solution: Add the 'fileignorecase' option to control this at runtime.
Implies 'wildignorecase'.
Files: src/buffer.c, src/edit.c, src/ex_cmds2.c, src/ex_getln.c,
src/fileio.c, src/misc1.c, src/misc2.c, src/option.c,
src/option.h, src/vim.h, runtime/doc/options.txt
*** ../vim-7.3.871/src/buffer.c 2013-03-19 14:25:50.000000000 +0100
--- src/buffer.c 2013-03-19 16:03:42.000000000 +0100
***************
*** 2401,2412 ****
if (name != NULL)
{
regmatch.regprog = prog;
! #ifdef CASE_INSENSITIVE_FILENAME
! regmatch.rm_ic = TRUE; /* Always ignore case */
! #else
! regmatch.rm_ic = FALSE; /* Never ignore case */
! #endif
!
if (vim_regexec(&regmatch, name, (colnr_T)0))
match = name;
else
--- 2401,2407 ----
if (name != NULL)
{
regmatch.regprog = prog;
! regmatch.rm_ic = p_fic; /* ignore case when 'fileignorecase' is set */
if (vim_regexec(&regmatch, name, (colnr_T)0))
match = name;
else
*** ../vim-7.3.871/src/edit.c 2013-03-19 13:33:18.000000000 +0100
--- src/edit.c 2013-03-19 15:43:19.000000000 +0100
***************
*** 4336,4348 ****
/* May change home directory back to "~". */
tilde_replace(compl_pattern, num_matches, matches);
! ins_compl_add_matches(num_matches, matches,
! #ifdef CASE_INSENSITIVE_FILENAME
! TRUE
! #else
! FALSE
! #endif
! );
}
break;
--- 4336,4342 ----
/* May change home directory back to "~". */
tilde_replace(compl_pattern, num_matches, matches);
! ins_compl_add_matches(num_matches, matches, p_fic || p_wic);
}
break;
*** ../vim-7.3.871/src/ex_cmds2.c 2012-10-03 18:24:55.000000000 +0200
--- src/ex_cmds2.c 2013-03-19 16:03:50.000000000 +0100
***************
*** 1926,1936 ****
* Delete the items: use each item as a regexp and find a match in the
* argument list.
*/
! #ifdef CASE_INSENSITIVE_FILENAME
! regmatch.rm_ic = TRUE; /* Always ignore case */
! #else
! regmatch.rm_ic = FALSE; /* Never ignore case */
! #endif
for (i = 0; i < new_ga.ga_len && !got_int; ++i)
{
p = ((char_u **)new_ga.ga_data)[i];
--- 1926,1932 ----
* Delete the items: use each item as a regexp and find a match in the
* argument list.
*/
! regmatch.rm_ic = p_fic; /* ignore case when 'fileignorecase' is set */
for (i = 0; i < new_ga.ga_len && !got_int; ++i)
{
p = ((char_u **)new_ga.ga_data)[i];
*** ../vim-7.3.871/src/ex_getln.c 2012-11-28 16:49:53.000000000 +0100
--- src/ex_getln.c 2013-03-19 16:03:53.000000000 +0100
***************
*** 3653,3671 ****
{
for (i = 0; i < xp->xp_numfiles; ++i)
{
! #ifdef CASE_INSENSITIVE_FILENAME
! if (xp->xp_context == EXPAND_DIRECTORIES
|| xp->xp_context == EXPAND_FILES
|| xp->xp_context == EXPAND_SHELLCMD
! || xp->xp_context == EXPAND_BUFFERS)
{
if (TOLOWER_LOC(xp->xp_files[i][len]) !=
TOLOWER_LOC(xp->xp_files[0][len]))
break;
}
! else
! #endif
! if (xp->xp_files[i][len] != xp->xp_files[0][len])
break;
}
if (i < xp->xp_numfiles)
--- 3653,3668 ----
{
for (i = 0; i < xp->xp_numfiles; ++i)
{
! if (p_fic && (xp->xp_context == EXPAND_DIRECTORIES
|| xp->xp_context == EXPAND_FILES
|| xp->xp_context == EXPAND_SHELLCMD
! || xp->xp_context == EXPAND_BUFFERS))
{
if (TOLOWER_LOC(xp->xp_files[i][len]) !=
TOLOWER_LOC(xp->xp_files[0][len]))
break;
}
! else if (xp->xp_files[i][len] != xp->xp_files[0][len])
break;
}
if (i < xp->xp_numfiles)
*** ../vim-7.3.871/src/fileio.c 2013-03-19 13:33:18.000000000 +0100
--- src/fileio.c 2013-03-19 15:49:28.000000000 +0100
***************
*** 6485,6493 ****
#ifdef HAVE_ACL
vim_acl_T acl; /* ACL from original file */
#endif
- #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
int use_tmp_file = FALSE;
- #endif
/*
* When the names are identical, there is nothing to do. When they refer
--- 6485,6491 ----
***************
*** 6496,6506 ****
*/
if (fnamecmp(from, to) == 0)
{
! #ifdef CASE_INSENSITIVE_FILENAME
! if (STRCMP(gettail(from), gettail(to)) != 0)
use_tmp_file = TRUE;
else
- #endif
return 0;
}
--- 6494,6502 ----
*/
if (fnamecmp(from, to) == 0)
{
! if (p_fic && STRCMP(gettail(from), gettail(to)) != 0)
use_tmp_file = TRUE;
else
return 0;
}
***************
*** 6539,6545 ****
}
#endif
- #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
if (use_tmp_file)
{
char tempname[MAXPATHL + 1];
--- 6535,6540 ----
***************
*** 6572,6578 ****
}
return -1;
}
- #endif
/*
* Delete the "to" file, this is required on some systems to make the
--- 6567,6572 ----
***************
*** 10007,10017 ****
int match = FALSE;
#endif
! #ifdef CASE_INSENSITIVE_FILENAME
! regmatch.rm_ic = TRUE; /* Always ignore case */
! #else
! regmatch.rm_ic = FALSE; /* Don't ever ignore case */
! #endif
#ifdef FEAT_OSFILETYPE
if (*pattern == '<')
{
--- 10001,10007 ----
int match = FALSE;
#endif
! regmatch.rm_ic = p_fic; /* ignore case if 'fileignorecase' is set */
#ifdef FEAT_OSFILETYPE
if (*pattern == '<')
{
*** ../vim-7.3.871/src/misc1.c 2013-03-16 21:35:28.000000000 +0100
--- src/misc1.c 2013-03-19 16:16:24.000000000 +0100
***************
*** 5026,5041 ****
return retval;
}
- #if (defined(CASE_INSENSITIVE_FILENAME) && defined(BACKSLASH_IN_FILENAME)) \
- || defined(PROTO)
/*
! * Versions of fnamecmp() and fnamencmp() that handle '/' and '\' equally.
*/
int
vim_fnamecmp(x, y)
char_u *x, *y;
{
return vim_fnamencmp(x, y, MAXPATHL);
}
int
--- 5026,5046 ----
return retval;
}
/*
! * Versions of fnamecmp() and fnamencmp() that handle '/' and '\' equally
! * and deal with 'fileignorecase'.
*/
int
vim_fnamecmp(x, y)
char_u *x, *y;
{
+ #ifdef BACKSLASH_IN_FILENAME
return vim_fnamencmp(x, y, MAXPATHL);
+ #else
+ if (p_fic)
+ return MB_STRICMP(x, y);
+ return STRCMP(x, y);
+ #endif
}
int
***************
*** 5043,5051 ****
char_u *x, *y;
size_t len;
{
while (len > 0 && *x && *y)
{
! if (TOLOWER_LOC(*x) != TOLOWER_LOC(*y)
&& !(*x == '/' && *y == '\\')
&& !(*x == '\\' && *y == '/'))
break;
--- 5048,5058 ----
char_u *x, *y;
size_t len;
{
+ #ifdef BACKSLASH_IN_FILENAME
+ /* TODO: multi-byte characters. */
while (len > 0 && *x && *y)
{
! if ((p_fic ? TOLOWER_LOC(*x) != TOLOWER_LOC(*y) : *x != *y)
&& !(*x == '/' && *y == '\\')
&& !(*x == '\\' && *y == '/'))
break;
***************
*** 5056,5063 ****
if (len == 0)
return 0;
return (*x - *y);
! }
#endif
/*
* Concatenate file names fname1 and fname2 into allocated memory.
--- 5063,5074 ----
if (len == 0)
return 0;
return (*x - *y);
! #else
! if (p_fic)
! return MB_STRNICMP(x, y, len);
! return STRNCMP(x, y, len);
#endif
+ }
/*
* Concatenate file names fname1 and fname2 into allocated memory.
***************
*** 9835,9845 ****
}
else if (path_end >= path + wildoff
&& (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL
! #ifndef CASE_INSENSITIVE_FILENAME
! || ((flags & EW_ICASE)
! && isalpha(PTR2CHAR(path_end)))
! #endif
! ))
e = p;
#ifdef FEAT_MBYTE
if (has_mbyte)
--- 9846,9853 ----
}
else if (path_end >= path + wildoff
&& (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL
! || (!p_fic && (flags & EW_ICASE)
! && isalpha(PTR2CHAR(path_end)))))
e = p;
#ifdef FEAT_MBYTE
if (has_mbyte)
***************
*** 9882,9895 ****
}
/* compile the regexp into a program */
- #ifdef CASE_INSENSITIVE_FILENAME
- regmatch.rm_ic = TRUE; /* Behave like Terminal.app */
- #else
if (flags & EW_ICASE)
regmatch.rm_ic = TRUE; /* 'wildignorecase' set */
else
! regmatch.rm_ic = FALSE; /* Don't ignore case */
! #endif
if (flags & (EW_NOERROR | EW_NOTWILD))
++emsg_silent;
regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
--- 9890,9899 ----
}
/* compile the regexp into a program */
if (flags & EW_ICASE)
regmatch.rm_ic = TRUE; /* 'wildignorecase' set */
else
! regmatch.rm_ic = p_fic; /* ignore case when 'fileignorecase' is set */
if (flags & (EW_NOERROR | EW_NOTWILD))
++emsg_silent;
regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
*** ../vim-7.3.871/src/misc2.c 2012-11-28 18:31:49.000000000 +0100
--- src/misc2.c 2013-03-19 16:39:56.000000000 +0100
***************
*** 5362,5374 ****
if (STRLEN(s1) != STRLEN(s2))
return FAIL;
for (i = 0; s1[i] != NUL && s2[i] != NUL; i++)
{
if (s1[i] != s2[i]
! #ifdef CASE_INSENSITIVE_FILENAME
! && TOUPPER_LOC(s1[i]) != TOUPPER_LOC(s2[i])
! #endif
! )
{
if (i >= 2)
if (s1[i-1] == '*' && s1[i-2] == '*')
--- 5362,5372 ----
if (STRLEN(s1) != STRLEN(s2))
return FAIL;
+ /* TODO: handle multi-byte characters. */
for (i = 0; s1[i] != NUL && s2[i] != NUL; i++)
{
if (s1[i] != s2[i]
! && (!p_fic || TOUPPER_LOC(s1[i]) != TOUPPER_LOC(s2[i])))
{
if (i >= 2)
if (s1[i-1] == '*' && s1[i-2] == '*')
***************
*** 6123,6134 ****
break;
}
! if (
! #ifdef CASE_INSENSITIVE_FILENAME
! TOUPPER_LOC(p[i]) != TOUPPER_LOC(q[i])
! #else
! p[i] != q[i]
! #endif
#ifdef BACKSLASH_IN_FILENAME
/* consider '/' and '\\' to be equal */
&& !((p[i] == '/' && q[i] == '\\')
--- 6121,6127 ----
break;
}
! if ((p_fic ? TOUPPER_LOC(p[i]) != TOUPPER_LOC(q[i]) : p[i] != q[i])
#ifdef BACKSLASH_IN_FILENAME
/* consider '/' and '\\' to be equal */
&& !((p[i] == '/' && q[i] == '\\')
*** ../vim-7.3.871/src/option.c 2013-03-13 20:42:28.000000000 +0100
--- src/option.c 2013-03-19 15:40:25.000000000 +0100
***************
*** 1108,1113 ****
--- 1108,1122 ----
(char_u *)&p_ffs, PV_NONE,
{(char_u *)DFLT_FFS_VI, (char_u *)DFLT_FFS_VIM}
SCRIPTID_INIT},
+ {"fileignorecase", "fic", P_BOOL|P_VI_DEF,
+ (char_u *)&p_fic, PV_NONE,
+ {
+ #ifdef CASE_INSENSITIVE_FILENAME
+ (char_u *)TRUE,
+ #else
+ (char_u *)FALSE,
+ #endif
+ (char_u *)0L} SCRIPTID_INIT},
{"filetype", "ft", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME,
#ifdef FEAT_AUTOCMD
(char_u *)&p_ft, PV_FT,
*** ../vim-7.3.871/src/option.h 2012-08-15 16:20:59.000000000 +0200
--- src/option.h 2013-03-19 15:42:24.000000000 +0100
***************
*** 453,458 ****
--- 453,459 ----
EXTERN char_u *p_fencs; /* 'fileencodings' */
#endif
EXTERN char_u *p_ffs; /* 'fileformats' */
+ EXTERN long p_fic; /* 'fileignorecase' */
#ifdef FEAT_FOLDING
EXTERN char_u *p_fcl; /* 'foldclose' */
EXTERN long p_fdls; /* 'foldlevelstart' */
*** ../vim-7.3.871/src/vim.h 2013-03-19 13:33:18.000000000 +0100
--- src/vim.h 2013-03-19 16:14:29.000000000 +0100
***************
*** 1627,1644 ****
* (this does not account for maximum name lengths and things like "../dir",
* thus it is not 100% accurate!)
*/
! #ifdef CASE_INSENSITIVE_FILENAME
! # ifdef BACKSLASH_IN_FILENAME
! # define fnamecmp(x, y) vim_fnamecmp((x), (y))
! # define fnamencmp(x, y, n) vim_fnamencmp((x), (y), (size_t)(n))
! # else
! # define fnamecmp(x, y) MB_STRICMP((x), (y))
! # define fnamencmp(x, y, n) MB_STRNICMP((x), (y), (n))
! # endif
! #else
! # define fnamecmp(x, y) strcmp((char *)(x), (char *)(y))
! # define fnamencmp(x, y, n) strncmp((char *)(x), (char *)(y), (size_t)(n))
! #endif
#ifdef HAVE_MEMSET
# define vim_memset(ptr, c, size) memset((ptr), (c), (size))
--- 1627,1634 ----
* (this does not account for maximum name lengths and things like "../dir",
* thus it is not 100% accurate!)
*/
! #define fnamecmp(x, y) vim_fnamecmp((char_u *)(x), (char_u *)(y))
! #define fnamencmp(x, y, n) vim_fnamencmp((char_u *)(x), (char_u *)(y), (size_t)(n))
#ifdef HAVE_MEMSET
# define vim_memset(ptr, c, size) memset((ptr), (c), (size))
*** ../vim-7.3.871/runtime/doc/options.txt 2013-01-23 18:37:31.000000000 +0100
--- runtime/doc/options.txt 2013-03-19 16:25:49.000000000 +0100
***************
*** 2895,2900 ****
--- 2941,2954 ----
NOTE: This option is set to the Vi default value when 'compatible' is
set and to the Vim default value when 'compatible' is reset.
+ *'fileignorecase'* *'wic'* *'nofileignorecase'* *'nowic'*
+ 'fileignorecase' 'wic' boolean (default on for systems where case in file
+ names is normally ignored.
+ global
+ {not in Vi}
+ When set case is ignored when using file names and directories.
+ See 'wildignorecase' for only ignoring case when doing completion.
+
*'filetype'* *'ft'*
'filetype' 'ft' string (default: "")
local to buffer
***************
*** 7832,7843 ****
uses another default.
! *'wildignorecase* *'wic'* *'nowildignorecase* *'nowic'*
'wildignorecase' 'wic' boolean (default off)
global
{not in Vi}
When set case is ignored when completing file names and directories.
! Has no effect on systems where file name case is generally ignored.
Does not apply when the shell is used to expand wildcards, which
happens when there are special characters.
--- 7906,7917 ----
uses another default.
! *'wildignorecase'* *'wic'* *'nowildignorecase'* *'nowic'*
'wildignorecase' 'wic' boolean (default off)
global
{not in Vi}
When set case is ignored when completing file names and directories.
! Has no effect when 'fileignorecase' is set.
Does not apply when the shell is used to expand wildcards, which
happens when there are special characters.
*** ../vim-7.3.871/src/version.c 2013-03-19 15:27:43.000000000 +0100
--- src/version.c 2013-03-19 16:22:46.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 872,
/**/
--
hundred-and-one symptoms of being an internet addict:
76. Your ISP regards you as a business partner rather than as a customer.
/// 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 ///

BIN
7.3.873 Normal file

Binary file not shown.

139
7.3.874 Normal file
View File

@ -0,0 +1,139 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.874
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.3.874
Problem: Comparing file names does not handle multi-byte characters
properly.
Solution: Implement multi-byte handling.
Files: src/misc1.c, src/misc2.c
*** ../vim-7.3.873/src/misc1.c 2013-03-19 16:46:59.000000000 +0100
--- src/misc1.c 2013-03-19 18:30:52.000000000 +0100
***************
*** 5049,5068 ****
size_t len;
{
#ifdef BACKSLASH_IN_FILENAME
/* TODO: multi-byte characters. */
! while (len > 0 && *x && *y)
{
! if ((p_fic ? TOLOWER_LOC(*x) != TOLOWER_LOC(*y) : *x != *y)
! && !(*x == '/' && *y == '\\')
! && !(*x == '\\' && *y == '/'))
break;
! ++x;
! ++y;
! --len;
}
if (len == 0)
return 0;
! return (*x - *y);
#else
if (p_fic)
return MB_STRNICMP(x, y, len);
--- 5049,5076 ----
size_t len;
{
#ifdef BACKSLASH_IN_FILENAME
+ char_u *px = x;
+ char_u *py = y;
+ int cx = NUL;
+ int cy = NUL;
+
/* TODO: multi-byte characters. */
! while (len > 0)
{
! cx = PTR2CHAR(px);
! cy = PTR2CHAR(py);
! if (cx == NUL || cy == NUL
! || ((p_fic ? MB_TOLOWER(cx) != MB_TOLOWER(cy) : cx != cy)
! && !(cx == '/' && cy == '\\')
! && !(cx == '\\' && cy == '/')))
break;
! len -= MB_PTR2LEN(px);
! px += MB_PTR2LEN(px);
! py += MB_PTR2LEN(py);
}
if (len == 0)
return 0;
! return (cx - cy);
#else
if (p_fic)
return MB_STRNICMP(x, y, len);
*** ../vim-7.3.873/src/misc2.c 2013-03-19 16:46:59.000000000 +0100
--- src/misc2.c 2013-03-19 18:22:29.000000000 +0100
***************
*** 5352,5357 ****
--- 5352,5359 ----
char_u *s2;
{
int i;
+ int prev1 = NUL;
+ int prev2 = NUL;
if (s1 == s2)
return TRUE;
***************
*** 5362,5381 ****
if (STRLEN(s1) != STRLEN(s2))
return FAIL;
! /* TODO: handle multi-byte characters. */
! for (i = 0; s1[i] != NUL && s2[i] != NUL; i++)
{
! if (s1[i] != s2[i]
! && (!p_fic || TOUPPER_LOC(s1[i]) != TOUPPER_LOC(s2[i])))
! {
! if (i >= 2)
! if (s1[i-1] == '*' && s1[i-2] == '*')
! continue;
! else
! return FAIL;
! else
! return FAIL;
! }
}
return TRUE;
}
--- 5364,5379 ----
if (STRLEN(s1) != STRLEN(s2))
return FAIL;
! for (i = 0; s1[i] != NUL && s2[i] != NUL; i += MB_PTR2LEN(s1 + i))
{
! int c1 = PTR2CHAR(s1 + i);
! int c2 = PTR2CHAR(s2 + i);
!
! if ((p_fic ? MB_TOLOWER(c1) != MB_TOLOWER(c2) : c1 != c2)
! && (prev1 != '*' || prev2 != '*'))
! return FAIL;
! prev2 = prev1;
! prev1 = c1;
}
return TRUE;
}
*** ../vim-7.3.873/src/version.c 2013-03-19 17:42:10.000000000 +0100
--- src/version.c 2013-03-19 18:24:57.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 874,
/**/
--
hundred-and-one symptoms of being an internet addict:
80. At parties, you introduce your spouse as your "service provider."
/// 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 ///

69
7.3.875 Normal file
View File

@ -0,0 +1,69 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.875
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.3.875 (after 7.3.866)
Problem: Build problem with some combination of features.
Solution: Use FEAT_XCLIPBOARD instead of FEAT_CLIPBOARD.
Files: src/os_unix.c
*** ../vim-7.3.874/src/os_unix.c 2013-03-19 12:35:33.000000000 +0100
--- src/os_unix.c 2013-03-21 21:43:37.000000000 +0100
***************
*** 4787,4793 ****
else
wait_pid = 0;
! # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
/* Handle any X events, e.g. serving the clipboard. */
clip_update();
# endif
--- 4787,4793 ----
else
wait_pid = 0;
! # if defined(FEAT_XCLIPBOARD) && defined(FEAT_X11)
/* Handle any X events, e.g. serving the clipboard. */
clip_update();
# endif
***************
*** 4817,4823 ****
close(toshell_fd);
close(fromshell_fd);
}
! # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
else
{
/*
--- 4817,4823 ----
close(toshell_fd);
close(fromshell_fd);
}
! # if defined(FEAT_XCLIPBOARD) && defined(FEAT_X11)
else
{
/*
*** ../vim-7.3.874/src/version.c 2013-03-19 18:31:45.000000000 +0100
--- src/version.c 2013-03-21 22:05:59.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 875,
/**/
--
From "know your smileys":
O:-) Saint
/// 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 ///

80
7.3.876 Normal file
View File

@ -0,0 +1,80 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.876
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.3.876
Problem: #if indents are off.
Solution: Insert a space where appropriate. (Taro Muraoka)
Files: src/gui.c
*** ../vim-7.3.875/src/gui.c 2013-01-23 18:37:31.000000000 +0100
--- src/gui.c 2013-03-27 22:44:19.000000000 +0100
***************
*** 991,997 ****
}
gui_mch_free_font(gui.wide_font);
! #ifdef FEAT_GUI_GTK
/* Avoid unnecessary overhead if 'guifontwide' is equal to 'guifont'. */
if (font != NOFONT && gui.norm_font != NOFONT
&& pango_font_description_equal(font, gui.norm_font))
--- 991,997 ----
}
gui_mch_free_font(gui.wide_font);
! # ifdef FEAT_GUI_GTK
/* Avoid unnecessary overhead if 'guifontwide' is equal to 'guifont'. */
if (font != NOFONT && gui.norm_font != NOFONT
&& pango_font_description_equal(font, gui.norm_font))
***************
*** 1000,1010 ****
gui_mch_free_font(font);
}
else
! #endif
gui.wide_font = font;
! #ifdef FEAT_GUI_MSWIN
gui_mch_wide_font_changed();
! #endif
return OK;
}
#endif
--- 1000,1010 ----
gui_mch_free_font(font);
}
else
! # endif
gui.wide_font = font;
! # ifdef FEAT_GUI_MSWIN
gui_mch_wide_font_changed();
! # endif
return OK;
}
#endif
*** ../vim-7.3.875/src/version.c 2013-03-21 22:53:45.000000000 +0100
--- src/version.c 2013-04-03 21:10:44.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 876,
/**/
--
Nobody will ever need more than 640 kB RAM.
-- Bill Gates, 1983
Windows 98 requires 16 MB RAM.
-- Bill Gates, 1999
Logical conclusion: Nobody will ever need Windows 98.
/// 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 ///

100
7.3.877 Normal file
View File

@ -0,0 +1,100 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.877
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.3.877 (after 7.3.871)
Problem: Forward searching with search() is broken.
Solution: Fix it and add tests. (Sung Pae)
Files: src/search.c, src/testdir/test14.in, src/testdir/test14.ok
*** ../vim-7.3.876/src/search.c 2013-03-19 15:27:43.000000000 +0100
--- src/search.c 2013-04-03 21:07:11.000000000 +0200
***************
*** 727,733 ****
++matchcol;
}
}
! if (options & SEARCH_START)
break;
if (ptr[matchcol] == NUL
|| (nmatched = vim_regexec_multi(&regmatch,
--- 727,733 ----
++matchcol;
}
}
! if (matchcol == 0 && (options & SEARCH_START))
break;
if (ptr[matchcol] == NUL
|| (nmatched = vim_regexec_multi(&regmatch,
***************
*** 869,875 ****
/* With the SEARCH_END option move to the last character
* of the match. Don't do it for an empty match, end
* should be same as start then. */
! if (options & SEARCH_END && !(options & SEARCH_NOOF)
&& !(matchpos.lnum == endpos.lnum
&& matchpos.col == endpos.col))
{
--- 869,875 ----
/* With the SEARCH_END option move to the last character
* of the match. Don't do it for an empty match, end
* should be same as start then. */
! if ((options & SEARCH_END) && !(options & SEARCH_NOOF)
&& !(matchpos.lnum == endpos.lnum
&& matchpos.col == endpos.col))
{
*** ../vim-7.3.876/src/testdir/test14.in 2013-03-19 15:27:43.000000000 +0100
--- src/testdir/test14.in 2013-04-03 20:59:14.000000000 +0200
***************
*** 44,49 ****
--- 44,52 ----
:call append(line('$'), line('.') - startline)
:call search('^$', 'bc')
:call append(line('$'), line('.') - startline)
+ /two
+ :call search('.', 'c')
+ :call append(line('$'), getline('.')[col('.') - 1:])
:/^search()/,$w >>test.out
:qa!
ENDTEST
***************
*** 79,82 ****
--- 82,86 ----
foobar
+ one two
search()
*** ../vim-7.3.876/src/testdir/test14.ok 2013-03-19 15:27:43.000000000 +0100
--- src/testdir/test14.ok 2013-04-03 20:59:14.000000000 +0200
***************
*** 19,21 ****
--- 19,22 ----
0
1
1
+ two
*** ../vim-7.3.876/src/version.c 2013-04-03 21:11:33.000000000 +0200
--- src/version.c 2013-04-03 21:12:50.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 877,
/**/
--
hundred-and-one symptoms of being an internet addict:
113. You are asked about a bus schedule, you wonder if it is 16 or 32 bits.
/// 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 ///

78
7.3.878 Normal file
View File

@ -0,0 +1,78 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.878
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.3.878
Problem: 'fileignorecase' is missing in options window and quickref.
Solution: Add the option.
Files: runtime/optwin.vim, runtime/doc/quickref.txt
*** ../vim-7.3.877/runtime/optwin.vim 2010-08-15 21:57:20.000000000 +0200
--- runtime/optwin.vim 2013-04-05 15:35:22.000000000 +0200
***************
*** 1042,1047 ****
--- 1035,1044 ----
call append("$", "wildignore\tlist of patterns to ignore files for file name completion")
call <SID>OptionG("wig", &wig)
endif
+ call append("$", "fileignorecase\tignore case when using file names")
+ call <SID>BinOptionG("fic", &fic)
+ call append("$", "wildignorecase\tignore case when completing file names")
+ call <SID>BinOptionG("wic", &wic)
if has("wildmenu")
call append("$", "wildmenu\tcommand-line completion shows a list of matches")
call <SID>BinOptionG("wmnu", &wmnu)
***************
*** 1340,1342 ****
--- 1339,1343 ----
let &sc = s:old_sc
let &cpo = s:cpo_save
unlet s:old_title s:old_icon s:old_ru s:old_sc s:cpo_save s:idx s:lnum
+
+ " vim: ts=8 sw=2 sts=2
*** ../vim-7.3.877/runtime/doc/quickref.txt 2010-08-15 21:57:17.000000000 +0200
--- runtime/doc/quickref.txt 2013-04-05 15:36:35.000000000 +0200
***************
*** 690,695 ****
--- 691,697 ----
'fileencodings' 'fencs' automatically detected character encodings
'fileformat' 'ff' file format used for file I/O
'fileformats' 'ffs' automatically detected values for 'fileformat'
+ 'fileignorecase' 'fic' ignore case when using file names
'filetype' 'ft' type of file, used for autocommands
'fillchars' 'fcs' characters to use for displaying special items
'fkmap' 'fk' Farsi keyboard mapping
***************
*** 934,939 ****
--- 937,943 ----
'wildchar' 'wc' command-line character for wildcard expansion
'wildcharm' 'wcm' like 'wildchar' but also works when mapped
'wildignore' 'wig' files matching these patterns are not completed
+ 'wildignorecase' 'wic' ignore case when completing file names
'wildmenu' 'wmnu' use menu for command line completion
'wildmode' 'wim' mode for 'wildchar' command-line expansion
'wildoptions' 'wop' specifies how command line completion is done
*** ../vim-7.3.877/src/version.c 2013-04-03 21:14:25.000000000 +0200
--- src/version.c 2013-04-05 15:37:09.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 878,
/**/
--
hundred-and-one symptoms of being an internet addict:
121. You ask for e-mail adresses instead of telephone numbers.
/// 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 ///

97
7.3.879 Normal file
View File

@ -0,0 +1,97 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.879
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.3.879
Problem: When using an ex command in operator pending mode, using Esc to
abort the command still executes the operator. (David Bürgin)
Solution: Clear the operator when the ex command fails. (Christian Brabandt)
Files: src/normal.c
*** ../vim-7.3.878/src/normal.c 2013-03-16 14:20:45.000000000 +0100
--- src/normal.c 2013-04-05 16:54:13.000000000 +0200
***************
*** 5418,5423 ****
--- 5418,5424 ----
cmdarg_T *cap;
{
int old_p_im;
+ int cmd_result;
#ifdef FEAT_VISUAL
if (VIsual_active)
***************
*** 5449,5455 ****
old_p_im = p_im;
/* get a command line and execute it */
! do_cmdline(NULL, getexline, NULL,
cap->oap->op_type != OP_NOP ? DOCMD_KEEPLINE : 0);
/* If 'insertmode' changed, enter or exit Insert mode */
--- 5450,5456 ----
old_p_im = p_im;
/* get a command line and execute it */
! cmd_result = do_cmdline(NULL, getexline, NULL,
cap->oap->op_type != OP_NOP ? DOCMD_KEEPLINE : 0);
/* If 'insertmode' changed, enter or exit Insert mode */
***************
*** 5461,5472 ****
restart_edit = 0;
}
! /* The start of the operator may have become invalid by the Ex
! * command. */
! if (cap->oap->op_type != OP_NOP
&& (cap->oap->start.lnum > curbuf->b_ml.ml_line_count
|| cap->oap->start.col >
! (colnr_T)STRLEN(ml_get(cap->oap->start.lnum))))
clearopbeep(cap->oap);
}
}
--- 5462,5478 ----
restart_edit = 0;
}
! if (cmd_result == FAIL)
! /* The Ex command failed, do not execute the operator. */
! clearop(cap->oap);
! else if (cap->oap->op_type != OP_NOP
&& (cap->oap->start.lnum > curbuf->b_ml.ml_line_count
|| cap->oap->start.col >
! (colnr_T)STRLEN(ml_get(cap->oap->start.lnum))
! || did_emsg
! ))
! /* The start of the operator has become invalid by the Ex command.
! */
clearopbeep(cap->oap);
}
}
*** ../vim-7.3.878/src/version.c 2013-04-05 15:39:41.000000000 +0200
--- src/version.c 2013-04-05 16:56:43.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 879,
/**/
--
~
~
~
".signature" 4 lines, 50 characters written
/// 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 ///

287
7.3.880 Normal file
View File

@ -0,0 +1,287 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.880
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.3.880
Problem: When writing viminfo, old history lines may replace lines written
more recently by another Vim instance.
Solution: Mark history entries that were read from viminfo and overwrite
them when merging with the current viminfo.
Files: src/ex_getln.c
*** ../vim-7.3.879/src/ex_getln.c 2013-03-19 16:46:59.000000000 +0100
--- src/ex_getln.c 2013-04-05 18:56:08.000000000 +0200
***************
*** 56,61 ****
--- 56,62 ----
typedef struct hist_entry
{
int hisnum; /* identifying number */
+ int viminfo; /* when TRUE hisstr comes from viminfo */
char_u *hisstr; /* actual entry, separator char after the NUL */
} histentry_T;
***************
*** 113,118 ****
--- 114,120 ----
static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[]));
# ifdef FEAT_CMDHIST
static char_u *get_history_arg __ARGS((expand_T *xp, int idx));
+ static void clear_hist_entry __ARGS((histentry_T *hisptr));
# endif
# if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
***************
*** 5343,5352 ****
if (hisidx[type] < 0) /* there are no entries yet */
{
for (i = 0; i < newlen; ++i)
! {
! temp[i].hisnum = 0;
! temp[i].hisstr = NULL;
! }
}
else if (newlen > hislen) /* array becomes bigger */
{
--- 5345,5351 ----
if (hisidx[type] < 0) /* there are no entries yet */
{
for (i = 0; i < newlen; ++i)
! clear_hist_entry(&temp[i]);
}
else if (newlen > hislen) /* array becomes bigger */
{
***************
*** 5354,5363 ****
temp[i] = history[type][i];
j = i;
for ( ; i <= newlen - (hislen - hisidx[type]); ++i)
! {
! temp[i].hisnum = 0;
! temp[i].hisstr = NULL;
! }
for ( ; j < hislen; ++i, ++j)
temp[i] = history[type][j];
}
--- 5353,5359 ----
temp[i] = history[type][i];
j = i;
for ( ; i <= newlen - (hislen - hisidx[type]); ++i)
! clear_hist_entry(&temp[i]);
for ( ; j < hislen; ++i, ++j)
temp[i] = history[type][j];
}
***************
*** 5385,5390 ****
--- 5381,5395 ----
}
}
+ static void
+ clear_hist_entry(hisptr)
+ histentry_T *hisptr;
+ {
+ hisptr->hisnum = 0;
+ hisptr->viminfo = FALSE;
+ hisptr->hisstr = NULL;
+ }
+
/*
* Check if command line 'str' is already in history.
* If 'move_to_front' is TRUE, matching entry is moved to end of history.
***************
*** 5433,5440 ****
history[type][last_i] = history[type][i];
last_i = i;
}
- history[type][i].hisstr = str;
history[type][i].hisnum = ++hisnum[type];
return TRUE;
}
return FALSE;
--- 5438,5446 ----
history[type][last_i] = history[type][i];
last_i = i;
}
history[type][i].hisnum = ++hisnum[type];
+ history[type][i].viminfo = FALSE;
+ history[type][i].hisstr = str;
return TRUE;
}
return FALSE;
***************
*** 5498,5505 ****
/* Current line is from the same mapping, remove it */
hisptr = &history[HIST_SEARCH][hisidx[HIST_SEARCH]];
vim_free(hisptr->hisstr);
! hisptr->hisstr = NULL;
! hisptr->hisnum = 0;
--hisnum[histype];
if (--hisidx[HIST_SEARCH] < 0)
hisidx[HIST_SEARCH] = hislen - 1;
--- 5504,5510 ----
/* Current line is from the same mapping, remove it */
hisptr = &history[HIST_SEARCH][hisidx[HIST_SEARCH]];
vim_free(hisptr->hisstr);
! clear_hist_entry(hisptr);
--hisnum[histype];
if (--hisidx[HIST_SEARCH] < 0)
hisidx[HIST_SEARCH] = hislen - 1;
***************
*** 5520,5525 ****
--- 5525,5531 ----
hisptr->hisstr[len + 1] = sep;
hisptr->hisnum = ++hisnum[histype];
+ hisptr->viminfo = FALSE;
if (histype == HIST_SEARCH && in_map)
last_maptick = maptick;
}
***************
*** 5709,5716 ****
for (i = hislen; i--;)
{
vim_free(hisptr->hisstr);
! hisptr->hisnum = 0;
! hisptr++->hisstr = NULL;
}
hisidx[histype] = -1; /* mark history as cleared */
hisnum[histype] = 0; /* reset identifier counter */
--- 5715,5721 ----
for (i = hislen; i--;)
{
vim_free(hisptr->hisstr);
! clear_hist_entry(hisptr);
}
hisidx[histype] = -1; /* mark history as cleared */
hisnum[histype] = 0; /* reset identifier counter */
***************
*** 5755,5770 ****
{
found = TRUE;
vim_free(hisptr->hisstr);
! hisptr->hisstr = NULL;
! hisptr->hisnum = 0;
}
else
{
if (i != last)
{
history[histype][last] = *hisptr;
! hisptr->hisstr = NULL;
! hisptr->hisnum = 0;
}
if (--last < 0)
last += hislen;
--- 5760,5773 ----
{
found = TRUE;
vim_free(hisptr->hisstr);
! clear_hist_entry(hisptr);
}
else
{
if (i != last)
{
history[histype][last] = *hisptr;
! clear_hist_entry(hisptr);
}
if (--last < 0)
last += hislen;
***************
*** 5808,5815 ****
history[histype][i] = history[histype][j];
i = j;
}
! history[histype][i].hisstr = NULL;
! history[histype][i].hisnum = 0;
if (--i < 0)
i += hislen;
hisidx[histype] = i;
--- 5811,5817 ----
history[histype][i] = history[histype][j];
i = j;
}
! clear_hist_entry(&history[histype][i]);
if (--i < 0)
i += hislen;
hisidx[histype] = i;
***************
*** 6043,6054 ****
for (type = 0; type < HIST_COUNT; ++type)
{
! /*
! * Count the number of empty spaces in the history list. If there are
! * more spaces available than we request, then fill them up.
! */
for (i = 0, num = 0; i < hislen; i++)
! if (history[type][i].hisstr == NULL)
num++;
len = asklen;
if (num > len)
--- 6045,6055 ----
for (type = 0; type < HIST_COUNT; ++type)
{
! /* Count the number of empty spaces in the history list. Entries read
! * from viminfo previously are also considered empty. If there are
! * more spaces available than we request, then fill them up. */
for (i = 0, num = 0; i < hislen; i++)
! if (history[type][i].hisstr == NULL || history[type][i].viminfo)
num++;
len = asklen;
if (num > len)
***************
*** 6141,6147 ****
hisidx[type] = hislen - 1;
do
{
! if (history[type][idx].hisstr != NULL)
break;
if (++idx == hislen)
idx = 0;
--- 6142,6149 ----
hisidx[type] = hislen - 1;
do
{
! if (history[type][idx].hisstr != NULL
! || history[type][idx].viminfo)
break;
if (++idx == hislen)
idx = 0;
***************
*** 6153,6158 ****
--- 6155,6161 ----
{
vim_free(history[type][idx].hisstr);
history[type][idx].hisstr = viminfo_history[type][i];
+ history[type][idx].viminfo = TRUE;
if (--idx < 0)
idx = hislen - 1;
}
*** ../vim-7.3.879/src/version.c 2013-04-05 17:43:10.000000000 +0200
--- src/version.c 2013-04-05 18:54:11.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 880,
/**/
--
hundred-and-one symptoms of being an internet addict:
122. You ask if the Netaholics Anonymous t-shirt you ordered can be
sent to you via e-mail.
/// 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 ///

108
7.3.881 Normal file
View File

@ -0,0 +1,108 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.881
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.3.881
Problem: Python list does not work correctly.
Solution: Fix it and add a test. (Yukihiro Nakadaira)
Files: src/testdir/test86.in, src/testdir/test86.ok, src/if_py_both.h
*** ../vim-7.3.880/src/testdir/test86.in 2013-02-20 16:54:24.000000000 +0100
--- src/testdir/test86.in 2013-04-05 19:18:48.000000000 +0200
***************
*** 321,326 ****
--- 321,351 ----
:py trace_main()
:py sys.settrace(None)
:$put =string(l)
+ :"
+ :" Slice
+ :py ll = vim.bindeval('[0, 1, 2, 3, 4, 5]')
+ :py l = ll[:4]
+ :$put =string(pyeval('l'))
+ :py l = ll[2:]
+ :$put =string(pyeval('l'))
+ :py l = ll[:-4]
+ :$put =string(pyeval('l'))
+ :py l = ll[-2:]
+ :$put =string(pyeval('l'))
+ :py l = ll[2:4]
+ :$put =string(pyeval('l'))
+ :py l = ll[4:2]
+ :$put =string(pyeval('l'))
+ :py l = ll[-4:-2]
+ :$put =string(pyeval('l'))
+ :py l = ll[-2:-4]
+ :$put =string(pyeval('l'))
+ :py l = ll[:]
+ :$put =string(pyeval('l'))
+ :py l = ll[0:6]
+ :$put =string(pyeval('l'))
+ :py l = ll[-10:10]
+ :$put =string(pyeval('l'))
:endfun
:"
:call Test()
*** ../vim-7.3.880/src/testdir/test86.ok 2013-02-20 16:54:24.000000000 +0100
--- src/testdir/test86.ok 2013-04-05 19:18:48.000000000 +0200
***************
*** 65,67 ****
--- 65,78 ----
vim: Vim(let):E859:
[1]
[1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1]
+ [0, 1, 2, 3]
+ [2, 3, 4, 5]
+ [0, 1]
+ [4, 5]
+ [2, 3]
+ []
+ [2, 3]
+ []
+ [0, 1, 2, 3, 4, 5]
+ [0, 1, 2, 3, 4, 5]
+ [0, 1, 2, 3, 4, 5]
*** ../vim-7.3.880/src/if_py_both.h 2013-02-14 22:11:31.000000000 +0100
--- src/if_py_both.h 2013-04-05 19:27:46.000000000 +0200
***************
*** 1139,1145 ****
for (i = 0; i < n; ++i)
{
! PyObject *item = ListItem(self, i);
if (item == NULL)
{
Py_DECREF(list);
--- 1139,1145 ----
for (i = 0; i < n; ++i)
{
! PyObject *item = ListItem(self, first + i);
if (item == NULL)
{
Py_DECREF(list);
*** ../vim-7.3.880/src/version.c 2013-04-05 18:58:42.000000000 +0200
--- src/version.c 2013-04-05 19:31:59.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 881,
/**/
--
hundred-and-one symptoms of being an internet addict:
123. You ask the car dealer to install an extra cigarette lighter
on your new car to power your notebook.
/// 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 ///

59
7.3.882 Normal file
View File

@ -0,0 +1,59 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.882
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.3.882
Problem: CursorHold may trigger after receiving the termresponse.
Solution: Set the did_cursorhold flag. (Hayaki Saito)
Files: src/term.c
*** ../vim-7.3.881/src/term.c 2013-03-16 14:33:32.000000000 +0100
--- src/term.c 2013-04-05 19:49:58.000000000 +0200
***************
*** 4137,4142 ****
--- 4137,4145 ----
char *p = NULL;
u7_status = U7_GOT;
+ # ifdef FEAT_AUTOCMD
+ did_cursorhold = TRUE;
+ # endif
if (extra == 2)
p = "single";
else if (extra == 3)
***************
*** 4153,4158 ****
--- 4156,4164 ----
if (*T_CRV != NUL && i > 2 + (tp[0] != CSI) && tp[i] == 'c')
{
crv_status = CRV_GOT;
+ # ifdef FEAT_AUTOCMD
+ did_cursorhold = TRUE;
+ # endif
/* If this code starts with CSI, you can bet that the
* terminal uses 8-bit codes. */
*** ../vim-7.3.881/src/version.c 2013-04-05 19:32:30.000000000 +0200
--- src/version.c 2013-04-05 19:46:21.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 882,
/**/
--
Would you care for a drink? I mean, if it were, like,
disabled and you had to look after it?
/// 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 ///

65
7.3.883 Normal file
View File

@ -0,0 +1,65 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.883
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.3.883 (after 7.3.880)
Problem: Can't build with some combination of features.
Solution: Adjust #ifdefs.
Files: src/ex_getln.c
*** ../vim-7.3.882/src/ex_getln.c 2013-04-05 18:58:41.000000000 +0200
--- src/ex_getln.c 2013-04-06 13:24:22.000000000 +0200
***************
*** 114,126 ****
static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[]));
# ifdef FEAT_CMDHIST
static char_u *get_history_arg __ARGS((expand_T *xp, int idx));
- static void clear_hist_entry __ARGS((histentry_T *hisptr));
# endif
# if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file));
# endif
#endif
#ifdef FEAT_CMDWIN
static int ex_window __ARGS((void));
--- 114,128 ----
static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[]));
# ifdef FEAT_CMDHIST
static char_u *get_history_arg __ARGS((expand_T *xp, int idx));
# endif
# if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file));
# endif
#endif
+ #ifdef FEAT_CMDHIST
+ static void clear_hist_entry __ARGS((histentry_T *hisptr));
+ #endif
#ifdef FEAT_CMDWIN
static int ex_window __ARGS((void));
*** ../vim-7.3.882/src/version.c 2013-04-05 19:50:12.000000000 +0200
--- src/version.c 2013-04-06 14:28:41.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 883,
/**/
--
Why is it called "Windows"? "Gates" would be more appropriate...
/// 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 ///

73
7.3.884 Normal file
View File

@ -0,0 +1,73 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.884
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.3.884
Problem: Compiler warning for variable shadowing another. (John Little)
Solution: Rename the variable. (Christian Brabandt)
Files: src/term.c
*** ../vim-7.3.883/src/term.c 2013-04-05 19:50:12.000000000 +0200
--- src/term.c 2013-04-06 13:27:59.000000000 +0200
***************
*** 4134,4151 ****
/* eat it when it has 2 arguments and ends in 'R' */
if (j == 1 && tp[i] == 'R')
{
! char *p = NULL;
u7_status = U7_GOT;
# ifdef FEAT_AUTOCMD
did_cursorhold = TRUE;
# endif
if (extra == 2)
! p = "single";
else if (extra == 3)
! p = "double";
! if (p != NULL)
! set_option_value((char_u *)"ambw", 0L, (char_u *)p, 0);
key_name[0] = (int)KS_EXTRA;
key_name[1] = (int)KE_IGNORE;
slen = i + 1;
--- 4134,4151 ----
/* eat it when it has 2 arguments and ends in 'R' */
if (j == 1 && tp[i] == 'R')
{
! char *aw = NULL;
u7_status = U7_GOT;
# ifdef FEAT_AUTOCMD
did_cursorhold = TRUE;
# endif
if (extra == 2)
! aw = "single";
else if (extra == 3)
! aw = "double";
! if (aw != NULL)
! set_option_value((char_u *)"ambw", 0L, (char_u *)aw, 0);
key_name[0] = (int)KS_EXTRA;
key_name[1] = (int)KE_IGNORE;
slen = i + 1;
*** ../vim-7.3.883/src/version.c 2013-04-06 14:28:56.000000000 +0200
--- src/version.c 2013-04-06 14:30:05.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 884,
/**/
--
Don't drink and drive. You might hit a bump and spill your beer.
/// 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 ///

88
7.3.885 Normal file
View File

@ -0,0 +1,88 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.885
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.3.885
Problem: Double free for list and dict in Lua. (Shougo Matsu)
Solution: Do not unref list and dict. (Yasuhiro Matsumoto)
Files: src/if_lua.c
*** ../vim-7.3.884/src/if_lua.c 2013-02-14 22:19:47.000000000 +0100
--- src/if_lua.c 2013-04-12 11:42:56.000000000 +0200
***************
*** 665,677 ****
luaV_type_tostring(list, LUAVIM_LIST)
static int
- luaV_list_gc (lua_State *L)
- {
- list_unref(luaV_unbox(L, luaV_List, 1));
- return 0;
- }
-
- static int
luaV_list_len (lua_State *L)
{
list_T *l = luaV_unbox(L, luaV_List, 1);
--- 665,670 ----
***************
*** 801,807 ****
static const luaL_Reg luaV_List_mt[] = {
{"__tostring", luaV_list_tostring},
- {"__gc", luaV_list_gc},
{"__len", luaV_list_len},
{"__call", luaV_list_call},
{"__index", luaV_list_index},
--- 794,799 ----
***************
*** 830,842 ****
luaV_type_tostring(dict, LUAVIM_DICT)
static int
- luaV_dict_gc (lua_State *L)
- {
- dict_unref(luaV_unbox(L, luaV_Dict, 1));
- return 0;
- }
-
- static int
luaV_dict_len (lua_State *L)
{
dict_T *d = luaV_unbox(L, luaV_Dict, 1);
--- 822,827 ----
***************
*** 929,935 ****
static const luaL_Reg luaV_Dict_mt[] = {
{"__tostring", luaV_dict_tostring},
- {"__gc", luaV_dict_gc},
{"__len", luaV_dict_len},
{"__call", luaV_dict_call},
{"__index", luaV_dict_index},
--- 914,919 ----
*** ../vim-7.3.884/src/version.c 2013-04-06 14:30:35.000000000 +0200
--- src/version.c 2013-04-12 11:44:45.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 885,
/**/
--
hundred-and-one symptoms of being an internet addict:
148. You find it easier to dial-up the National Weather Service
Weather/your_town/now.html than to simply look out the window.
/// 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 ///

93
7.3.886 Normal file
View File

@ -0,0 +1,93 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.886
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.3.886
Problem: Can't build with multi-byte on Solaris 10.
Solution: Add #ifdef X_HAVE_UTF8_STRING. (Laurent Blume)
Files: src/ui.c
*** ../vim-7.3.885/src/ui.c 2013-03-13 17:50:20.000000000 +0100
--- src/ui.c 2013-04-12 12:24:10.000000000 +0200
***************
*** 1458,1464 ****
int
clip_gen_owner_exists(cbd)
! VimClipboard *cbd;
{
#ifdef FEAT_XCLIPBOARD
# ifdef FEAT_GUI_GTK
--- 1458,1464 ----
int
clip_gen_owner_exists(cbd)
! VimClipboard *cbd UNUSED;
{
#ifdef FEAT_XCLIPBOARD
# ifdef FEAT_GUI_GTK
***************
*** 2134,2140 ****
text_prop.encoding = *type;
text_prop.format = *format;
text_prop.nitems = len;
! #ifdef FEAT_MBYTE
if (*type == utf8_atom)
status = Xutf8TextPropertyToTextList(X_DISPLAY, &text_prop,
&text_list, &n_text);
--- 2134,2140 ----
text_prop.encoding = *type;
text_prop.format = *format;
text_prop.nitems = len;
! #if defined(FEAT_MBYTE) && defined(X_HAVE_UTF8_STRING)
if (*type == utf8_atom)
status = Xutf8TextPropertyToTextList(X_DISPLAY, &text_prop,
&text_list, &n_text);
***************
*** 2196,2203 ****
default: type = XA_STRING;
}
#ifdef FEAT_MBYTE
! if (type == utf8_atom && !enc_utf8)
! /* Only request utf-8 when 'encoding' is utf8. */
continue;
#endif
success = MAYBE;
--- 2196,2208 ----
default: type = XA_STRING;
}
#ifdef FEAT_MBYTE
! if (type == utf8_atom
! # if defined(X_HAVE_UTF8_STRING)
! && !enc_utf8
! # endif
! )
! /* Only request utf-8 when 'encoding' is utf8 and
! * Xutf8TextPropertyToTextList is available. */
continue;
#endif
success = MAYBE;
*** ../vim-7.3.885/src/version.c 2013-04-12 12:18:43.000000000 +0200
--- src/version.c 2013-04-12 12:25:44.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 886,
/**/
--
hundred-and-one symptoms of being an internet addict:
149. You find your computer sexier than your girlfriend
/// 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 ///

308
7.3.887 Normal file
View File

@ -0,0 +1,308 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.887
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.3.887
Problem: No tests for Visual mode operators, what 7.3.879 fixes.
Solution: Add a new test file. (David Bürgin)
Files: src/testdir/test94.in, src/testdir/test94.ok,
src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
src/testdir/Make_vms.mms, src/testdir/Makefile
*** ../vim-7.3.886/src/testdir/test94.in 2013-04-12 13:44:19.000000000 +0200
--- src/testdir/test94.in 2013-04-12 13:37:12.000000000 +0200
***************
*** 0 ****
--- 1,98 ----
+ Test for Visual mode and operators
+
+ Tests for the two kinds of operations: Those executed with Visual mode
+ followed by an operator and those executed via Operator-pending mode. Also
+ part of the test are mappings, counts, and repetition with the . command.
+
+ Test cases:
+ - Visual modes (v V CTRL-V) followed by an operator; count; repeating
+ - Visual mode maps; count; repeating
+ - Simple
+ - With an Ex command (custom text object)
+ - Operator-pending mode maps
+ - Simple
+ - With Ex command moving the cursor
+ - With Ex command and Visual selection (custom text object)
+ - Patch 7.3.879: Properly abort Ex command in Operator-pending mode
+
+ STARTTEST
+ :so small.vim
+ :set nocp
+ :
+ :" User functions
+ :function MoveToCap()
+ : call search('\u', 'W')
+ :endfunction
+ :function SelectInCaps()
+ : let [line1, col1] = searchpos('\u', 'bcnW')
+ : let [line2, col2] = searchpos('.\u', 'nW')
+ : call setpos("'<", [0, line1, col1, 0])
+ : call setpos("'>", [0, line2, col2, 0])
+ : normal! gv
+ :endfunction
+ :function MoveToEndCount(count)
+ : normal! v:count . e
+ :endfunction
+ :
+ :" Visual modes followed by operator
+ /^apple
+ lvld.l3vd.:
+ /^line 1
+ Vcnewlinej.j2Vd.:
+ /^xxxx
+ jlc l.l2c----l.:
+ :
+ :" Visual mode maps (movement and text object)
+ :vnoremap W /\u/s-1<CR>
+ :vnoremap iW :<C-U>call SelectInCaps()<CR>
+ /^Kiwi
+ vWcNol.fD2vd.:
+ /^Jambu
+ llviWc-l.l2vdl.:
+ :
+ :" Operator-pending mode maps (movement and text object)
+ :onoremap W /\u/<CR>
+ :onoremap <Leader>W :<C-U>call MoveToCap()<CR>
+ :onoremap iW :<C-U>call SelectInCaps()<CR>
+ /^Pineapple
+ cW-l.l2.l.:
+ /^Juniper
+ g?\WfD.:
+ /^Lemon
+ yiWPlciWNew:
+ :
+ :" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
+ /^zzzz
+ dV: dv: :set noma | let v:errmsg = ''
+ d: :set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'
+ dv:dV::set noma | let v:errmsg = ''
+ d::set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'
+ :/^start:/+2,$w! test.out
+ :q!
+ ENDTEST
+
+ start:
+
+ apple banana cherry
+
+ line 1 line 1
+ line 2 line 2
+ line 3 line 3
+ line 4 line 4
+ line 5 line 5
+ line 6 line 6
+
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+
+ KiwiRaspberryDateWatermelonPeach
+ JambuRambutanBananaTangerineMango
+
+ PineappleQuinceLoganberryOrangeGrapefruitKiwiZ
+ JuniperDurianZ
+ LemonNectarineZ
+
+ zzzz
+ zzzz
*** ../vim-7.3.886/src/testdir/test94.ok 2013-04-12 13:44:19.000000000 +0200
--- src/testdir/test94.ok 2013-04-12 13:37:12.000000000 +0200
***************
*** 0 ****
--- 1,20 ----
+ a y
+
+ newline
+ newline
+
+ --------x
+ --------x
+ xxxx--------x
+ xxxx--------x
+
+ NoNoberryach
+ --ago
+
+ ----Z
+ WhavcreQhevnaZ
+ LemonNewNectarineZ
+
+ zzz
+ ok
+ ok
*** ../vim-7.3.886/src/testdir/Make_amiga.mak 2013-02-26 17:21:15.000000000 +0100
--- src/testdir/Make_amiga.mak 2013-04-12 13:39:47.000000000 +0200
***************
*** 32,38 ****
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out test91.out test92.out test93.out
.SUFFIXES: .in .out
--- 32,39 ----
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out test91.out test92.out test93.out \
! test94.out
.SUFFIXES: .in .out
***************
*** 142,144 ****
--- 143,146 ----
test91.out: test91.in
test92.out: test92.in
test93.out: test93.in
+ test94.out: test94.in
*** ../vim-7.3.886/src/testdir/Make_dos.mak 2013-02-26 17:21:15.000000000 +0100
--- src/testdir/Make_dos.mak 2013-04-12 13:39:56.000000000 +0200
***************
*** 31,37 ****
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out test92.out test93.out
SCRIPTS32 = test50.out test70.out
--- 31,38 ----
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out test92.out test93.out \
! test94.out
SCRIPTS32 = test50.out test70.out
*** ../vim-7.3.886/src/testdir/Make_ming.mak 2013-02-26 17:21:15.000000000 +0100
--- src/testdir/Make_ming.mak 2013-04-12 13:40:06.000000000 +0200
***************
*** 51,57 ****
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out test92.out test93.out
SCRIPTS32 = test50.out test70.out
--- 51,58 ----
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out test92.out test93.out \
! test94.out
SCRIPTS32 = test50.out test70.out
*** ../vim-7.3.886/src/testdir/Make_os2.mak 2013-02-26 17:21:15.000000000 +0100
--- src/testdir/Make_os2.mak 2013-04-12 13:40:13.000000000 +0200
***************
*** 32,38 ****
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out test91.out test92.out test93.out
.SUFFIXES: .in .out
--- 32,39 ----
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
! test89.out test90.out test91.out test92.out test93.out \
! test94.out
.SUFFIXES: .in .out
*** ../vim-7.3.886/src/testdir/Make_vms.mms 2013-02-26 17:21:15.000000000 +0100
--- src/testdir/Make_vms.mms 2013-04-12 13:40:24.000000000 +0200
***************
*** 4,10 ****
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
! # Last change: 2013-02-21
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
--- 4,10 ----
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
! # Last change: 2013 Apr 12
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
***************
*** 77,83 ****
test71.out test72.out test74.out test75.out test76.out \
test77.out test78.out test79.out test80.out test81.out \
test82.out test83.out test84.out test88.out test89.out \
! test90.out test91.out test92.out test93.out
# Known problems:
# Test 30: a problem around mac format - unknown reason
--- 77,83 ----
test71.out test72.out test74.out test75.out test76.out \
test77.out test78.out test79.out test80.out test81.out \
test82.out test83.out test84.out test88.out test89.out \
! test90.out test91.out test92.out test93.out test94.out
# Known problems:
# Test 30: a problem around mac format - unknown reason
*** ../vim-7.3.886/src/testdir/Makefile 2013-02-26 17:21:15.000000000 +0100
--- src/testdir/Makefile 2013-04-12 13:40:32.000000000 +0200
***************
*** 28,34 ****
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out test92.out test93.out
SCRIPTS_GUI = test16.out
--- 28,35 ----
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
! test89.out test90.out test91.out test92.out test93.out \
! test94.out
SCRIPTS_GUI = test16.out
*** ../vim-7.3.886/src/version.c 2013-04-12 12:27:24.000000000 +0200
--- src/version.c 2013-04-12 13:43:34.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 887,
/**/
--
hundred-and-one symptoms of being an internet addict:
153. You find yourself staring at your "inbox" waiting for new e-mail
to arrive.
/// 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 ///

150
7.3.888 Normal file
View File

@ -0,0 +1,150 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.888
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.3.888
Problem: Filename completion with 'fileignorecase' does not work for
multi-byte characters.
Solution: Make 'fileignorecase' work properly. (Hirohito Higashi)
Files: src/misc2.c
*** ../vim-7.3.887/src/misc2.c 2013-03-19 18:31:45.000000000 +0100
--- src/misc2.c 2013-04-12 14:15:03.000000000 +0200
***************
*** 6099,6150 ****
int maxlen;
{
int i;
const char *s = NULL;
! for (i = 0; maxlen < 0 || i < maxlen; ++i)
{
/* End of "p": check if "q" also ends or just has a slash. */
! if (p[i] == NUL)
{
! if (q[i] == NUL) /* full match */
return 0;
s = q;
break;
}
/* End of "q": check if "p" just has a slash. */
! if (q[i] == NUL)
{
s = p;
break;
}
! if ((p_fic ? TOUPPER_LOC(p[i]) != TOUPPER_LOC(q[i]) : p[i] != q[i])
#ifdef BACKSLASH_IN_FILENAME
/* consider '/' and '\\' to be equal */
! && !((p[i] == '/' && q[i] == '\\')
! || (p[i] == '\\' && q[i] == '/'))
#endif
)
{
! if (vim_ispathsep(p[i]))
return -1;
! if (vim_ispathsep(q[i]))
return 1;
! return ((char_u *)p)[i] - ((char_u *)q)[i]; /* no match */
}
}
if (s == NULL) /* "i" ran into "maxlen" */
return 0;
/* ignore a trailing slash, but not "//" or ":/" */
! if (s[i + 1] == NUL
&& i > 0
&& !after_pathsep((char_u *)s, (char_u *)s + i)
#ifdef BACKSLASH_IN_FILENAME
! && (s[i] == '/' || s[i] == '\\')
#else
! && s[i] == '/'
#endif
)
return 0; /* match with trailing slash */
--- 6099,6157 ----
int maxlen;
{
int i;
+ int c1, c2;
const char *s = NULL;
! for (i = 0; maxlen < 0 || i < maxlen; i += MB_PTR2LEN((char_u *)p + i))
{
+ c1 = PTR2CHAR((char_u *)p + i);
+ c2 = PTR2CHAR((char_u *)q + i);
+
/* End of "p": check if "q" also ends or just has a slash. */
! if (c1 == NUL)
{
! if (c2 == NUL) /* full match */
return 0;
s = q;
break;
}
/* End of "q": check if "p" just has a slash. */
! if (c2 == NUL)
{
s = p;
break;
}
! if ((p_fic ? MB_TOUPPER(c1) != MB_TOUPPER(c2) : c1 != c2)
#ifdef BACKSLASH_IN_FILENAME
/* consider '/' and '\\' to be equal */
! && !((c1 == '/' && c2 == '\\')
! || (c1 == '\\' && c2 == '/'))
#endif
)
{
! if (vim_ispathsep(c1))
return -1;
! if (vim_ispathsep(c2))
return 1;
! return p_fic ? MB_TOUPPER(c1) - MB_TOUPPER(c2)
! : c1 - c2; /* no match */
}
}
if (s == NULL) /* "i" ran into "maxlen" */
return 0;
+ c1 = PTR2CHAR((char_u *)s + i);
+ c2 = PTR2CHAR((char_u *)s + i + MB_PTR2LEN((char_u *)s + i));
/* ignore a trailing slash, but not "//" or ":/" */
! if (c2 == NUL
&& i > 0
&& !after_pathsep((char_u *)s, (char_u *)s + i)
#ifdef BACKSLASH_IN_FILENAME
! && (c1 == '/' || c1 == '\\')
#else
! && c1 == '/'
#endif
)
return 0; /* match with trailing slash */
*** ../vim-7.3.887/src/version.c 2013-04-12 13:44:49.000000000 +0200
--- src/version.c 2013-04-12 14:10:41.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 888,
/**/
--
hundred-and-one symptoms of being an internet addict:
155. You forget to eat because you're too busy surfing the net.
/// 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 ///

71
7.3.889 Normal file
View File

@ -0,0 +1,71 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.889
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.3.889
Problem: Can't build with Ruby 2.0 on a 64 bit system.
Solution: Define rb_fix2int and rb_num2int. (Kohei Suzuki)
Files: src/if_ruby.c
*** ../vim-7.3.888/src/if_ruby.c 2013-03-07 15:16:16.000000000 +0100
--- src/if_ruby.c 2013-04-12 15:25:26.000000000 +0200
***************
*** 88,93 ****
--- 88,101 ----
# define rb_int2big rb_int2big_stub
#endif
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \
+ && SIZEOF_INT < SIZEOF_LONG
+ /* Ruby 2.0 defines a number of static functions which use rb_fix2int and
+ * rb_num2int if SIZEOF_INT < SIZEOF_LONG (64bit) */
+ # define rb_fix2int rb_fix2int_stub
+ # define rb_num2int rb_num2int_stub
+ #endif
+
#include <ruby.h>
#ifdef RUBY19_OR_LATER
# include <ruby/encoding.h>
***************
*** 352,357 ****
--- 360,376 ----
{
return dll_rb_int2big(x);
}
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \
+ && SIZEOF_INT < SIZEOF_LONG
+ long rb_fix2int_stub(VALUE x)
+ {
+ return dll_rb_fix2int(x);
+ }
+ long rb_num2int_stub(VALUE x)
+ {
+ return dll_rb_num2int(x);
+ }
+ #endif
#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20
VALUE
rb_float_new_in_heap(double d)
*** ../vim-7.3.888/src/version.c 2013-04-12 14:42:35.000000000 +0200
--- src/version.c 2013-04-12 15:24:15.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 889,
/**/
--
"Hit any key to continue" is very confusing when you have two keyboards.
/// 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 ///

60
7.3.890 Normal file
View File

@ -0,0 +1,60 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.890
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.3.890
Problem: Test 79 fails on Windows. (Michael Soyka)
Solution: Add comment below line causing an error.
Files: src/testdir/test79.in
*** ../vim-7.3.889/src/testdir/test79.in 2013-03-19 17:42:10.000000000 +0100
--- src/testdir/test79.in 2013-04-13 11:16:38.000000000 +0200
***************
*** 206,216 ****
STARTTEST
:set magic&
:set cpo&
! /^TEST/
j:s/A./\=submatch(0)/
j:s/B./\=submatch(0)/
/^Q$
:s/Q[^\n]Q/\=submatch(0)."foobar"/
ENDTEST
TEST_7:
--- 206,217 ----
STARTTEST
:set magic&
:set cpo&
! /^TEST_7/
j:s/A./\=submatch(0)/
j:s/B./\=submatch(0)/
/^Q$
:s/Q[^\n]Q/\=submatch(0)."foobar"/
+ :" Avoid :s error breaks dotest map on Windows.
ENDTEST
TEST_7:
*** ../vim-7.3.889/src/version.c 2013-04-14 16:18:52.000000000 +0200
--- src/version.c 2013-04-14 16:21:14.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 890,
/**/
--
"Hit any key to continue" it said, but nothing happened after F sharp.
/// 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 ///

142
7.3.891 Normal file
View File

@ -0,0 +1,142 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.891
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.3.891
Problem: Merging viminfo history doesn't work well.
Solution: Don't stop when one type of history is empty. Don't merge history
when writing viminfo.
Files: src/ex_getln.c
*** ../vim-7.3.890/src/ex_getln.c 2013-04-06 14:28:56.000000000 +0200
--- src/ex_getln.c 2013-04-14 16:25:28.000000000 +0200
***************
*** 6130,6136 ****
for (type = 0; type < HIST_COUNT; ++type)
{
if (history[type] == NULL)
! return;
idx = hisidx[type] + viminfo_hisidx[type];
if (idx >= hislen)
idx -= hislen;
--- 6130,6136 ----
for (type = 0; type < HIST_COUNT; ++type)
{
if (history[type] == NULL)
! continue;
idx = hisidx[type] + viminfo_hisidx[type];
if (idx >= hislen)
idx -= hislen;
***************
*** 6182,6187 ****
--- 6182,6188 ----
int num_saved;
char_u *p;
int c;
+ int round;
init_history();
if (hislen == 0)
***************
*** 6200,6225 ****
_("Input Line"));
if (num_saved > hislen)
num_saved = hislen;
! i = hisidx[type];
! if (i >= 0)
! while (num_saved--)
! {
! p = history[type][i].hisstr;
! if (p != NULL)
{
! fputc(hist_type2char(type, TRUE), fp);
! /* For the search history: put the separator in the second
! * column; use a space if there isn't one. */
! if (type == HIST_SEARCH)
{
! c = p[STRLEN(p) + 1];
! putc(c == NUL ? ' ' : c, fp);
}
- viminfo_writestring(fp, p);
}
! if (--i < 0)
! i = hislen - 1;
! }
}
}
#endif /* FEAT_VIMINFO */
--- 6201,6250 ----
_("Input Line"));
if (num_saved > hislen)
num_saved = hislen;
!
! /*
! * Merge typed and viminfo history:
! * round 1: history of typed commands.
! * round 2: history from recently read viminfo.
! */
! for (round = 1; round <= 2; ++round)
! {
! i = round == 1 ? hisidx[type] : 0;
! if (i >= 0)
! while (num_saved > 0
! && !(round == 2 && i >= viminfo_hisidx[type]))
{
! p = round == 1 ? history[type][i].hisstr
! : viminfo_history[type][i];
! if (p != NULL)
{
! --num_saved;
! fputc(hist_type2char(type, TRUE), fp);
! /* For the search history: put the separator in the
! * second column; use a space if there isn't one. */
! if (type == HIST_SEARCH)
! {
! c = p[STRLEN(p) + 1];
! putc(c == NUL ? ' ' : c, fp);
! }
! viminfo_writestring(fp, p);
! }
! if (round == 1)
! {
! /* Decrement index, loop around and stop when back at
! * the start. */
! if (--i < 0)
! i = hislen - 1;
! if (i == hisidx[type])
! break;
! }
! else
! {
! /* Increment index. Stop at the end in the while. */
! ++i;
}
}
! }
}
}
#endif /* FEAT_VIMINFO */
*** ../vim-7.3.890/src/version.c 2013-04-14 16:21:30.000000000 +0200
--- src/version.c 2013-04-14 16:23:17.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 891,
/**/
--
"The question of whether computers can think is just like the question
of whether submarines can swim." -- Edsger W. Dijkstra
/// 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 ///

295
7.3.892 Normal file
View File

@ -0,0 +1,295 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.892
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.3.892 (after 7.3.891)
Problem: Still merging problems for viminfo history.
Solution: Do not merge lines when writing, don't write old viminfo lines.
Files: src/ex_getln.c, src/ex_cmds.c, src/proto/ex_getln.pro
*** ../vim-7.3.891/src/ex_getln.c 2013-04-14 16:26:08.000000000 +0200
--- src/ex_getln.c 2013-04-14 23:12:37.000000000 +0200
***************
*** 68,74 ****
static int hist_char2type __ARGS((int c));
! static int in_history __ARGS((int, char_u *, int, int));
# ifdef FEAT_EVAL
static int calc_hist_idx __ARGS((int histype, int num));
# endif
--- 68,74 ----
static int hist_char2type __ARGS((int c));
! static int in_history __ARGS((int, char_u *, int, int, int));
# ifdef FEAT_EVAL
static int calc_hist_idx __ARGS((int histype, int num));
# endif
***************
*** 5397,5407 ****
* If 'move_to_front' is TRUE, matching entry is moved to end of history.
*/
static int
! in_history(type, str, move_to_front, sep)
int type;
char_u *str;
int move_to_front; /* Move the entry to the front if it exists */
int sep;
{
int i;
int last_i = -1;
--- 5397,5408 ----
* If 'move_to_front' is TRUE, matching entry is moved to end of history.
*/
static int
! in_history(type, str, move_to_front, sep, writing)
int type;
char_u *str;
int move_to_front; /* Move the entry to the front if it exists */
int sep;
+ int writing; /* ignore entries read from viminfo */
{
int i;
int last_i = -1;
***************
*** 5419,5424 ****
--- 5420,5426 ----
* well. */
p = history[type][i].hisstr;
if (STRCMP(str, p) == 0
+ && !(writing && history[type][i].viminfo)
&& (type != HIST_SEARCH || sep == p[STRLEN(p) + 1]))
{
if (!move_to_front)
***************
*** 5513,5519 ****
}
last_maptick = -1;
}
! if (!in_history(histype, new_entry, TRUE, sep))
{
if (++hisidx[histype] == hislen)
hisidx[histype] = 0;
--- 5515,5521 ----
}
last_maptick = -1;
}
! if (!in_history(histype, new_entry, TRUE, sep, FALSE))
{
if (++hisidx[histype] == hislen)
hisidx[histype] = 0;
***************
*** 6032,6039 ****
* This allocates history arrays to store the read history lines.
*/
void
! prepare_viminfo_history(asklen)
int asklen;
{
int i;
int num;
--- 6034,6042 ----
* This allocates history arrays to store the read history lines.
*/
void
! prepare_viminfo_history(asklen, writing)
int asklen;
+ int writing;
{
int i;
int num;
***************
*** 6041,6047 ****
int len;
init_history();
! viminfo_add_at_front = (asklen != 0);
if (asklen > hislen)
asklen = hislen;
--- 6044,6050 ----
int len;
init_history();
! viminfo_add_at_front = (asklen != 0 && !writing);
if (asklen > hislen)
asklen = hislen;
***************
*** 6073,6080 ****
* new.
*/
int
! read_viminfo_history(virp)
vir_T *virp;
{
int type;
long_u len;
--- 6076,6084 ----
* new.
*/
int
! read_viminfo_history(virp, writing)
vir_T *virp;
+ int writing;
{
int type;
long_u len;
***************
*** 6090,6096 ****
int sep = (*val == ' ' ? NUL : *val);
if (!in_history(type, val + (type == HIST_SEARCH),
! viminfo_add_at_front, sep))
{
/* Need to re-allocate to append the separator byte. */
len = STRLEN(val);
--- 6094,6100 ----
int sep = (*val == ' ' ? NUL : *val);
if (!in_history(type, val + (type == HIST_SEARCH),
! viminfo_add_at_front, sep, writing))
{
/* Need to re-allocate to append the separator byte. */
len = STRLEN(val);
***************
*** 6120,6125 ****
--- 6124,6132 ----
return viminfo_readline(virp);
}
+ /*
+ * Finish reading history lines from viminfo. Not used when writing viminfo.
+ */
void
finish_viminfo_history()
{
***************
*** 6216,6222 ****
{
p = round == 1 ? history[type][i].hisstr
: viminfo_history[type][i];
! if (p != NULL)
{
--num_saved;
fputc(hist_type2char(type, TRUE), fp);
--- 6223,6229 ----
{
p = round == 1 ? history[type][i].hisstr
: viminfo_history[type][i];
! if (p != NULL && (round == 2 || !history[type][i].viminfo))
{
--num_saved;
fputc(hist_type2char(type, TRUE), fp);
***************
*** 6245,6250 ****
--- 6252,6261 ----
}
}
}
+ for (i = 0; i < viminfo_hisidx[type]; ++i)
+ vim_free(viminfo_history[type][i]);
+ vim_free(viminfo_history[type]);
+ viminfo_history[type] = NULL;
}
}
#endif /* FEAT_VIMINFO */
*** ../vim-7.3.891/src/ex_cmds.c 2013-03-07 16:41:26.000000000 +0100
--- src/ex_cmds.c 2013-04-14 23:08:26.000000000 +0200
***************
*** 2113,2119 ****
buf_T *buf;
#ifdef FEAT_CMDHIST
! prepare_viminfo_history(forceit ? 9999 : 0);
#endif
eof = viminfo_readline(virp);
while (!eof && virp->vir_line[0] != '>')
--- 2113,2119 ----
buf_T *buf;
#ifdef FEAT_CMDHIST
! prepare_viminfo_history(forceit ? 9999 : 0, writing);
#endif
eof = viminfo_readline(virp);
while (!eof && virp->vir_line[0] != '>')
***************
*** 2161,2167 ****
case '=':
case '@':
#ifdef FEAT_CMDHIST
! eof = read_viminfo_history(virp);
#else
eof = viminfo_readline(virp);
#endif
--- 2161,2167 ----
case '=':
case '@':
#ifdef FEAT_CMDHIST
! eof = read_viminfo_history(virp, writing);
#else
eof = viminfo_readline(virp);
#endif
***************
*** 2182,2188 ****
#ifdef FEAT_CMDHIST
/* Finish reading history items. */
! finish_viminfo_history();
#endif
/* Change file names to buffer numbers for fmarks. */
--- 2182,2189 ----
#ifdef FEAT_CMDHIST
/* Finish reading history items. */
! if (!writing)
! finish_viminfo_history();
#endif
/* Change file names to buffer numbers for fmarks. */
*** ../vim-7.3.891/src/proto/ex_getln.pro 2011-05-19 18:26:34.000000000 +0200
--- src/proto/ex_getln.pro 2013-04-14 23:12:02.000000000 +0200
***************
*** 48,55 ****
void remove_key_from_history __ARGS((void));
int get_list_range __ARGS((char_u **str, int *num1, int *num2));
void ex_history __ARGS((exarg_T *eap));
! void prepare_viminfo_history __ARGS((int asklen));
! int read_viminfo_history __ARGS((vir_T *virp));
void finish_viminfo_history __ARGS((void));
void write_viminfo_history __ARGS((FILE *fp));
void cmd_pchar __ARGS((int c, int offset));
--- 48,55 ----
void remove_key_from_history __ARGS((void));
int get_list_range __ARGS((char_u **str, int *num1, int *num2));
void ex_history __ARGS((exarg_T *eap));
! void prepare_viminfo_history __ARGS((int asklen, int writing));
! int read_viminfo_history __ARGS((vir_T *virp, int writing));
void finish_viminfo_history __ARGS((void));
void write_viminfo_history __ARGS((FILE *fp));
void cmd_pchar __ARGS((int c, int offset));
*** ../vim-7.3.891/src/version.c 2013-04-14 16:26:08.000000000 +0200
--- src/version.c 2013-04-14 22:53:04.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 892,
/**/
--
"Hit any key to continue" is a lie.
/// 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 ///

718
7.3.893 Normal file
View File

@ -0,0 +1,718 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.893
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.3.893
Problem: Crash when using b:, w: or t: after closing the buffer, window or
tabpage.
Solution: Allocate the dictionary instead of having it part of the
buffer/window/tabpage struct. (Yukihiro Nakadaira)
Files: src/buffer.c, src/eval.c, src/fileio.c, src/structs.h,
src/window.c, src/proto/eval.pro
*** ../vim-7.3.892/src/buffer.c 2013-03-19 16:46:59.000000000 +0100
--- src/buffer.c 2013-04-15 12:07:07.000000000 +0200
***************
*** 648,653 ****
--- 648,656 ----
buf_T *buf;
{
free_buffer_stuff(buf, TRUE);
+ #ifdef FEAT_EVAL
+ unref_var_dict(buf->b_vars);
+ #endif
#ifdef FEAT_LUA
lua_buffer_free(buf);
#endif
***************
*** 689,696 ****
#endif
}
#ifdef FEAT_EVAL
! vars_clear(&buf->b_vars.dv_hashtab); /* free all internal variables */
! hash_init(&buf->b_vars.dv_hashtab);
#endif
#ifdef FEAT_USR_CMDS
uc_clear(&buf->b_ucmds); /* clear local user commands */
--- 692,699 ----
#endif
}
#ifdef FEAT_EVAL
! vars_clear(&buf->b_vars->dv_hashtab); /* free all internal variables */
! hash_init(&buf->b_vars->dv_hashtab);
#endif
#ifdef FEAT_USR_CMDS
uc_clear(&buf->b_ucmds); /* clear local user commands */
***************
*** 1694,1699 ****
--- 1697,1713 ----
vim_free(ffname);
return NULL;
}
+ #ifdef FEAT_EVAL
+ /* init b: variables */
+ buf->b_vars = dict_alloc();
+ if (buf->b_vars == NULL)
+ {
+ vim_free(ffname);
+ vim_free(buf);
+ return NULL;
+ }
+ init_var_dict(buf->b_vars, &buf->b_bufvar, VAR_SCOPE);
+ #endif
}
if (ffname != NULL)
***************
*** 1778,1787 ****
buf->b_wininfo->wi_fpos.lnum = lnum;
buf->b_wininfo->wi_win = curwin;
- #ifdef FEAT_EVAL
- /* init b: variables */
- init_var_dict(&buf->b_vars, &buf->b_bufvar, VAR_SCOPE);
- #endif
#ifdef FEAT_SYN_HL
hash_init(&buf->b_s.b_keywtab);
hash_init(&buf->b_s.b_keywtab_ic);
--- 1792,1797 ----
*** ../vim-7.3.892/src/eval.c 2013-03-19 14:25:50.000000000 +0100
--- src/eval.c 2013-04-15 12:26:33.000000000 +0200
***************
*** 2131,2137 ****
{
char_u numbuf[NUMBUFLEN];
! list_hashtable_vars(&curbuf->b_vars.dv_hashtab, (char_u *)"b:",
TRUE, first);
sprintf((char *)numbuf, "%ld", (long)curbuf->b_changedtick);
--- 2131,2137 ----
{
char_u numbuf[NUMBUFLEN];
! list_hashtable_vars(&curbuf->b_vars->dv_hashtab, (char_u *)"b:",
TRUE, first);
sprintf((char *)numbuf, "%ld", (long)curbuf->b_changedtick);
***************
*** 2146,2152 ****
list_win_vars(first)
int *first;
{
! list_hashtable_vars(&curwin->w_vars.dv_hashtab,
(char_u *)"w:", TRUE, first);
}
--- 2146,2152 ----
list_win_vars(first)
int *first;
{
! list_hashtable_vars(&curwin->w_vars->dv_hashtab,
(char_u *)"w:", TRUE, first);
}
***************
*** 2158,2164 ****
list_tab_vars(first)
int *first;
{
! list_hashtable_vars(&curtab->tp_vars.dv_hashtab,
(char_u *)"t:", TRUE, first);
}
#endif
--- 2158,2164 ----
list_tab_vars(first)
int *first;
{
! list_hashtable_vars(&curtab->tp_vars->dv_hashtab,
(char_u *)"t:", TRUE, first);
}
#endif
***************
*** 3948,3954 ****
}
/* b: variables */
! ht = &curbuf->b_vars.dv_hashtab;
if (bdone < ht->ht_used)
{
if (bdone++ == 0)
--- 3948,3954 ----
}
/* b: variables */
! ht = &curbuf->b_vars->dv_hashtab;
if (bdone < ht->ht_used)
{
if (bdone++ == 0)
***************
*** 3966,3972 ****
}
/* w: variables */
! ht = &curwin->w_vars.dv_hashtab;
if (wdone < ht->ht_used)
{
if (wdone++ == 0)
--- 3966,3972 ----
}
/* w: variables */
! ht = &curwin->w_vars->dv_hashtab;
if (wdone < ht->ht_used)
{
if (wdone++ == 0)
***************
*** 3980,3986 ****
#ifdef FEAT_WINDOWS
/* t: variables */
! ht = &curtab->tp_vars.dv_hashtab;
if (tdone < ht->ht_used)
{
if (tdone++ == 0)
--- 3980,3986 ----
#ifdef FEAT_WINDOWS
/* t: variables */
! ht = &curtab->tp_vars->dv_hashtab;
if (tdone < ht->ht_used)
{
if (tdone++ == 0)
***************
*** 6787,6802 ****
/* buffer-local variables */
for (buf = firstbuf; buf != NULL; buf = buf->b_next)
! set_ref_in_ht(&buf->b_vars.dv_hashtab, copyID);
/* window-local variables */
FOR_ALL_TAB_WINDOWS(tp, wp)
! set_ref_in_ht(&wp->w_vars.dv_hashtab, copyID);
#ifdef FEAT_WINDOWS
/* tabpage-local variables */
for (tp = first_tabpage; tp != NULL; tp = tp->tp_next)
! set_ref_in_ht(&tp->tp_vars.dv_hashtab, copyID);
#endif
/* global variables */
--- 6787,6802 ----
/* buffer-local variables */
for (buf = firstbuf; buf != NULL; buf = buf->b_next)
! set_ref_in_item(&buf->b_bufvar.di_tv, copyID);
/* window-local variables */
FOR_ALL_TAB_WINDOWS(tp, wp)
! set_ref_in_item(&wp->w_winvar.di_tv, copyID);
#ifdef FEAT_WINDOWS
/* tabpage-local variables */
for (tp = first_tabpage; tp != NULL; tp = tp->tp_next)
! set_ref_in_item(&tp->tp_winvar.di_tv, copyID);
#endif
/* global variables */
***************
*** 11156,11162 ****
* find_var_in_ht(). */
varname = (char_u *)"b:" + 2;
/* look up the variable */
! v = find_var_in_ht(&curbuf->b_vars.dv_hashtab, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
}
--- 11156,11162 ----
* find_var_in_ht(). */
varname = (char_u *)"b:" + 2;
/* look up the variable */
! v = find_var_in_ht(&curbuf->b_vars->dv_hashtab, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
}
***************
*** 11779,11785 ****
if (tp != NULL && varname != NULL)
{
/* look up the variable */
! v = find_var_in_ht(&tp->tp_vars.dv_hashtab, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
else if (argvars[2].v_type != VAR_UNKNOWN)
--- 11779,11785 ----
if (tp != NULL && varname != NULL)
{
/* look up the variable */
! v = find_var_in_ht(&tp->tp_vars->dv_hashtab, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
else if (argvars[2].v_type != VAR_UNKNOWN)
***************
*** 11935,11941 ****
* find_var_in_ht(). */
varname = (char_u *)"w:" + 2;
/* look up the variable */
! v = find_var_in_ht(&win->w_vars.dv_hashtab, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
}
--- 11935,11941 ----
* find_var_in_ht(). */
varname = (char_u *)"w:" + 2;
/* look up the variable */
! v = find_var_in_ht(&win->w_vars->dv_hashtab, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
}
***************
*** 14333,14339 ****
rettv->v_type = VAR_STRING;
}
! #ifdef FEAT_MZSCHEME
/*
* "mzeval()" function
*/
--- 14333,14339 ----
rettv->v_type = VAR_STRING;
}
! #if defined(FEAT_MZSCHEME) || defined(PROTO)
/*
* "mzeval()" function
*/
***************
*** 20134,20145 ****
|| vim_strchr(name + 2, AUTOLOAD_CHAR) != NULL)
return NULL;
if (*name == 'b') /* buffer variable */
! return &curbuf->b_vars.dv_hashtab;
if (*name == 'w') /* window variable */
! return &curwin->w_vars.dv_hashtab;
#ifdef FEAT_WINDOWS
if (*name == 't') /* tab page variable */
! return &curtab->tp_vars.dv_hashtab;
#endif
if (*name == 'v') /* v: variable */
return &vimvarht;
--- 20134,20145 ----
|| vim_strchr(name + 2, AUTOLOAD_CHAR) != NULL)
return NULL;
if (*name == 'b') /* buffer variable */
! return &curbuf->b_vars->dv_hashtab;
if (*name == 'w') /* window variable */
! return &curwin->w_vars->dv_hashtab;
#ifdef FEAT_WINDOWS
if (*name == 't') /* tab page variable */
! return &curtab->tp_vars->dv_hashtab;
#endif
if (*name == 'v') /* v: variable */
return &vimvarht;
***************
*** 20229,20234 ****
--- 20229,20247 ----
}
/*
+ * Unreference a dictionary initialized by init_var_dict().
+ */
+ void
+ unref_var_dict(dict)
+ dict_T *dict;
+ {
+ /* Now the dict needs to be freed if no one else is using it, go back to
+ * normal reference counting. */
+ dict->dv_refcount -= DO_NOT_FREE_CNT - 1;
+ dict_unref(dict);
+ }
+
+ /*
* Clean up a list of internal variables.
* Frees all allocated variables and the value they contain.
* Clears hashtab "ht", does not free it.
*** ../vim-7.3.892/src/fileio.c 2013-03-19 16:46:59.000000000 +0100
--- src/fileio.c 2013-04-15 11:52:34.000000000 +0200
***************
*** 8955,8962 ****
/* Hmm, original window disappeared. Just use the first one. */
curwin = firstwin;
# ifdef FEAT_EVAL
! vars_clear(&aucmd_win->w_vars.dv_hashtab); /* free all w: variables */
! hash_init(&aucmd_win->w_vars.dv_hashtab); /* re-use the hashtab */
# endif
#else
curwin = aco->save_curwin;
--- 8955,8962 ----
/* Hmm, original window disappeared. Just use the first one. */
curwin = firstwin;
# ifdef FEAT_EVAL
! vars_clear(&aucmd_win->w_vars->dv_hashtab); /* free all w: variables */
! hash_init(&aucmd_win->w_vars->dv_hashtab); /* re-use the hashtab */
# endif
#else
curwin = aco->save_curwin;
*** ../vim-7.3.892/src/structs.h 2012-07-16 17:31:48.000000000 +0200
--- src/structs.h 2013-04-15 11:52:34.000000000 +0200
***************
*** 1611,1617 ****
#ifdef FEAT_EVAL
dictitem_T b_bufvar; /* variable for "b:" Dictionary */
! dict_T b_vars; /* internal variables, local to buffer */
#endif
#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
--- 1611,1617 ----
#ifdef FEAT_EVAL
dictitem_T b_bufvar; /* variable for "b:" Dictionary */
! dict_T *b_vars; /* internal variables, local to buffer */
#endif
#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
***************
*** 1757,1763 ****
frame_T *(tp_snapshot[SNAP_COUNT]); /* window layout snapshots */
#ifdef FEAT_EVAL
dictitem_T tp_winvar; /* variable for "t:" Dictionary */
! dict_T tp_vars; /* internal variables, local to tab page */
#endif
};
--- 1757,1763 ----
frame_T *(tp_snapshot[SNAP_COUNT]); /* window layout snapshots */
#ifdef FEAT_EVAL
dictitem_T tp_winvar; /* variable for "t:" Dictionary */
! dict_T *tp_vars; /* internal variables, local to tab page */
#endif
};
***************
*** 2080,2086 ****
#ifdef FEAT_EVAL
dictitem_T w_winvar; /* variable for "w:" Dictionary */
! dict_T w_vars; /* internal variables, local to window */
#endif
#if defined(FEAT_RIGHTLEFT) && defined(FEAT_FKMAP)
--- 2080,2086 ----
#ifdef FEAT_EVAL
dictitem_T w_winvar; /* variable for "w:" Dictionary */
! dict_T *w_vars; /* internal variables, local to window */
#endif
#if defined(FEAT_RIGHTLEFT) && defined(FEAT_FKMAP)
*** ../vim-7.3.892/src/window.c 2013-02-06 13:37:58.000000000 +0100
--- src/window.c 2013-04-15 12:20:09.000000000 +0200
***************
*** 3457,3481 ****
alloc_tabpage()
{
tabpage_T *tp;
tp = (tabpage_T *)alloc_clear((unsigned)sizeof(tabpage_T));
! if (tp != NULL)
{
! # ifdef FEAT_GUI
! int i;
! for (i = 0; i < 3; i++)
! tp->tp_prev_which_scrollbars[i] = -1;
# endif
# ifdef FEAT_DIFF
! tp->tp_diff_invalid = TRUE;
# endif
! #ifdef FEAT_EVAL
! /* init t: variables */
! init_var_dict(&tp->tp_vars, &tp->tp_winvar, VAR_SCOPE);
! #endif
! tp->tp_ch_used = p_ch;
! }
return tp;
}
--- 3457,3491 ----
alloc_tabpage()
{
tabpage_T *tp;
+ # ifdef FEAT_GUI
+ int i;
+ # endif
+
tp = (tabpage_T *)alloc_clear((unsigned)sizeof(tabpage_T));
! if (tp == NULL)
! return NULL;
!
! # ifdef FEAT_EVAL
! /* init t: variables */
! tp->tp_vars = dict_alloc();
! if (tp->tp_vars == NULL)
{
! vim_free(tp);
! return NULL;
! }
! init_var_dict(tp->tp_vars, &tp->tp_winvar, VAR_SCOPE);
! # endif
! # ifdef FEAT_GUI
! for (i = 0; i < 3; i++)
! tp->tp_prev_which_scrollbars[i] = -1;
# endif
# ifdef FEAT_DIFF
! tp->tp_diff_invalid = TRUE;
# endif
! tp->tp_ch_used = p_ch;
!
return tp;
}
***************
*** 3491,3497 ****
for (idx = 0; idx < SNAP_COUNT; ++idx)
clear_snapshot(tp, idx);
#ifdef FEAT_EVAL
! vars_clear(&tp->tp_vars.dv_hashtab); /* free all t: variables */
#endif
vim_free(tp);
}
--- 3501,3509 ----
for (idx = 0; idx < SNAP_COUNT; ++idx)
clear_snapshot(tp, idx);
#ifdef FEAT_EVAL
! vars_clear(&tp->tp_vars->dv_hashtab); /* free all t: variables */
! hash_init(&tp->tp_vars->dv_hashtab);
! unref_var_dict(tp->tp_vars);
#endif
vim_free(tp);
}
***************
*** 4363,4433 ****
* allocate window structure and linesizes arrays
*/
new_wp = (win_T *)alloc_clear((unsigned)sizeof(win_T));
! if (new_wp != NULL && win_alloc_lines(new_wp) == FAIL)
{
vim_free(new_wp);
! new_wp = NULL;
}
! if (new_wp != NULL)
{
#ifdef FEAT_AUTOCMD
! /* Don't execute autocommands while the window is not properly
! * initialized yet. gui_create_scrollbar() may trigger a FocusGained
! * event. */
! block_autocmds();
#endif
! /*
! * link the window in the window list
! */
#ifdef FEAT_WINDOWS
! if (!hidden)
! win_append(after, new_wp);
#endif
#ifdef FEAT_VERTSPLIT
! new_wp->w_wincol = 0;
! new_wp->w_width = Columns;
#endif
! /* position the display and the cursor at the top of the file. */
! new_wp->w_topline = 1;
#ifdef FEAT_DIFF
! new_wp->w_topfill = 0;
#endif
! new_wp->w_botline = 2;
! new_wp->w_cursor.lnum = 1;
#ifdef FEAT_SCROLLBIND
! new_wp->w_scbind_pos = 1;
#endif
! /* We won't calculate w_fraction until resizing the window */
! new_wp->w_fraction = 0;
! new_wp->w_prev_fraction_row = -1;
#ifdef FEAT_GUI
! if (gui.in_use)
! {
! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_LEFT],
! SBAR_LEFT, new_wp);
! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_RIGHT],
! SBAR_RIGHT, new_wp);
! }
! #endif
! #ifdef FEAT_EVAL
! /* init w: variables */
! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar, VAR_SCOPE);
#endif
#ifdef FEAT_FOLDING
! foldInitWin(new_wp);
#endif
#ifdef FEAT_AUTOCMD
! unblock_autocmds();
#endif
#ifdef FEAT_SEARCH_EXTRA
! new_wp->w_match_head = NULL;
! new_wp->w_next_match_id = 4;
#endif
- }
return new_wp;
}
--- 4375,4453 ----
* allocate window structure and linesizes arrays
*/
new_wp = (win_T *)alloc_clear((unsigned)sizeof(win_T));
! if (new_wp == NULL)
! return NULL;
!
! if (win_alloc_lines(new_wp) == FAIL)
{
vim_free(new_wp);
! return NULL;
}
! #ifdef FEAT_EVAL
! /* init w: variables */
! new_wp->w_vars = dict_alloc();
! if (new_wp->w_vars == NULL)
{
+ win_free_lsize(new_wp);
+ vim_free(new_wp);
+ return NULL;
+ }
+ init_var_dict(new_wp->w_vars, &new_wp->w_winvar, VAR_SCOPE);
+ #endif
+
#ifdef FEAT_AUTOCMD
! /* Don't execute autocommands while the window is not properly
! * initialized yet. gui_create_scrollbar() may trigger a FocusGained
! * event. */
! block_autocmds();
#endif
! /*
! * link the window in the window list
! */
#ifdef FEAT_WINDOWS
! if (!hidden)
! win_append(after, new_wp);
#endif
#ifdef FEAT_VERTSPLIT
! new_wp->w_wincol = 0;
! new_wp->w_width = Columns;
#endif
! /* position the display and the cursor at the top of the file. */
! new_wp->w_topline = 1;
#ifdef FEAT_DIFF
! new_wp->w_topfill = 0;
#endif
! new_wp->w_botline = 2;
! new_wp->w_cursor.lnum = 1;
#ifdef FEAT_SCROLLBIND
! new_wp->w_scbind_pos = 1;
#endif
! /* We won't calculate w_fraction until resizing the window */
! new_wp->w_fraction = 0;
! new_wp->w_prev_fraction_row = -1;
#ifdef FEAT_GUI
! if (gui.in_use)
! {
! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_LEFT],
! SBAR_LEFT, new_wp);
! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_RIGHT],
! SBAR_RIGHT, new_wp);
! }
#endif
#ifdef FEAT_FOLDING
! foldInitWin(new_wp);
#endif
#ifdef FEAT_AUTOCMD
! unblock_autocmds();
#endif
#ifdef FEAT_SEARCH_EXTRA
! new_wp->w_match_head = NULL;
! new_wp->w_next_match_id = 4;
#endif
return new_wp;
}
***************
*** 4488,4494 ****
clear_winopt(&wp->w_allbuf_opt);
#ifdef FEAT_EVAL
! vars_clear(&wp->w_vars.dv_hashtab); /* free all w: variables */
#endif
if (prevwin == wp)
--- 4508,4516 ----
clear_winopt(&wp->w_allbuf_opt);
#ifdef FEAT_EVAL
! vars_clear(&wp->w_vars->dv_hashtab); /* free all w: variables */
! hash_init(&wp->w_vars->dv_hashtab);
! unref_var_dict(wp->w_vars);
#endif
if (prevwin == wp)
*** ../vim-7.3.892/src/proto/eval.pro 2013-01-30 14:55:35.000000000 +0100
--- src/proto/eval.pro 2013-04-15 12:26:39.000000000 +0200
***************
*** 24,31 ****
int get_spellword __ARGS((list_T *list, char_u **pp));
typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd));
int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, int str_arg_only, typval_T *rettv));
- void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe));
long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe));
void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe));
void *save_funccal __ARGS((void));
void restore_funccal __ARGS((void *vfc));
--- 24,31 ----
int get_spellword __ARGS((list_T *list, char_u **pp));
typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd));
int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, int str_arg_only, typval_T *rettv));
long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+ void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe));
void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe));
void *save_funccal __ARGS((void));
void restore_funccal __ARGS((void *vfc));
***************
*** 95,100 ****
--- 95,101 ----
char_u *get_var_value __ARGS((char_u *name));
void new_script_vars __ARGS((scid_T id));
void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var, int scope));
+ void unref_var_dict __ARGS((dict_T *dict));
void vars_clear __ARGS((hashtab_T *ht));
void copy_tv __ARGS((typval_T *from, typval_T *to));
void ex_echo __ARGS((exarg_T *eap));
*** ../vim-7.3.892/src/version.c 2013-04-14 23:19:32.000000000 +0200
--- src/version.c 2013-04-15 12:19:17.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 893,
/**/
--
Apathy Error: Don't bother striking any key.
/// 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 ///

47
7.3.894 Normal file
View File

@ -0,0 +1,47 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.894
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.3.894
Problem: Using wrong RUBY_VER causing Ruby build to break.
Solution: Correct the RUBY_VER value. (Yongwei Wu)
Files: src/bigvim.bat
*** ../vim-7.3.893/src/bigvim.bat 2012-08-29 14:18:26.000000000 +0200
--- src/bigvim.bat 2013-04-15 12:32:08.000000000 +0200
***************
*** 1,5 ****
:: command to build big Vim with OLE, Perl, Python, Ruby and Tcl
SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\"
SET TOOLDIR=E:\
! %VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=192 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes
--- 1,5 ----
:: command to build big Vim with OLE, Perl, Python, Ruby and Tcl
SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\"
SET TOOLDIR=E:\
! %VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=19 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes
*** ../vim-7.3.893/src/version.c 2013-04-15 12:27:30.000000000 +0200
--- src/version.c 2013-04-15 12:34:36.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 894,
/**/
--
Did you ever see a "Hit any key to continue" message in a music piece?
/// 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 ///

189
7.3.895 Normal file
View File

@ -0,0 +1,189 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.895
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.3.895
Problem: Valgrind error in test 91. (Issue 128)
Solution: Pass scope name to find_var_in_ht().
Files: src/eval.c
*** ../vim-7.3.894/src/eval.c 2013-04-15 12:27:30.000000000 +0200
--- src/eval.c 2013-04-15 13:00:44.000000000 +0200
***************
*** 788,794 ****
static char_u *get_tv_string_buf __ARGS((typval_T *varp, char_u *buf));
static char_u *get_tv_string_buf_chk __ARGS((typval_T *varp, char_u *buf));
static dictitem_T *find_var __ARGS((char_u *name, hashtab_T **htp));
! static dictitem_T *find_var_in_ht __ARGS((hashtab_T *ht, char_u *varname, int writing));
static hashtab_T *find_var_ht __ARGS((char_u *name, char_u **varname));
static void vars_clear_ext __ARGS((hashtab_T *ht, int free_val));
static void delete_var __ARGS((hashtab_T *ht, hashitem_T *hi));
--- 788,794 ----
static char_u *get_tv_string_buf __ARGS((typval_T *varp, char_u *buf));
static char_u *get_tv_string_buf_chk __ARGS((typval_T *varp, char_u *buf));
static dictitem_T *find_var __ARGS((char_u *name, hashtab_T **htp));
! static dictitem_T *find_var_in_ht __ARGS((hashtab_T *ht, int htname, char_u *varname, int writing));
static hashtab_T *find_var_ht __ARGS((char_u *name, char_u **varname));
static void vars_clear_ext __ARGS((hashtab_T *ht, int free_val));
static void delete_var __ARGS((hashtab_T *ht, hashitem_T *hi));
***************
*** 11150,11162 ****
}
else
{
! if (*varname == NUL)
! /* let getbufvar({nr}, "") return the "b:" dictionary. The
! * scope prefix before the NUL byte is required by
! * find_var_in_ht(). */
! varname = (char_u *)"b:" + 2;
! /* look up the variable */
! v = find_var_in_ht(&curbuf->b_vars->dv_hashtab, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
}
--- 11150,11159 ----
}
else
{
! /* Look up the variable. */
! /* Let getbufvar({nr}, "") return the "b:" dictionary. */
! v = find_var_in_ht(&curbuf->b_vars->dv_hashtab,
! 'b', varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
}
***************
*** 11779,11785 ****
if (tp != NULL && varname != NULL)
{
/* look up the variable */
! v = find_var_in_ht(&tp->tp_vars->dv_hashtab, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
else if (argvars[2].v_type != VAR_UNKNOWN)
--- 11776,11782 ----
if (tp != NULL && varname != NULL)
{
/* look up the variable */
! v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 0, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
else if (argvars[2].v_type != VAR_UNKNOWN)
***************
*** 11929,11941 ****
get_option_tv(&varname, rettv, 1);
else
{
! if (*varname == NUL)
! /* let getwinvar({nr}, "") return the "w:" dictionary. The
! * scope prefix before the NUL byte is required by
! * find_var_in_ht(). */
! varname = (char_u *)"w:" + 2;
! /* look up the variable */
! v = find_var_in_ht(&win->w_vars->dv_hashtab, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
}
--- 11926,11934 ----
get_option_tv(&varname, rettv, 1);
else
{
! /* Look up the variable. */
! /* Let getwinvar({nr}, "") return the "w:" dictionary. */
! v = find_var_in_ht(&win->w_vars->dv_hashtab, 'w', varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
}
***************
*** 20041,20056 ****
*htp = ht;
if (ht == NULL)
return NULL;
! return find_var_in_ht(ht, varname, htp != NULL);
}
/*
! * Find variable "varname" in hashtab "ht".
* Returns NULL if not found.
*/
static dictitem_T *
! find_var_in_ht(ht, varname, writing)
hashtab_T *ht;
char_u *varname;
int writing;
{
--- 20034,20050 ----
*htp = ht;
if (ht == NULL)
return NULL;
! return find_var_in_ht(ht, *name, varname, htp != NULL);
}
/*
! * Find variable "varname" in hashtab "ht" with name "htname".
* Returns NULL if not found.
*/
static dictitem_T *
! find_var_in_ht(ht, htname, varname, writing)
hashtab_T *ht;
+ int htname;
char_u *varname;
int writing;
{
***************
*** 20059,20065 ****
if (*varname == NUL)
{
/* Must be something like "s:", otherwise "ht" would be NULL. */
! switch (varname[-2])
{
case 's': return &SCRIPT_SV(current_SID)->sv_var;
case 'g': return &globvars_var;
--- 20053,20059 ----
if (*varname == NUL)
{
/* Must be something like "s:", otherwise "ht" would be NULL. */
! switch (htname)
{
case 's': return &SCRIPT_SV(current_SID)->sv_var;
case 'g': return &globvars_var;
***************
*** 20389,20395 ****
EMSG2(_(e_illvar), name);
return;
}
! v = find_var_in_ht(ht, varname, TRUE);
if (tv->v_type == VAR_FUNC && var_check_func_name(name, v == NULL))
return;
--- 20383,20389 ----
EMSG2(_(e_illvar), name);
return;
}
! v = find_var_in_ht(ht, 0, varname, TRUE);
if (tv->v_type == VAR_FUNC && var_check_func_name(name, v == NULL))
return;
*** ../vim-7.3.894/src/version.c 2013-04-15 12:36:14.000000000 +0200
--- src/version.c 2013-04-15 13:04:54.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 895,
/**/
--
Very funny, Scotty. Now beam down my clothes.
/// 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 ///

206
7.3.896 Normal file
View File

@ -0,0 +1,206 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.896
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.3.896
Problem: Memory leaks in Lua interface.
Solution: Fix the leaks, add tests. (Yukihiro Nakadaira)
Files: src/testdir/test85.in, src/testdir/test85.ok, src/if_lua.c
*** ../vim-7.3.895/src/testdir/test85.in 2012-04-05 16:56:38.000000000 +0200
--- src/testdir/test85.in 2013-04-15 13:12:43.000000000 +0200
***************
*** 33,38 ****
--- 33,81 ----
:let res = "FAILED"
:endif
:call setline(search("^3"), "circular test " . res)
+
+ :let l = []
+ :lua l = vim.eval("l")
+ :lua l:add(123)
+ :lua l:add("abc")
+ :lua l:add(vim.eval("[1, 2, 3]"))
+ :lua l:add(vim.eval("{'a':1, 'b':2, 'c':3}"))
+ :lua l:insert(123)
+ :lua l:insert("abc")
+ :lua l:insert(vim.eval("[1, 2, 3]"))
+ :lua l:insert(vim.eval("{'a':1, 'b':2, 'c':3}"))
+ :lua l[0] = l[0]
+ :lua l[1] = l[1]
+ :lua l[2] = l[2]
+ :lua l[3] = l[3]
+ :lua l[0] = 123
+ :lua l[1] = "abc"
+ :lua l[2] = vim.eval("[1, 2, 3]")
+ :lua l[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
+ :lua l[3] = nil
+ :lua l[2] = nil
+ :lua l[1] = nil
+ :lua l[0] = nil
+ :lua l = nil
+ :$put =string(l)
+
+ :let d = {}
+ :lua d = vim.eval("d")
+ :lua d[0] = 123
+ :lua d[1] = "abc"
+ :lua d[2] = vim.eval("[1, 2, 3]")
+ :lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
+ :lua d[4] = d[0]
+ :lua d[5] = d[1]
+ :lua d[6] = d[2]
+ :lua d[7] = d[3]
+ :lua d[3] = nil
+ :lua d[2] = nil
+ :lua d[1] = nil
+ :lua d[0] = nil
+ :lua d = nil
+ :$put =string(d)
+
:?^1?,$w! test.out
:qa!
ENDTEST
*** ../vim-7.3.895/src/testdir/test85.ok 2012-04-05 16:56:38.000000000 +0200
--- src/testdir/test85.ok 2013-04-15 13:12:47.000000000 +0200
***************
*** 3,5 ****
--- 3,7 ----
2 line 2
dictionary with list OK
circular test OK
+ [123.0, 'abc', [1, 2, 3], {'a': 1, 'b': 2, 'c': 3}]
+ {'4': 123.0, '5': 'abc', '6': [1, 2, 3], '7': {'a': 1, 'b': 2, 'c': 3}}
*** ../vim-7.3.895/src/if_lua.c 2013-04-12 12:18:43.000000000 +0200
--- src/if_lua.c 2013-04-15 13:35:40.000000000 +0200
***************
*** 709,716 ****
{
const char *s = lua_tostring(L, 2);
if (strncmp(s, "add", 3) == 0
! || strncmp(s, "insert", 6) == 0
! || strncmp(s, "extend", 6) == 0)
{
lua_getmetatable(L, 1);
lua_getfield(L, -1, s);
--- 709,715 ----
{
const char *s = lua_tostring(L, 2);
if (strncmp(s, "add", 3) == 0
! || strncmp(s, "insert", 6) == 0)
{
lua_getmetatable(L, 1);
lua_getfield(L, -1, s);
***************
*** 745,750 ****
--- 744,750 ----
luaV_totypval(L, 3, &v);
clear_tv(&li->li_tv);
copy_tv(&v, &li->li_tv);
+ clear_tv(&v);
}
return 0;
}
***************
*** 754,770 ****
{
luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST);
list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis);
! listitem_T *li;
if (l->lv_lock)
luaL_error(L, "list is locked");
! li = listitem_alloc();
! if (li != NULL)
{
! typval_T v;
! lua_settop(L, 2);
! luaV_totypval(L, 2, &v);
! list_append_tv(l, &v);
}
lua_settop(L, 1);
return 1;
}
--- 754,770 ----
{
luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST);
list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis);
! typval_T v;
if (l->lv_lock)
luaL_error(L, "list is locked");
! lua_settop(L, 2);
! luaV_totypval(L, 2, &v);
! if (list_append_tv(l, &v) == FAIL)
{
! clear_tv(&v);
! luaL_error(L, "Failed to add item to list");
}
+ clear_tv(&v);
lua_settop(L, 1);
return 1;
}
***************
*** 787,793 ****
}
lua_settop(L, 2);
luaV_totypval(L, 2, &v);
! list_insert_tv(l, &v, li);
lua_settop(L, 1);
return 1;
}
--- 787,798 ----
}
lua_settop(L, 2);
luaV_totypval(L, 2, &v);
! if (list_insert_tv(l, &v, li) == FAIL)
! {
! clear_tv(&v);
! luaL_error(L, "Failed to add item to list");
! }
! clear_tv(&v);
lua_settop(L, 1);
return 1;
}
***************
*** 908,913 ****
--- 913,919 ----
typval_T v;
luaV_totypval(L, 3, &v);
copy_tv(&v, &di->di_tv);
+ clear_tv(&v);
}
return 0;
}
***************
*** 1323,1328 ****
--- 1329,1335 ----
typval_T *tv = eval_expr((char_u *) luaL_checkstring(L, 1), NULL);
if (tv == NULL) luaL_error(L, "invalid expression");
luaV_pushtypval(L, tv);
+ free_tv(tv);
return 1;
}
*** ../vim-7.3.895/src/version.c 2013-04-15 13:06:15.000000000 +0200
--- src/version.c 2013-04-15 13:48:21.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 896,
/**/
--
hundred-and-one symptoms of being an internet addict:
172. You join listservers just for the extra e-mail.
/// 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 ///

126
7.3.897 Normal file
View File

@ -0,0 +1,126 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.897
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.3.897
Problem: Configure doesn't always find the shared library.
Solution: Change the configure script. (Ken Takata)
Files: src/configure.in, src/auto/configure
*** ../vim-7.3.896/src/configure.in 2013-02-26 14:56:24.000000000 +0100
--- src/configure.in 2013-04-15 14:28:02.000000000 +0200
***************
*** 494,510 ****
if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
else
! dnl Determine the SONAME for the current version, but fallback to
! dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
! for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
! for i in 0 1 2 3 4 5 6 7 8 9; do
! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then
! LUA_SONAME=".$i"
! break
! fi
done
- vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME"
done
fi
AC_DEFINE(DYNAMIC_LUA)
LUA_LIBS=""
--- 494,519 ----
if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
else
! multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
! if test "X$multiarch" != "X"; then
! lib_multiarch="lib/${multiarch}"
! fi
! dnl Determine the sover for the current version, but fallback to
! dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
! for subdir in "${lib_multiarch}" lib64 lib; do
! if test -z "$subdir"; then
! continue
! fi
! for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
! for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
! if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
! sover2="$i"
! break 3
! fi
! done
done
done
+ vi_cv_dll_name_lua="liblua${sover}$sover2"
fi
AC_DEFINE(DYNAMIC_LUA)
LUA_LIBS=""
*** ../vim-7.3.896/src/auto/configure 2013-02-26 14:56:24.000000000 +0100
--- src/auto/configure 2013-04-15 14:28:06.000000000 +0200
***************
*** 4737,4751 ****
if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
else
! for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
! for i in 0 1 2 3 4 5 6 7 8 9; do
! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then
! LUA_SONAME=".$i"
! break
! fi
done
- vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME"
done
fi
$as_echo "#define DYNAMIC_LUA 1" >>confdefs.h
--- 4737,4760 ----
if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
else
! multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
! if test "X$multiarch" != "X"; then
! lib_multiarch="lib/${multiarch}"
! fi
! for subdir in "${lib_multiarch}" lib64 lib; do
! if test -z "$subdir"; then
! continue
! fi
! for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
! for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
! if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
! sover2="$i"
! break 3
! fi
! done
done
done
+ vi_cv_dll_name_lua="liblua${sover}$sover2"
fi
$as_echo "#define DYNAMIC_LUA 1" >>confdefs.h
*** ../vim-7.3.896/src/version.c 2013-04-15 13:49:17.000000000 +0200
--- src/version.c 2013-04-15 14:43:52.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 897,
/**/
--
If Microsoft would build a car...
... the oil, water temperature, and alternator warning lights would
all be replaced by a single "General Protection Fault" warning light.
/// 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 ///

304
7.3.898 Normal file
View File

@ -0,0 +1,304 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.898
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.3.898
Problem: Memory leak reported by valgrind in test 91.
Solution: Only use default argument when needed.
Files: src/eval.c, src/testdir/test91.in, src/testdir/test91.ok
*** ../vim-7.3.897/src/eval.c 2013-04-15 13:06:15.000000000 +0200
--- src/eval.c 2013-04-15 15:09:17.000000000 +0200
***************
*** 11120,11139 ****
buf_T *save_curbuf;
char_u *varname;
dictitem_T *v;
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
varname = get_tv_string_chk(&argvars[1]);
++emsg_off;
buf = get_buf_tv(&argvars[0], FALSE);
! if (argvars[2].v_type != VAR_UNKNOWN)
! /* set the default value */
! copy_tv(&argvars[2], rettv);
! else
! {
! rettv->v_type = VAR_STRING;
! rettv->vval.v_string = NULL;
! }
if (buf != NULL && varname != NULL)
{
--- 11120,11134 ----
buf_T *save_curbuf;
char_u *varname;
dictitem_T *v;
+ int done = FALSE;
(void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
varname = get_tv_string_chk(&argvars[1]);
++emsg_off;
buf = get_buf_tv(&argvars[0], FALSE);
! rettv->v_type = VAR_STRING;
! rettv->vval.v_string = NULL;
if (buf != NULL && varname != NULL)
{
***************
*** 11142,11152 ****
curbuf = buf;
if (*varname == '&') /* buffer-local-option */
! get_option_tv(&varname, rettv, TRUE);
else if (STRCMP(varname, "changedtick") == 0)
{
rettv->v_type = VAR_NUMBER;
rettv->vval.v_number = curbuf->b_changedtick;
}
else
{
--- 11137,11151 ----
curbuf = buf;
if (*varname == '&') /* buffer-local-option */
! {
! if (get_option_tv(&varname, rettv, TRUE) == OK)
! done = TRUE;
! }
else if (STRCMP(varname, "changedtick") == 0)
{
rettv->v_type = VAR_NUMBER;
rettv->vval.v_number = curbuf->b_changedtick;
+ done = TRUE;
}
else
{
***************
*** 11155,11167 ****
--- 11154,11173 ----
v = find_var_in_ht(&curbuf->b_vars->dv_hashtab,
'b', varname, FALSE);
if (v != NULL)
+ {
copy_tv(&v->di_tv, rettv);
+ done = TRUE;
+ }
}
/* restore previous notion of curbuf */
curbuf = save_curbuf;
}
+ if (!done && argvars[2].v_type != VAR_UNKNOWN)
+ /* use the default value */
+ copy_tv(&argvars[2], rettv);
+
--emsg_off;
}
***************
*** 11767,11772 ****
--- 11773,11779 ----
tabpage_T *tp;
dictitem_T *v;
char_u *varname;
+ int done = FALSE;
rettv->v_type = VAR_STRING;
rettv->vval.v_string = NULL;
***************
*** 11778,11788 ****
/* look up the variable */
v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 0, varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
! else if (argvars[2].v_type != VAR_UNKNOWN)
! copy_tv(&argvars[2], rettv);
}
! else if (argvars[2].v_type != VAR_UNKNOWN)
copy_tv(&argvars[2], rettv);
}
--- 11785,11797 ----
/* look up the variable */
v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 0, varname, FALSE);
if (v != NULL)
+ {
copy_tv(&v->di_tv, rettv);
! done = TRUE;
! }
}
!
! if (!done && argvars[2].v_type != VAR_UNKNOWN)
copy_tv(&argvars[2], rettv);
}
***************
*** 11894,11899 ****
--- 11903,11909 ----
char_u *varname;
dictitem_T *v;
tabpage_T *tp;
+ int done = FALSE;
#ifdef FEAT_WINDOWS
if (off == 1)
***************
*** 11905,11918 ****
varname = get_tv_string_chk(&argvars[off + 1]);
++emsg_off;
! if (argvars[off + 2].v_type != VAR_UNKNOWN)
! /* set the default return value */
! copy_tv(&argvars[off + 2], rettv);
! else
! {
! rettv->v_type = VAR_STRING;
! rettv->vval.v_string = NULL;
! }
if (win != NULL && varname != NULL)
{
--- 11915,11922 ----
varname = get_tv_string_chk(&argvars[off + 1]);
++emsg_off;
! rettv->v_type = VAR_STRING;
! rettv->vval.v_string = NULL;
if (win != NULL && varname != NULL)
{
***************
*** 11923,11936 ****
curbuf = win->w_buffer;
if (*varname == '&') /* window-local-option */
! get_option_tv(&varname, rettv, 1);
else
{
/* Look up the variable. */
/* Let getwinvar({nr}, "") return the "w:" dictionary. */
v = find_var_in_ht(&win->w_vars->dv_hashtab, 'w', varname, FALSE);
if (v != NULL)
copy_tv(&v->di_tv, rettv);
}
/* restore previous notion of curwin */
--- 11927,11946 ----
curbuf = win->w_buffer;
if (*varname == '&') /* window-local-option */
! {
! if (get_option_tv(&varname, rettv, 1) == OK)
! done = TRUE;
! }
else
{
/* Look up the variable. */
/* Let getwinvar({nr}, "") return the "w:" dictionary. */
v = find_var_in_ht(&win->w_vars->dv_hashtab, 'w', varname, FALSE);
if (v != NULL)
+ {
copy_tv(&v->di_tv, rettv);
+ done = TRUE;
+ }
}
/* restore previous notion of curwin */
***************
*** 11938,11943 ****
--- 11948,11957 ----
curbuf = curwin->w_buffer;
}
+ if (!done && argvars[off + 2].v_type != VAR_UNKNOWN)
+ /* use the default return value */
+ copy_tv(&argvars[off + 2], rettv);
+
--emsg_off;
}
*** ../vim-7.3.897/src/testdir/test91.in 2013-02-20 21:11:14.000000000 +0100
--- src/testdir/test91.in 2013-04-15 14:59:31.000000000 +0200
***************
*** 4,12 ****
STARTTEST
:so small.vim
:"
! :" test for getbufvar()
! :let b:var_num = 1234
! :let def_num = 5678
:$put =string(getbufvar(1, 'var_num'))
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
--- 4,13 ----
STARTTEST
:so small.vim
:"
! :" Test for getbufvar()
! :" Use strings to test for memory leaks.
! :let b:var_num = '1234'
! :let def_num = '5678'
:$put =string(getbufvar(1, 'var_num'))
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
*** ../vim-7.3.897/src/testdir/test91.ok 2013-02-20 21:11:14.000000000 +0100
--- src/testdir/test91.ok 2013-04-15 15:02:45.000000000 +0200
***************
*** 1,13 ****
start:
! 1234
! 1234
! {'var_num': 1234}
! {'var_num': 1234}
! 5678
{}
{}
''
! 5678
0
0
'Dance'
--- 1,13 ----
start:
! '1234'
! '1234'
! {'var_num': '1234'}
! {'var_num': '1234'}
! '5678'
{}
{}
''
! '5678'
0
0
'Dance'
*** ../vim-7.3.897/src/version.c 2013-04-15 14:44:53.000000000 +0200
--- src/version.c 2013-04-15 15:14:22.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 898,
/**/
--
If Apple would build a car...
... it would be powered by the sun, be reliable, five times
as fast and twice as easy to drive; but would only run on
five percent of the roads.
/// 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 ///

67
7.3.899 Normal file
View File

@ -0,0 +1,67 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.899
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.3.899
Problem: #if indents are off.
Solution: Fix the indents.
Files: src/os_unix.c
*** ../vim-7.3.898/src/os_unix.c 2013-03-21 22:53:45.000000000 +0100
--- src/os_unix.c 2013-04-15 15:28:01.000000000 +0200
***************
*** 3493,3505 ****
* 4 = Windows Cross Hair
* 5 = Windows UP Arrow
*/
! #ifdef JSBTERM_MOUSE_NONADVANCED /* Disables full feedback of pointer movements */
out_str_nf((char_u *)IF_EB("\033[0~ZwLMRK1Q\033\\",
ESC_STR "[0~ZwLMRK1Q" ESC_STR "\\"));
! #else
out_str_nf((char_u *)IF_EB("\033[0~ZwLMRK+1Q\033\\",
ESC_STR "[0~ZwLMRK+1Q" ESC_STR "\\"));
! #endif
ison = TRUE;
}
else
--- 3493,3506 ----
* 4 = Windows Cross Hair
* 5 = Windows UP Arrow
*/
! # ifdef JSBTERM_MOUSE_NONADVANCED
! /* Disables full feedback of pointer movements */
out_str_nf((char_u *)IF_EB("\033[0~ZwLMRK1Q\033\\",
ESC_STR "[0~ZwLMRK1Q" ESC_STR "\\"));
! # else
out_str_nf((char_u *)IF_EB("\033[0~ZwLMRK+1Q\033\\",
ESC_STR "[0~ZwLMRK+1Q" ESC_STR "\\"));
! # endif
ison = TRUE;
}
else
*** ../vim-7.3.898/src/version.c 2013-04-15 15:15:31.000000000 +0200
--- src/version.c 2013-04-15 15:31:43.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 899,
/**/
--
If Microsoft would build a car...
... Occasionally, executing a maneuver such as a left turn
would cause your car to shut down and refuse to restart, in
which case you would have to reinstall the engine.
/// 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 ///

55
7.3.900 Normal file
View File

@ -0,0 +1,55 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.900
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.3.900
Problem: Not obvious that some mouse features are mutual-exclusive.
Solution: Add a comment.
Files: src/feature.h
*** ../vim-7.3.899/src/feature.h 2013-02-26 14:56:24.000000000 +0100
--- src/feature.h 2013-04-15 15:29:17.000000000 +0200
***************
*** 1088,1093 ****
--- 1088,1100 ----
# endif
#endif
+ /*
+ * Note: Only one of the following may be defined:
+ * FEAT_MOUSE_GPM
+ * FEAT_SYSMOUSE
+ * FEAT_MOUSE_JSB
+ * FEAT_MOUSE_PTERM
+ */
#if defined(FEAT_NORMAL) && defined(HAVE_GPM)
# define FEAT_MOUSE_GPM
#endif
*** ../vim-7.3.899/src/version.c 2013-04-15 15:32:20.000000000 +0200
--- src/version.c 2013-04-15 15:39:10.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 900,
/**/
--
If Microsoft would build a car...
... Occasionally your car would die on the freeway for no
reason. You would have to pull over to the side of the road,
close all of the car windows, shut it off, restart it, and
reopen the windows before you could continue. For some reason
you would simply accept this.
/// 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 ///

95
7.3.901 Normal file
View File

@ -0,0 +1,95 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.901
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.3.901
Problem: Outdated comment, ugly condition.
Solution: Update a few comments, break line.
Files: src/getchar.c, src/misc1.c, src/undo.c
*** ../vim-7.3.900/src/getchar.c 2013-03-16 21:42:12.000000000 +0100
--- src/getchar.c 2013-04-12 15:01:39.000000000 +0200
***************
*** 444,450 ****
typebuf.tb_off = MAXMAPLEN;
typebuf.tb_len = 0;
}
! else /* remove mapped characters only */
{
typebuf.tb_off += typebuf.tb_maplen;
typebuf.tb_len -= typebuf.tb_maplen;
--- 444,450 ----
typebuf.tb_off = MAXMAPLEN;
typebuf.tb_len = 0;
}
! else /* remove mapped characters at the start only */
{
typebuf.tb_off += typebuf.tb_maplen;
typebuf.tb_len -= typebuf.tb_maplen;
*** ../vim-7.3.900/src/misc1.c 2013-03-19 18:31:45.000000000 +0100
--- src/misc1.c 2013-03-19 20:43:48.000000000 +0100
***************
*** 5054,5060 ****
int cx = NUL;
int cy = NUL;
- /* TODO: multi-byte characters. */
while (len > 0)
{
cx = PTR2CHAR(px);
--- 5054,5059 ----
*** ../vim-7.3.900/src/undo.c 2012-08-23 12:58:56.000000000 +0200
--- src/undo.c 2012-12-12 16:00:19.000000000 +0100
***************
*** 216,221 ****
--- 216,222 ----
/*
* Save the current line for both the "u" and "U" command.
+ * Careful: may trigger autocommands that reload the buffer.
* Returns OK or FAIL.
*/
int
***************
*** 238,245 ****
if (undo_off)
return OK;
! if (top > curbuf->b_ml.ml_line_count ||
! top >= bot || bot > curbuf->b_ml.ml_line_count + 1)
return FALSE; /* rely on caller to do error messages */
if (top + 2 == bot)
--- 239,247 ----
if (undo_off)
return OK;
! if (top > curbuf->b_ml.ml_line_count
! || top >= bot
! || bot > curbuf->b_ml.ml_line_count + 1)
return FALSE; /* rely on caller to do error messages */
if (top + 2 == bot)
*** ../vim-7.3.900/src/version.c 2013-04-15 15:40:08.000000000 +0200
--- src/version.c 2013-04-15 15:46:37.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 901,
/**/
--
The CIA drives around in cars with the "Intel inside" logo.
/// 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 ///

45
7.3.902 Normal file
View File

@ -0,0 +1,45 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.902
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.3.902
Problem: When deleting last buffer in other tab the tabline is not updated.
Solution: Set the redraw_tabline flag. (Yukihiro Nakadaira)
Files: src/window.c
*** ../vim-7.3.901/src/window.c 2013-04-15 12:27:30.000000000 +0200
--- src/window.c 2013-04-15 15:52:46.000000000 +0200
***************
*** 2070,2075 ****
--- 2070,2076 ----
--RedrawingDisabled;
+ redraw_tabline = TRUE;
if (h != tabline_height())
shell_new_rows();
}
*** ../vim-7.3.901/src/version.c 2013-04-15 15:47:07.000000000 +0200
--- src/version.c 2013-04-15 15:54:42.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 902,
/**/
--
If Microsoft would build a car...
... The airbag system would ask "are you SURE?" before deploying.
/// 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 ///

60
7.3.903 Normal file
View File

@ -0,0 +1,60 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.903
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.3.903 (after 7.3.892)
Problem: Crash on exit writing viminfo. (Ron Aaron)
Solution: Check for the history to be empty.
Files: src/ex_getln.c
*** ../vim-7.3.902/src/ex_getln.c 2013-04-14 23:19:32.000000000 +0200
--- src/ex_getln.c 2013-04-15 16:13:56.000000000 +0200
***************
*** 6216,6222 ****
*/
for (round = 1; round <= 2; ++round)
{
! i = round == 1 ? hisidx[type] : 0;
if (i >= 0)
while (num_saved > 0
&& !(round == 2 && i >= viminfo_hisidx[type]))
--- 6216,6230 ----
*/
for (round = 1; round <= 2; ++round)
{
! if (round == 1)
! /* start at newest entry, somewhere in the list */
! i = hisidx[type];
! else if (viminfo_hisidx[type] > 0)
! /* start at newest entry, first in the list */
! i = 0;
! else
! /* empty list */
! i = -1;
if (i >= 0)
while (num_saved > 0
&& !(round == 2 && i >= viminfo_hisidx[type]))
*** ../vim-7.3.902/src/version.c 2013-04-15 15:55:15.000000000 +0200
--- src/version.c 2013-04-15 16:11:08.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
{ /* Add new patch number below this line */
+ /**/
+ 903,
/**/
--
hundred-and-one symptoms of being an internet addict:
176. You lie, even to user-friends, about how long you were online yesterday.
/// 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 ///

View File

@ -854,3 +854,84 @@ Individual patches for Vim 7.3:
3295 7.3.820 errors when building with small features and Lua, Perl or Ruby
2199 7.3.821 build with OLE and Cygwin is broken
4013 7.3.822 (after 7.3.799) crash when accessing freed buffer
2051 7.3.823 (after 7.3.821) building with Cygwin: '-lsupc++' is not needed
1566 7.3.824 can redefine builtin functions
4540 7.3.825 with Python errors are not always clear
3807 7.3.826 list of features in :version output is hard to read
3112 7.3.827 (after 7.3.825) Python tests fail
4780 7.3.828 mappings are not aware of wildmenu mode
2664 7.3.829 'showmatch' shows wrong match and may scroll the screen
2841 7.3.830 :mksession confuses bytes and characters when placing cursor
20653 7.3.831 clumsy to handle the situation that a variable does not exist
1830 7.3.832 compiler warning
2985 7.3.833 In the terminal scroll wheel always scrolls the active window
2556 7.3.834 Ruby 2.0 has a few API changes
1755 7.3.835 "xxd -i" fails on an empty file
59985 7.3.836 clipboard does not work on Win32 when compiled with Cygwin
2221 7.3.837 empty lines in :version output when 'columns' is 320
11082 7.3.838 (after 7.3.830) insufficient testing for mksession
2012 7.3.839 some files missing in the list of distributed files
1652 7.3.840 "\@<!" in regexp does not work correctly with cp932
2073 7.3.841 parse error in "cond ? one : two" expression with a subscript
1724 7.3.842 compiler warning
3883 7.3.843 (after 7.3.841) missing test file changes
5894 7.3.844 enum is not indented correctly with "public" etc
2057 7.3.845 (after 7.3.844) enum indenting is not tested
1442 7.3.846 missing proto file, listing a non-existing proto file
1546 7.3.847 test 55 fails when messages are translated
4475 7.3.848 can't build with Ruby 2.0 when using MinGW x64 or MSVC10
1773 7.3.849 ":g//" gives "Pattern not found error" with E486
2719 7.3.850 ":vimgrep //" matches everywhere
2264 7.3.851 empty pattern with :sort incorrect without previous pattern
3376 7.3.852 system() breaks clipboard text
2711 7.3.853 "ra" does not replace all chars on multi-byte chars > 1 line
1630 7.3.854 after BS in insert mode completion current entry is wrong
1831 7.3.855 compiler warnings
8587 7.3.856 system() garbles multi-byte clipboard contents
2763 7.3.857 QuitPre autocommand event does not trigger for :qa and :wq
4120 7.3.858 "gv" selects the wrong area after some operators
9955 7.3.859 'ambiwidth' must be set by the user
2602 7.3.860 in --remote-expr try/catch does not work
4494 7.3.861 ":setlocal number" clears global value of 'relativenumber'
5831 7.3.862 dragging the status line can be slow
3025 7.3.863 (after 7.3.859) 'ambiwidth' detection for ANSI terminal
1516 7.3.864 (after 7.3.862) can't build without the mouse feature
2015 7.3.865 (after 7.3.862) mouse position can be wrong
4745 7.3.866 not serving the X selection during system() isn't nice
9641 7.3.867 matchparen does not update match when using auto-indenting
2567 7.3.868 empty line at hit-return prompt with few lines of text
11112 7.3.869 bufwinnr() matches buffers in other tabs
6562 7.3.870 compiler warnings when using MingW 4.5.3
2741 7.3.871 search('^$', 'c') does not use empty match under the cursor
14914 7.3.872 on some systems file name case is always ignored
5967 7.3.873 cannot easily use :s to make title case
3480 7.3.874 comparing file names does not handle multi-byte chars properly
1865 7.3.875 (after 7.3.866) build problem with a combination of features
2182 7.3.876 #if indents are off
3069 7.3.877 (after 7.3.871) forward searching with search() is broken
3124 7.3.878 'fileignorecase' is missing in options window and quickref
2792 7.3.879 aborting an ex command does not abort a pending operator
7907 7.3.880 new viminfo history lines may be replacd with old lines
2849 7.3.881 Python list does not work correctly
1714 7.3.882 CursorHold may trigger after receiving the termresponse
2350 7.3.883 (after 7.3.880) can't build with some combination of features
2150 7.3.884 compiler warning for variable shadowing another
2408 7.3.885 double free for list and dict in Lua
2567 7.3.886 can't build with multi-byte on Solaris 10
9601 7.3.887 no tests for Visual mode operators, what 7.3.879 fixes
3933 7.3.888 filename completion with 'fic' does not work for multi-byte
2040 7.3.889 can't build with Ruby 2.0 on a 64 bit system
1563 7.3.890 test 79 fails on Windows
3761 7.3.891 merging viminfo history doesn't work well
7984 7.3.892 (after 7.3.891) still merging problems for viminfo history
19606 7.3.893 crash when using b:, w: or t: after closing the buffer etc.
2219 7.3.894 using wrong RUBY_VER causing Ruby build to break
5927 7.3.895 valgrind error in test 91
5208 7.3.896 memory leaks in Lua interface
4487 7.3.897 configure doesn't always find the shared library
7367 7.3.898 memory leak reported by valgrind in test 91
2116 7.3.899 #if indents are off
1639 7.3.900 not obvious that some mouse features are mutual-exclusive
2748 7.3.901 outdated comment, ugly condition
1345 7.3.902 tabline not updated when deleting last buffer in other tab
1827 7.3.903 (after 7.3.892) crash on exit writing viminfo

167
vim.spec
View File

@ -18,7 +18,7 @@
#used for pre-releases:
%define beta %{nil}
%define vimdir vim73%{?beta}
%define patchlevel 822
%define patchlevel 903
Summary: The VIM editor
URL: http://www.vim.org/
@ -879,6 +879,87 @@ Patch819: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.819
Patch820: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.820
Patch821: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.821
Patch822: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.822
Patch823: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.823
Patch824: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.824
Patch825: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.825
Patch826: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.826
Patch827: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.827
Patch828: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.828
Patch829: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.829
Patch830: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.830
Patch831: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.831
Patch832: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.832
Patch833: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.833
Patch834: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.834
Patch835: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.835
Patch836: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.836
Patch837: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.837
Patch838: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.838
Patch839: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.839
Patch840: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.840
Patch841: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.841
Patch842: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.842
Patch843: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.843
Patch844: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.844
Patch845: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.845
Patch846: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.846
Patch847: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.847
Patch848: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.848
Patch849: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.849
Patch850: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.850
Patch851: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.851
Patch852: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.852
Patch853: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.853
Patch854: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.854
Patch855: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.855
Patch856: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.856
Patch857: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.857
Patch858: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.858
Patch859: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.859
Patch860: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.860
Patch861: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.861
Patch862: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.862
Patch863: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.863
Patch864: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.864
Patch865: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.865
Patch866: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.866
Patch867: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.867
Patch868: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.868
Patch869: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.869
Patch870: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.870
Patch871: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.871
Patch872: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.872
Patch873: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.873
Patch874: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.874
Patch875: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.875
Patch876: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.876
Patch877: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.877
Patch878: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.878
Patch879: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.879
Patch880: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.880
Patch881: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.881
Patch882: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.882
Patch883: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.883
Patch884: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.884
Patch885: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.885
Patch886: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.886
Patch887: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.887
Patch888: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.888
Patch889: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.889
Patch890: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.890
Patch891: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.891
Patch892: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.892
Patch893: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.893
Patch894: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.894
Patch895: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.895
Patch896: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.896
Patch897: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.897
Patch898: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.898
Patch899: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.899
Patch900: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.900
Patch901: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.901
Patch902: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.902
Patch903: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.903
Patch3000: vim-7.3-syntax.patch
Patch3002: vim-7.1-nowarnings.patch
@ -1847,6 +1928,87 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk
%patch820 -p0
%patch821 -p0
%patch822 -p0
%patch823 -p0
%patch824 -p0
%patch825 -p0
%patch826 -p0
%patch827 -p0
%patch828 -p0
%patch829 -p0
%patch830 -p0
%patch831 -p0
%patch832 -p0
%patch833 -p0
%patch834 -p0
%patch835 -p0
%patch836 -p0
%patch837 -p0
%patch838 -p0
%patch839 -p0
%patch840 -p0
%patch841 -p0
%patch842 -p0
%patch843 -p0
%patch844 -p0
%patch845 -p0
%patch846 -p0
%patch847 -p0
%patch848 -p0
%patch849 -p0
%patch850 -p0
%patch851 -p0
%patch852 -p0
%patch853 -p0
%patch854 -p0
%patch855 -p0
%patch856 -p0
%patch857 -p0
%patch858 -p0
%patch859 -p0
%patch860 -p0
%patch861 -p0
%patch862 -p0
%patch863 -p0
%patch864 -p0
%patch865 -p0
%patch866 -p0
%patch867 -p0
%patch868 -p0
%patch869 -p0
%patch870 -p0
%patch871 -p0
%patch872 -p0
%patch873 -p0
%patch874 -p0
%patch875 -p0
%patch876 -p0
%patch877 -p0
%patch878 -p0
%patch879 -p0
%patch880 -p0
%patch881 -p0
%patch882 -p0
%patch883 -p0
%patch884 -p0
%patch885 -p0
%patch886 -p0
%patch887 -p0
%patch888 -p0
%patch889 -p0
%patch890 -p0
%patch891 -p0
%patch892 -p0
%patch893 -p0
%patch894 -p0
%patch895 -p0
%patch896 -p0
%patch897 -p0
%patch898 -p0
%patch899 -p0
%patch900 -p0
%patch901 -p0
%patch902 -p0
%patch903 -p0
# install spell files
@ -2322,6 +2484,9 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/icons/hicolor/*/apps/*
%changelog
* Mon Apr 15 2013 Karsten Hopp <karsten@redhat.com> 7.3.903-1
- patchlevel 903
* Mon Feb 18 2013 Karsten Hopp <karsten@redhat.com> 7.3.822-1
- patchlevel 822