Merge branch 'vim'

This commit is contained in:
Bjorn Winckler
2011-10-07 15:53:18 +02:00
19 changed files with 297 additions and 83 deletions
+11
View File
@@ -1657,3 +1657,14 @@ dc7f2f9759208aa07bf136deca661fd080a1ee68 v7-3-319
738ea87c196431c452bd499c5a9849597ac938de v7-3-320
fc0804089b2945bfe683f9bc9ee0238b8c64a46e v7-3-321
38a7fd9043474dfb464c338ffd7f393361f5a6c1 v7-3-322
3bdb646fc8a46ee5a5fe474dccdce098680d24d6 v7-3-323
f04619f1fc1663f4ab05798c410e4fa35a9dd863 v7-3-324
8aca621c00910556d4f52bd650d6841d6059d6ec v7-3-325
d3758064ff9946d23aeccc9d2340686766647b84 v7-3-326
9028c70adafd109ab294102f74dfb5005a20bbfb v7-3-327
5b53cea62e5d1be2a1a36ce685c15f99bb8a41ba v7-3-328
ec901ddc84d5c66c5d0c1dcca093584598487f9f v7-3-329
abb03be99d661455fd3790cd25355459448fa432 v7-3-330
4b8c614c1c914ce5d712368a75dbfea9b7e44e17 v7-3-331
0ecfe54a273f6bc440684aca4ebe5926a2dfc6e2 v7-3-332
992b24149a9ee0d6f417e40a7462891a9f62ec6a v7-3-333
+1
View File
@@ -313,6 +313,7 @@ SRC_DOS = \
src/xxd/Make_bc5.mak \
src/xxd/Make_cyg.mak \
src/xxd/Make_djg.mak \
src/xxd/Make_ming.mak \
src/xxd/Make_mvc.mak \
nsis/gvim.nsi \
nsis/README.txt \
+77
View File
@@ -0,0 +1,77 @@
# Project: gvimext
# Generates gvimext.dll with gcc.
# To be used with Cygwin.
#
# Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000
# Now it is allocated dymanically by the linker by evaluating all DLLs
# already loaded in memory. The binary image contains as well information
# for automatic pseudo-rebasing, if needed by the system. ALV 2004-02-29
# If cross-compiling set this to yes, else set it to no
CROSS = no
#CROSS = yes
# For the old MinGW 2.95 (the one you get e.g. with debian woody)
# set the following variable to yes and check if the executables are
# really named that way.
# If you have a newer MinGW or you are using cygwin set it to no and
# check also the executables
MINGWOLD = no
# Link against the shared versions of libgcc/libstdc++ by default. Set
# STATIC_STDCPLUS to "yes" to link against static versions instead.
STATIC_STDCPLUS=no
#STATIC_STDCPLUS=yes
# Note: -static-libstdc++ is not available until gcc 4.5.x.
LDFLAGS += -shared
ifeq (yes, $(STATIC_STDCPLUS))
LDFLAGS += -static-libgcc -static-libstdc++
endif
ifeq ($(CROSS),yes)
DEL = rm
ifeq ($(MINGWOLD),yes)
CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks
else
CXXFLAGS := -O2 -mno-cygwin
endif
else
CXXFLAGS := -O2 -mno-cygwin
ifneq (sh.exe, $(SHELL))
DEL = rm
else
DEL = del
endif
endif
CXX := $(CROSS_COMPILE)g++
WINDRES := $(CROSS_COMPILE)windres
WINDRES_CXX = $(CXX)
WINDRES_FLAGS = --preprocessor="$(WINDRES_CXX) -E -xc" -DRC_INVOKED
LIBS := -luuid
RES := gvimext.res
DEFFILE = gvimext_ming.def
OBJ := gvimext.o
DLL := gvimext.dll
.PHONY: all all-before all-after clean clean-custom
all: all-before $(DLL) all-after
$(DLL): $(OBJ) $(RES) $(DEFFILE)
$(CXX) $(LDFLAGS) $(CXXFLAGS) -s -o $@ \
-Wl,--enable-auto-image-base \
-Wl,--enable-auto-import \
-Wl,--whole-archive \
$^ \
-Wl,--no-whole-archive \
$(LIBS)
gvimext.o: gvimext.cpp
$(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@
$(RES): gvimext_ming.rc
$(WINDRES) $(WINDRES_FLAGS) --input-format=rc --output-format=coff -DMING $? -o $@
clean: clean-custom
-$(DEL) $(OBJ) $(RES) $(DLL)
+4 -5
View File
@@ -1,6 +1,6 @@
# Project: gvimext
# Generates gvimext.dll with gcc.
# Can be used for Cygwin and MingW (MingW ignores -mno-cygwin)
# To be used with MingW.
#
# Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000
# Now it is allocated dymanically by the linker by evaluating all DLLs
@@ -31,12 +31,12 @@ endif
ifeq ($(CROSS),yes)
DEL = rm
ifeq ($(MINGWOLD),yes)
CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks
CXXFLAGS := -O2 -fvtable-thunks
else
CXXFLAGS := -O2 -mno-cygwin
CXXFLAGS := -O2
endif
else
CXXFLAGS := -O2 -mno-cygwin
CXXFLAGS := -O2
ifneq (sh.exe, $(SHELL))
DEL = rm
else
@@ -75,4 +75,3 @@ $(RES): gvimext_ming.rc
clean: clean-custom
-$(DEL) $(OBJ) $(RES) $(DLL)
+2 -2
View File
@@ -536,7 +536,7 @@ xxd/xxd.exe: xxd/xxd.c
$(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL)
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
$(MAKE) -C GvimExt -f Make_ming.mak CROSS_COMPILE=$(CROSS_COMPILE)
$(MAKE) -C GvimExt -f Make_cyg.mak CROSS_COMPILE=$(CROSS_COMPILE)
vimrun.exe: vimrun.c
$(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS)
@@ -565,7 +565,7 @@ ifdef MZSCHEME
endif
-$(DEL) pathdef.c
$(MAKE) -C xxd -f Make_cyg.mak clean
$(MAKE) -C GvimExt -f Make_ming.mak clean
$(MAKE) -C GvimExt -f Make_cyg.mak clean
distclean: clean
-$(DEL) obj$(DIRSLASH)*.o
+2 -2
View File
@@ -641,7 +641,7 @@ upx: exes
upx vim.exe
xxd/xxd.exe: xxd/xxd.c
$(MAKE) -C xxd -f Make_cyg.mak CC=$(CC)
$(MAKE) -C xxd -f Make_ming.mak CC=$(CC)
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
$(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE)
@@ -659,7 +659,7 @@ ifdef MZSCHEME
-$(DEL) mzscheme_base.c
endif
$(MAKE) -C GvimExt -f Make_ming.mak clean
$(MAKE) -C xxd -f Make_cyg.mak clean
$(MAKE) -C xxd -f Make_ming.mak clean
###########################################################################
INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
+14 -1
View File
@@ -3377,7 +3377,10 @@ ex_call(eap)
/* trans_function_name() doesn't work well when skipping, use eval0()
* instead to skip to any following command, e.g. for:
* :if 0 | call dict.foo().bar() | endif */
eval0(eap->arg, &rettv, &eap->nextcmd, FALSE);
++emsg_skip;
if (eval0(eap->arg, &rettv, &eap->nextcmd, FALSE) != FAIL)
clear_tv(&rettv);
--emsg_skip;
return;
}
@@ -20489,6 +20492,7 @@ ex_function(eap)
exarg_T *eap;
{
char_u *theline;
int i;
int j;
int c;
int saved_did_emsg;
@@ -20735,6 +20739,15 @@ ex_function(eap)
arg = vim_strsave(arg);
if (arg == NULL)
goto erret;
/* Check for duplicate argument name. */
for (i = 0; i < newargs.ga_len; ++i)
if (STRCMP(((char_u **)(newargs.ga_data))[i], arg) == 0)
{
EMSG2(_("E853: Duplicate argument name: %s"), arg);
goto erret;
}
((char_u **)(newargs.ga_data))[newargs.ga_len] = arg;
*p = c;
newargs.ga_len++;
+9
View File
@@ -5508,6 +5508,9 @@ ex_help(eap)
int len;
char_u *lang;
#endif
#ifdef FEAT_FOLDING
int old_KeyTyped = KeyTyped;
#endif
if (eap != NULL)
{
@@ -5671,6 +5674,12 @@ ex_help(eap)
if (!p_im)
restart_edit = 0; /* don't want insert mode in help file */
#ifdef FEAT_FOLDING
/* Restore KeyTyped, setting 'filetype=help' may reset it.
* It is needed for do_tag top open folds under the cursor. */
KeyTyped = old_KeyTyped;
#endif
if (tag != NULL)
do_tag(tag, DT_HELP, 1, FALSE, TRUE);
-2
View File
@@ -373,11 +373,9 @@ static void ex_tag_cmd __ARGS((exarg_T *eap, char_u *name));
# define ex_endif ex_ni
# define ex_else ex_ni
# define ex_while ex_ni
# define ex_for ex_ni
# define ex_continue ex_ni
# define ex_break ex_ni
# define ex_endwhile ex_ni
# define ex_endfor ex_ni
# define ex_throw ex_ni
# define ex_try ex_ni
# define ex_catch ex_ni
+2 -1
View File
@@ -2881,6 +2881,7 @@ put_on_cmdline(str, len, redraw)
{
msg_no_more = TRUE;
i = cmdline_row;
cursorcmd();
draw_cmdline(ccline.cmdpos, ccline.cmdlen - ccline.cmdpos);
/* Avoid clearing the rest of the line too often. */
if (cmdline_row != i || ccline.overstrike)
@@ -4557,7 +4558,7 @@ ExpandFromContext(xp, pat, num_file, file, options)
}
if (xp->xp_context == EXPAND_COMPILER)
{
char *directories[] = {"colors", NULL};
char *directories[] = {"compiler", NULL};
return ExpandRTDir(pat, num_file, file, directories);
}
if (xp->xp_context == EXPAND_OWNSYNTAX)
+1
View File
@@ -1074,6 +1074,7 @@ main_loop(cmdwin, noexmode)
skip_redraw = FALSE;
RedrawingDisabled = 0;
no_wait_return = 0;
vgetc_busy = 0;
# ifdef FEAT_EVAL
emsg_skip = 0;
# endif
+52 -44
View File
@@ -6395,6 +6395,7 @@ get_c_indent()
int lookfor_cpp_namespace = FALSE;
int cont_amount = 0; /* amount for continuation line */
int original_line_islabel;
int added_to_amount = 0;
for (options = curbuf->b_p_cino; *options; )
{
@@ -7222,52 +7223,59 @@ get_c_indent()
else
amount += ind_continuation;
}
else if (lookfor_cpp_namespace)
else
{
if (curwin->w_cursor.lnum == ourscope)
continue;
if (curwin->w_cursor.lnum == 0
|| curwin->w_cursor.lnum
< ourscope - FIND_NAMESPACE_LIM)
break;
l = ml_get_curline();
/*
* If we're in a comment now, skip to the start of the
* comment.
*/
trypos = find_start_comment(ind_maxcomment);
if (trypos != NULL)
{
curwin->w_cursor.lnum = trypos->lnum + 1;
curwin->w_cursor.col = 0;
continue;
}
/*
* Skip preprocessor directives and blank lines.
*/
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
continue;
if (cin_is_cpp_namespace(l))
{
amount += ind_cpp_namespace;
break;
}
if (cin_nocode(l))
continue;
}
else if (lookfor != LOOKFOR_TERM
if (lookfor != LOOKFOR_TERM
&& lookfor != LOOKFOR_CPP_BASECLASS)
{
amount = scope_amount;
if (theline[0] == '{')
amount += ind_open_extra;
{
amount = scope_amount;
if (theline[0] == '{')
{
amount += ind_open_extra;
added_to_amount = ind_open_extra;
}
}
if (lookfor_cpp_namespace)
{
/*
* Looking for C++ namespace, need to look further
* back.
*/
if (curwin->w_cursor.lnum == ourscope)
continue;
if (curwin->w_cursor.lnum == 0
|| curwin->w_cursor.lnum
< ourscope - FIND_NAMESPACE_LIM)
break;
l = ml_get_curline();
/* If we're in a comment now, skip to the start of
* the comment. */
trypos = find_start_comment(ind_maxcomment);
if (trypos != NULL)
{
curwin->w_cursor.lnum = trypos->lnum + 1;
curwin->w_cursor.col = 0;
continue;
}
/* Skip preprocessor directives and blank lines. */
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
continue;
/* Finally the actual check for "namespace". */
if (cin_is_cpp_namespace(l))
{
amount += ind_cpp_namespace - added_to_amount;
break;
}
if (cin_nocode(l))
continue;
}
}
break;
}
+46 -24
View File
@@ -20,7 +20,7 @@
*/
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_col; /* nr of cols or end col */
static colnr_T resel_VIsual_vcol; /* nr of cols or end col */
static int restart_VIsual_select = 0;
#endif
@@ -1436,7 +1436,7 @@ do_pending_operator(cap, old_col, gui_yank)
/* The visual area is remembered for redo */
static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
static linenr_T redo_VIsual_line_count; /* number of lines */
static colnr_T redo_VIsual_col; /* number of cols or end column */
static colnr_T redo_VIsual_vcol; /* number of cols or end column */
static long redo_VIsual_count; /* count for Visual operator */
# ifdef FEAT_VIRTUALEDIT
int include_line_break = FALSE;
@@ -1549,22 +1549,31 @@ do_pending_operator(cap, old_col, gui_yank)
#ifdef FEAT_VISUAL
if (redo_VIsual_busy)
{
/* Redo of an operation on a Visual area. Use the same size from
* redo_VIsual_line_count and redo_VIsual_vcol. */
oap->start = curwin->w_cursor;
curwin->w_cursor.lnum += redo_VIsual_line_count - 1;
if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
VIsual_mode = redo_VIsual_mode;
if (VIsual_mode == 'v')
if (redo_VIsual_vcol == MAXCOL || VIsual_mode == 'v')
{
if (redo_VIsual_line_count <= 1)
curwin->w_cursor.col += redo_VIsual_col - 1;
if (VIsual_mode == 'v')
{
if (redo_VIsual_line_count <= 1)
{
validate_virtcol();
curwin->w_curswant =
curwin->w_virtcol + redo_VIsual_vcol - 1;
}
else
curwin->w_curswant = redo_VIsual_vcol;
}
else
curwin->w_cursor.col = redo_VIsual_col;
}
if (redo_VIsual_col == MAXCOL)
{
curwin->w_curswant = MAXCOL;
coladvance((colnr_T)MAXCOL);
{
curwin->w_curswant = MAXCOL;
}
coladvance(curwin->w_curswant);
}
cap->count0 = redo_VIsual_count;
if (redo_VIsual_count != 0)
@@ -1710,7 +1719,7 @@ do_pending_operator(cap, old_col, gui_yank)
}
}
else if (redo_VIsual_busy)
oap->end_vcol = oap->start_vcol + redo_VIsual_col - 1;
oap->end_vcol = oap->start_vcol + redo_VIsual_vcol - 1;
/*
* Correct oap->end.col and oap->start.col to be the
* upper-left and lower-right corner of the block area.
@@ -1735,13 +1744,22 @@ do_pending_operator(cap, old_col, gui_yank)
*/
resel_VIsual_mode = VIsual_mode;
if (curwin->w_curswant == MAXCOL)
resel_VIsual_col = MAXCOL;
else if (VIsual_mode == Ctrl_V)
resel_VIsual_col = oap->end_vcol - oap->start_vcol + 1;
else if (oap->line_count > 1)
resel_VIsual_col = oap->end.col;
resel_VIsual_vcol = MAXCOL;
else
resel_VIsual_col = oap->end.col - oap->start.col + 1;
{
if (VIsual_mode != Ctrl_V)
getvvcol(curwin, &(oap->end),
NULL, NULL, &oap->end_vcol);
if (VIsual_mode == Ctrl_V || oap->line_count <= 1)
{
if (VIsual_mode != Ctrl_V)
getvvcol(curwin, &(oap->start),
&oap->start_vcol, NULL, NULL);
resel_VIsual_vcol = oap->end_vcol - oap->start_vcol + 1;
}
else
resel_VIsual_vcol = oap->end_vcol;
}
resel_VIsual_line_count = oap->line_count;
}
@@ -1769,7 +1787,7 @@ do_pending_operator(cap, old_col, gui_yank)
if (!redo_VIsual_busy)
{
redo_VIsual_mode = resel_VIsual_mode;
redo_VIsual_col = resel_VIsual_col;
redo_VIsual_vcol = resel_VIsual_vcol;
redo_VIsual_line_count = resel_VIsual_line_count;
redo_VIsual_count = cap->count0;
}
@@ -7665,12 +7683,16 @@ nv_visual(cap)
if (VIsual_mode == 'v')
{
if (resel_VIsual_line_count <= 1)
curwin->w_cursor.col += resel_VIsual_col * cap->count0 - 1;
{
validate_virtcol();
curwin->w_curswant = curwin->w_virtcol
+ resel_VIsual_vcol * cap->count0 - 1;
}
else
curwin->w_cursor.col = resel_VIsual_col;
check_cursor_col();
curwin->w_curswant = resel_VIsual_vcol;
coladvance(curwin->w_curswant);
}
if (resel_VIsual_col == MAXCOL)
if (resel_VIsual_vcol == MAXCOL)
{
curwin->w_curswant = MAXCOL;
coladvance((colnr_T)MAXCOL);
@@ -7679,7 +7701,7 @@ nv_visual(cap)
{
validate_virtcol();
curwin->w_curswant = curwin->w_virtcol
+ resel_VIsual_col * cap->count0 - 1;
+ resel_VIsual_vcol * cap->count0 - 1;
coladvance(curwin->w_curswant);
}
else
+1 -1
View File
@@ -33,7 +33,7 @@
# ifdef EBCDIC
#define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
# else
#define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
#define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c\\,,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-G%*[ ]from %f:%l:%c,%-G%*[ ]from %f:%l:,%-G%*[ ]from %f:%l\\,,%-G%*[ ]from %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
# endif
# endif
# endif
+1 -1
View File
@@ -3936,7 +3936,7 @@ again:
curwin->w_cursor = old_pos;
goto theend;
}
sprintf((char *)spat, "<%.*s\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p);
sprintf((char *)spat, "<%.*s\\>\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p);
sprintf((char *)epat, "</%.*s>\\c", len, p);
r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"",
+14
View File
@@ -1308,6 +1308,20 @@ protected:
void testfall();
};
STARTTEST
:set cino=(0,gs,hs
2kdd]]=][
ENDTEST
class Foo : public Bar
{
public:
virtual void method1(void) = 0;
virtual void method2(int arg1,
int arg2,
int arg3) = 0;
};
STARTTEST
:set cino=+20
2kdd]]=][
+10
View File
@@ -1190,6 +1190,16 @@ protected:
};
class Foo : public Bar
{
public:
virtual void method1(void) = 0;
virtual void method2(int arg1,
int arg2,
int arg3) = 0;
};
void
foo()
{
+22
View File
@@ -724,6 +724,28 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
333,
/**/
332,
/**/
331,
/**/
330,
/**/
329,
/**/
328,
/**/
327,
/**/
326,
/**/
325,
/**/
324,
/**/
323,
/**/
322,
/**/
+28
View File
@@ -0,0 +1,28 @@
# The most simplistic Makefile, for MinGW gcc on MS-DOS
ifndef USEDLL
USEDLL = no
endif
ifeq (yes, $(USEDLL))
DEFINES =
LIBS = -lc
else
DEFINES =
LIBS =
endif
CC = gcc
CFLAGS = -O2 -Wall -DWIN32 $(DEFINES)
ifneq (sh.exe, $(SHELL))
DEL = rm
else
DEL = del
endif
xxd.exe: xxd.c
$(CC) $(CFLAGS) -s -o xxd.exe xxd.c $(LIBS)
clean:
-$(DEL) xxd.exe