From 7ae6defe1d406045b43b861bb8843efa597d5858 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:39 +0200 Subject: [PATCH 01/46] - patchlevel 639 --- 7.3.639 | 846 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 846 insertions(+) create mode 100644 7.3.639 diff --git a/7.3.639 b/7.3.639 new file mode 100644 index 00000000..359dc6d8 --- /dev/null +++ b/7.3.639 @@ -0,0 +1,846 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.639 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.639 +Problem: It's not easy to build Vim on Windows with XPM support. +Solution: Include the required files, they are quite small. Update the + MSVC makefile to use them. Binary files are in the next patch. + (Sergey Khorev) +Files: src/xpm/COPYRIGHT, src/xpm/README.txt, src/xpm/include/simx.h, + src/xpm/include/xpm.h, src/Make_mvc.mak, src/bigvim.bat, + src/bigvim64.bat, Filelist + + +*** ../vim-7.3.638/src/xpm/COPYRIGHT 1970-01-01 01:00:00.000000000 +0100 +--- src/xpm/COPYRIGHT 1998-03-19 23:51:00.000000000 +0100 +*************** +*** 0 **** +--- 1,31 ---- ++ /* ++ * Copyright (C) 1989-95 GROUPE BULL ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a copy ++ * of this software and associated documentation files (the "Software"), to ++ * deal in the Software without restriction, including without limitation the ++ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the Software is ++ * furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN ++ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ * ++ * Except as contained in this notice, the name of GROUPE BULL shall not be ++ * used in advertising or otherwise to promote the sale, use or other dealings ++ * in this Software without prior written authorization from GROUPE BULL. ++ */ ++ ++ Arnaud LE HORS BULL Research FRANCE -- Koala Project ++ (XPM - X PixMap format version 2 & 3) ++ Internet: lehors@sophia.inria.fr ++ Surface Mail: Arnaud LE HORS, INRIA - Sophia Antipolis, ++ 2004, route des Lucioles, 06565 Valbonne Cedex -- FRANCE ++ Voice phone: (33) 93.65.77.71, Fax: (33) 93 65 77 66, Telex: 97 00 50 F +*** ../vim-7.3.638/src/xpm/README.txt 1970-01-01 01:00:00.000000000 +0100 +--- src/xpm/README.txt 2012-08-29 13:29:17.000000000 +0200 +*************** +*** 0 **** +--- 1,23 ---- ++ This is XPM library compiled for Windows which is intended for use with Vim ++ 'signs' feature. ++ ++ Libraries in x86 directory were compiled with MSVC6 and MinGW. Proposed ++ commands to compile Vim are: ++ ++ Any version of MSVC starting from version 6.0: ++ nmake -f Make_mvc.mak GUI=yes CSCOPE=yes NETBEANS=yes XPM=e:\hg\xpm\x86 ++ ++ MinGW: ++ mingw32-make -f Make_ming.mak GUI=yes CSCOPE=yes XPM=e:/hg/xpm/x86 ++ ++ Microsoft Visual C++ on x64 (tested with versions 2008 and 2010): ++ nmake -f Make_mvc.mak GUI=yes CSCOPE=yes XPM=E:\HG\xpm\x64 ++ ++ To test, open some file in Vim and execute commands below: ++ :exe 'sign define vimxpm icon='.$VIMRUNTIME.'\\vim32x32.xpm' ++ :exe 'sign place 1 line=1 name=vimxpm file='.expand('%:p') ++ ++ ++ See COPYRIGHT for XPM licence. ++ ++ If you have questions please email sergey.khorev@gmail.com. +*** ../vim-7.3.638/src/xpm/include/simx.h 1970-01-01 01:00:00.000000000 +0100 +--- src/xpm/include/simx.h 1998-03-19 23:51:00.000000000 +0100 +*************** +*** 0 **** +--- 1,139 ---- ++ /* ++ * Copyright (C) 1989-95 GROUPE BULL ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a copy ++ * of this software and associated documentation files (the "Software"), to ++ * deal in the Software without restriction, including without limitation the ++ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the Software is ++ * furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN ++ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ * ++ * Except as contained in this notice, the name of GROUPE BULL shall not be ++ * used in advertising or otherwise to promote the sale, use or other dealings ++ * in this Software without prior written authorization from GROUPE BULL. ++ */ ++ ++ /*****************************************************************************\ ++ * simx.h: 0.1a * ++ * * ++ * This emulates some Xlib functionality for MSW. It's not a general solution, * ++ * it is close related to XPM-lib. It is only intended to satisfy what is need * ++ * there. Thus allowing to read XPM files under MS windows. * ++ * * ++ * Developed by HeDu 3/94 (hedu@cul-ipn.uni-kiel.de) * ++ \*****************************************************************************/ ++ ++ ++ #ifndef _SIMX_H ++ #define _SIMX_H ++ ++ #ifdef FOR_MSW ++ ++ #include "windows.h" /* MS windows GDI types */ ++ ++ /* ++ * minimal portability layer between ansi and KR C ++ */ ++ /* this comes from xpm.h, and is here again, to avoid complicated ++ includes, since this is included from xpm.h */ ++ /* these defines get undefed at the end of this file */ ++ #if __STDC__ || defined(__cplusplus) || defined(c_plusplus) ++ /* ANSI || C++ */ ++ #define FUNC(f, t, p) extern t f p ++ #define LFUNC(f, t, p) static t f p ++ #else /* k&R */ ++ #define FUNC(f, t, p) extern t f() ++ #define LFUNC(f, t, p) static t f() ++ #endif ++ ++ ++ FUNC(boundCheckingMalloc, void *, (long s)); ++ FUNC(boundCheckingCalloc, void *, (long num, long s)); ++ FUNC(boundCheckingRealloc, void *, (void *p, long s)); ++ ++ /* define MSW types for X window types, ++ I don't know much about MSW, but the following defines do the job */ ++ ++ typedef HDC Display; /* this should be similar */ ++ typedef void *Screen; /* not used */ ++ typedef void *Visual; /* not used yet, is for GRAY, COLOR, ++ * MONO */ ++ ++ typedef void *Colormap; /* should be COLORPALETTE, not done ++ * yet */ ++ ++ typedef COLORREF Pixel; ++ ++ #define PIXEL_ALREADY_TYPEDEFED /* to let xpm.h know about it */ ++ ++ typedef struct { ++ Pixel pixel; ++ BYTE red, green, blue; ++ } XColor; ++ ++ typedef struct { ++ HBITMAP bitmap; ++ unsigned int width; ++ unsigned int height; ++ unsigned int depth; ++ } XImage; ++ ++ #if defined(__cplusplus) || defined(c_plusplus) ++ extern "C" { ++ #endif ++ /* some replacements for X... functions */ ++ ++ /* XDefaultXXX */ ++ FUNC(XDefaultVisual, Visual *, (Display *display, Screen *screen)); ++ FUNC(XDefaultScreen, Screen *, (Display *d)); ++ FUNC(XDefaultColormap, Colormap *, (Display *display, Screen *screen)); ++ FUNC(XDefaultDepth, int, (Display *d, Screen *s)); ++ ++ /* color related */ ++ FUNC(XParseColor, int, (Display *, Colormap *, char *, XColor *)); ++ FUNC(XAllocColor, int, (Display *, Colormap *, XColor *)); ++ FUNC(XQueryColors, void, (Display *display, Colormap *colormap, ++ XColor *xcolors, int ncolors)); ++ FUNC(XFreeColors, int, (Display *d, Colormap cmap, ++ unsigned long pixels[], ++ int npixels, unsigned long planes)); ++ /* XImage */ ++ FUNC(XCreateImage, XImage *, (Display *, Visual *, int depth, int format, ++ int x, int y, int width, int height, ++ int pad, int foo)); ++ ++ /* free and destroy bitmap */ ++ FUNC(XDestroyImage, void /* ? */ , (XImage *)); ++ /* free only, bitmap remains */ ++ FUNC(XImageFree, void, (XImage *)); ++ #if defined(__cplusplus) || defined(c_plusplus) ++ } /* end of extern "C" */ ++ #endif /* cplusplus */ ++ ++ #define ZPixmap 1 /* not really used */ ++ #define XYBitmap 1 /* not really used */ ++ ++ #ifndef True ++ #define True 1 ++ #define False 0 ++ #endif ++ #ifndef Bool ++ typedef BOOL Bool; /* take MSW bool */ ++ #endif ++ /* make these local here, simx.c gets the same from xpm.h */ ++ #undef LFUNC ++ #undef FUNC ++ ++ #endif /* def FOR_MSW */ ++ ++ #endif /* _SIMX_H */ +*** ../vim-7.3.638/src/xpm/include/xpm.h 1970-01-01 01:00:00.000000000 +0100 +--- src/xpm/include/xpm.h 1998-03-19 23:51:00.000000000 +0100 +*************** +*** 0 **** +--- 1,501 ---- ++ /* ++ * Copyright (C) 1989-95 GROUPE BULL ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a copy ++ * of this software and associated documentation files (the "Software"), to ++ * deal in the Software without restriction, including without limitation the ++ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the Software is ++ * furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN ++ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ * ++ * Except as contained in this notice, the name of GROUPE BULL shall not be ++ * used in advertising or otherwise to promote the sale, use or other dealings ++ * in this Software without prior written authorization from GROUPE BULL. ++ */ ++ ++ /*****************************************************************************\ ++ * xpm.h: * ++ * * ++ * XPM library * ++ * Include file * ++ * * ++ * Developed by Arnaud Le Hors * ++ \*****************************************************************************/ ++ ++ /* ++ * The code related to FOR_MSW has been added by ++ * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 ++ */ ++ ++ /* ++ * The code related to AMIGA has been added by ++ * Lorens Younes (d93-hyo@nada.kth.se) 4/96 ++ */ ++ ++ #ifndef XPM_h ++ #define XPM_h ++ ++ /* ++ * first some identification numbers: ++ * the version and revision numbers are determined with the following rule: ++ * SO Major number = LIB minor version number. ++ * SO Minor number = LIB sub-minor version number. ++ * e.g: Xpm version 3.2f ++ * we forget the 3 which is the format number, 2 gives 2, and f gives 6. ++ * thus we have XpmVersion = 2 and XpmRevision = 6 ++ * which gives SOXPMLIBREV = 2.6 ++ * ++ * Then the XpmIncludeVersion number is built from these numbers. ++ */ ++ #define XpmFormat 3 ++ #define XpmVersion 4 ++ #define XpmRevision 11 ++ #define XpmIncludeVersion ((XpmFormat * 100 + XpmVersion) * 100 + XpmRevision) ++ ++ #ifndef XPM_NUMBERS ++ ++ #ifdef FOR_MSW ++ # define SYSV /* uses memcpy string.h etc. */ ++ # include ++ # include "simx.h" /* defines some X stuff using MSW types */ ++ #define NEED_STRCASECMP /* at least for MSVC++ */ ++ #else /* FOR_MSW */ ++ # ifdef AMIGA ++ # include "amigax.h" ++ # else /* not AMIGA */ ++ # include ++ # include ++ # endif /* not AMIGA */ ++ #endif /* FOR_MSW */ ++ ++ /* let's define Pixel if it is not done yet */ ++ #if ! defined(_XtIntrinsic_h) && ! defined(PIXEL_ALREADY_TYPEDEFED) ++ typedef unsigned long Pixel; /* Index into colormap */ ++ # define PIXEL_ALREADY_TYPEDEFED ++ #endif ++ ++ /* make sure we know whether function prototypes are needed or not */ ++ #ifndef NeedFunctionPrototypes ++ # if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus) ++ # define NeedFunctionPrototypes 1 ++ # else ++ # define NeedFunctionPrototypes 0 ++ # endif ++ #endif ++ ++ ++ /* Return ErrorStatus codes: ++ * null if full success ++ * positive if partial success ++ * negative if failure ++ */ ++ ++ #define XpmColorError 1 ++ #define XpmSuccess 0 ++ #define XpmOpenFailed -1 ++ #define XpmFileInvalid -2 ++ #define XpmNoMemory -3 ++ #define XpmColorFailed -4 ++ ++ typedef struct { ++ char *name; /* Symbolic color name */ ++ char *value; /* Color value */ ++ Pixel pixel; /* Color pixel */ ++ } XpmColorSymbol; ++ ++ typedef struct { ++ char *name; /* name of the extension */ ++ unsigned int nlines; /* number of lines in this extension */ ++ char **lines; /* pointer to the extension array of strings */ ++ } XpmExtension; ++ ++ typedef struct { ++ char *string; /* characters string */ ++ char *symbolic; /* symbolic name */ ++ char *m_color; /* monochrom default */ ++ char *g4_color; /* 4 level grayscale default */ ++ char *g_color; /* other level grayscale default */ ++ char *c_color; /* color default */ ++ } XpmColor; ++ ++ typedef struct { ++ unsigned int width; /* image width */ ++ unsigned int height; /* image height */ ++ unsigned int cpp; /* number of characters per pixel */ ++ unsigned int ncolors; /* number of colors */ ++ XpmColor *colorTable; /* list of related colors */ ++ unsigned int *data; /* image data */ ++ } XpmImage; ++ ++ typedef struct { ++ unsigned long valuemask; /* Specifies which attributes are defined */ ++ char *hints_cmt; /* Comment of the hints section */ ++ char *colors_cmt; /* Comment of the colors section */ ++ char *pixels_cmt; /* Comment of the pixels section */ ++ unsigned int x_hotspot; /* Returns the x hotspot's coordinate */ ++ unsigned int y_hotspot; /* Returns the y hotspot's coordinate */ ++ unsigned int nextensions; /* number of extensions */ ++ XpmExtension *extensions; /* pointer to array of extensions */ ++ } XpmInfo; ++ ++ typedef int (*XpmAllocColorFunc)( ++ #if NeedFunctionPrototypes ++ Display* /* display */, ++ Colormap /* colormap */, ++ char* /* colorname */, ++ XColor* /* xcolor */, ++ void* /* closure */ ++ #endif ++ ); ++ ++ typedef int (*XpmFreeColorsFunc)( ++ #if NeedFunctionPrototypes ++ Display* /* display */, ++ Colormap /* colormap */, ++ Pixel* /* pixels */, ++ int /* npixels */, ++ void* /* closure */ ++ #endif ++ ); ++ ++ typedef struct { ++ unsigned long valuemask; /* Specifies which attributes are ++ defined */ ++ ++ Visual *visual; /* Specifies the visual to use */ ++ Colormap colormap; /* Specifies the colormap to use */ ++ unsigned int depth; /* Specifies the depth */ ++ unsigned int width; /* Returns the width of the created ++ pixmap */ ++ unsigned int height; /* Returns the height of the created ++ pixmap */ ++ unsigned int x_hotspot; /* Returns the x hotspot's ++ coordinate */ ++ unsigned int y_hotspot; /* Returns the y hotspot's ++ coordinate */ ++ unsigned int cpp; /* Specifies the number of char per ++ pixel */ ++ Pixel *pixels; /* List of used color pixels */ ++ unsigned int npixels; /* Number of used pixels */ ++ XpmColorSymbol *colorsymbols; /* List of color symbols to override */ ++ unsigned int numsymbols; /* Number of symbols */ ++ char *rgb_fname; /* RGB text file name */ ++ unsigned int nextensions; /* Number of extensions */ ++ XpmExtension *extensions; /* List of extensions */ ++ ++ unsigned int ncolors; /* Number of colors */ ++ XpmColor *colorTable; /* List of colors */ ++ /* 3.2 backward compatibility code */ ++ char *hints_cmt; /* Comment of the hints section */ ++ char *colors_cmt; /* Comment of the colors section */ ++ char *pixels_cmt; /* Comment of the pixels section */ ++ /* end 3.2 bc */ ++ unsigned int mask_pixel; /* Color table index of transparent ++ color */ ++ ++ /* Color Allocation Directives */ ++ Bool exactColors; /* Only use exact colors for visual */ ++ unsigned int closeness; /* Allowable RGB deviation */ ++ unsigned int red_closeness; /* Allowable red deviation */ ++ unsigned int green_closeness; /* Allowable green deviation */ ++ unsigned int blue_closeness; /* Allowable blue deviation */ ++ int color_key; /* Use colors from this color set */ ++ ++ Pixel *alloc_pixels; /* Returns the list of alloc'ed color ++ pixels */ ++ int nalloc_pixels; /* Returns the number of alloc'ed ++ color pixels */ ++ ++ Bool alloc_close_colors; /* Specify whether close colors should ++ be allocated using XAllocColor ++ or not */ ++ int bitmap_format; /* Specify the format of 1bit depth ++ images: ZPixmap or XYBitmap */ ++ ++ /* Color functions */ ++ XpmAllocColorFunc alloc_color; /* Application color allocator */ ++ XpmFreeColorsFunc free_colors; /* Application color de-allocator */ ++ void *color_closure; /* Application private data to pass to ++ alloc_color and free_colors */ ++ ++ } XpmAttributes; ++ ++ /* XpmAttributes value masks bits */ ++ #define XpmVisual (1L<<0) ++ #define XpmColormap (1L<<1) ++ #define XpmDepth (1L<<2) ++ #define XpmSize (1L<<3) /* width & height */ ++ #define XpmHotspot (1L<<4) /* x_hotspot & y_hotspot */ ++ #define XpmCharsPerPixel (1L<<5) ++ #define XpmColorSymbols (1L<<6) ++ #define XpmRgbFilename (1L<<7) ++ /* 3.2 backward compatibility code */ ++ #define XpmInfos (1L<<8) ++ #define XpmReturnInfos XpmInfos ++ /* end 3.2 bc */ ++ #define XpmReturnPixels (1L<<9) ++ #define XpmExtensions (1L<<10) ++ #define XpmReturnExtensions XpmExtensions ++ ++ #define XpmExactColors (1L<<11) ++ #define XpmCloseness (1L<<12) ++ #define XpmRGBCloseness (1L<<13) ++ #define XpmColorKey (1L<<14) ++ ++ #define XpmColorTable (1L<<15) ++ #define XpmReturnColorTable XpmColorTable ++ ++ #define XpmReturnAllocPixels (1L<<16) ++ #define XpmAllocCloseColors (1L<<17) ++ #define XpmBitmapFormat (1L<<18) ++ ++ #define XpmAllocColor (1L<<19) ++ #define XpmFreeColors (1L<<20) ++ #define XpmColorClosure (1L<<21) ++ ++ ++ /* XpmInfo value masks bits */ ++ #define XpmComments XpmInfos ++ #define XpmReturnComments XpmComments ++ ++ /* XpmAttributes mask_pixel value when there is no mask */ ++ #ifndef FOR_MSW ++ #define XpmUndefPixel 0x80000000 ++ #else ++ /* int is only 16 bit for MSW */ ++ #define XpmUndefPixel 0x8000 ++ #endif ++ ++ /* ++ * color keys for visual type, they must fit along with the number key of ++ * each related element in xpmColorKeys[] defined in XpmI.h ++ */ ++ #define XPM_MONO 2 ++ #define XPM_GREY4 3 ++ #define XPM_GRAY4 3 ++ #define XPM_GREY 4 ++ #define XPM_GRAY 4 ++ #define XPM_COLOR 5 ++ ++ ++ /* macros for forward declarations of functions with prototypes */ ++ #if NeedFunctionPrototypes ++ #define FUNC(f, t, p) extern t f p ++ #define LFUNC(f, t, p) static t f p ++ #else ++ #define FUNC(f, t, p) extern t f() ++ #define LFUNC(f, t, p) static t f() ++ #endif ++ ++ ++ /* ++ * functions declarations ++ */ ++ ++ #ifdef __cplusplus ++ extern "C" { ++ #endif ++ ++ /* FOR_MSW, all ..Pixmap.. are excluded, only the ..XImage.. are used */ ++ /* Same for Amiga! */ ++ ++ #if !defined(FOR_MSW) && !defined(AMIGA) ++ FUNC(XpmCreatePixmapFromData, int, (Display *display, ++ Drawable d, ++ char **data, ++ Pixmap *pixmap_return, ++ Pixmap *shapemask_return, ++ XpmAttributes *attributes)); ++ ++ FUNC(XpmCreateDataFromPixmap, int, (Display *display, ++ char ***data_return, ++ Pixmap pixmap, ++ Pixmap shapemask, ++ XpmAttributes *attributes)); ++ ++ FUNC(XpmReadFileToPixmap, int, (Display *display, ++ Drawable d, ++ char *filename, ++ Pixmap *pixmap_return, ++ Pixmap *shapemask_return, ++ XpmAttributes *attributes)); ++ ++ FUNC(XpmWriteFileFromPixmap, int, (Display *display, ++ char *filename, ++ Pixmap pixmap, ++ Pixmap shapemask, ++ XpmAttributes *attributes)); ++ #endif ++ ++ FUNC(XpmCreateImageFromData, int, (Display *display, ++ char **data, ++ XImage **image_return, ++ XImage **shapemask_return, ++ XpmAttributes *attributes)); ++ ++ FUNC(XpmCreateDataFromImage, int, (Display *display, ++ char ***data_return, ++ XImage *image, ++ XImage *shapeimage, ++ XpmAttributes *attributes)); ++ ++ FUNC(XpmReadFileToImage, int, (Display *display, ++ char *filename, ++ XImage **image_return, ++ XImage **shapeimage_return, ++ XpmAttributes *attributes)); ++ ++ FUNC(XpmWriteFileFromImage, int, (Display *display, ++ char *filename, ++ XImage *image, ++ XImage *shapeimage, ++ XpmAttributes *attributes)); ++ ++ FUNC(XpmCreateImageFromBuffer, int, (Display *display, ++ char *buffer, ++ XImage **image_return, ++ XImage **shapemask_return, ++ XpmAttributes *attributes)); ++ #if !defined(FOR_MSW) && !defined(AMIGA) ++ FUNC(XpmCreatePixmapFromBuffer, int, (Display *display, ++ Drawable d, ++ char *buffer, ++ Pixmap *pixmap_return, ++ Pixmap *shapemask_return, ++ XpmAttributes *attributes)); ++ ++ FUNC(XpmCreateBufferFromImage, int, (Display *display, ++ char **buffer_return, ++ XImage *image, ++ XImage *shapeimage, ++ XpmAttributes *attributes)); ++ ++ FUNC(XpmCreateBufferFromPixmap, int, (Display *display, ++ char **buffer_return, ++ Pixmap pixmap, ++ Pixmap shapemask, ++ XpmAttributes *attributes)); ++ #endif ++ FUNC(XpmReadFileToBuffer, int, (char *filename, char **buffer_return)); ++ FUNC(XpmWriteFileFromBuffer, int, (char *filename, char *buffer)); ++ ++ FUNC(XpmReadFileToData, int, (char *filename, char ***data_return)); ++ FUNC(XpmWriteFileFromData, int, (char *filename, char **data)); ++ ++ FUNC(XpmAttributesSize, int, ()); ++ FUNC(XpmFreeAttributes, void, (XpmAttributes *attributes)); ++ FUNC(XpmFreeExtensions, void, (XpmExtension *extensions, ++ int nextensions)); ++ ++ FUNC(XpmFreeXpmImage, void, (XpmImage *image)); ++ FUNC(XpmFreeXpmInfo, void, (XpmInfo *info)); ++ FUNC(XpmGetErrorString, char *, (int errcode)); ++ FUNC(XpmLibraryVersion, int, ()); ++ ++ /* XpmImage functions */ ++ FUNC(XpmReadFileToXpmImage, int, (char *filename, ++ XpmImage *image, ++ XpmInfo *info)); ++ ++ FUNC(XpmWriteFileFromXpmImage, int, (char *filename, ++ XpmImage *image, ++ XpmInfo *info)); ++ #if !defined(FOR_MSW) && !defined(AMIGA) ++ FUNC(XpmCreatePixmapFromXpmImage, int, (Display *display, ++ Drawable d, ++ XpmImage *image, ++ Pixmap *pixmap_return, ++ Pixmap *shapemask_return, ++ XpmAttributes *attributes)); ++ #endif ++ FUNC(XpmCreateImageFromXpmImage, int, (Display *display, ++ XpmImage *image, ++ XImage **image_return, ++ XImage **shapeimage_return, ++ XpmAttributes *attributes)); ++ ++ FUNC(XpmCreateXpmImageFromImage, int, (Display *display, ++ XImage *image, ++ XImage *shapeimage, ++ XpmImage *xpmimage, ++ XpmAttributes *attributes)); ++ #if !defined(FOR_MSW) && !defined(AMIGA) ++ FUNC(XpmCreateXpmImageFromPixmap, int, (Display *display, ++ Pixmap pixmap, ++ Pixmap shapemask, ++ XpmImage *xpmimage, ++ XpmAttributes *attributes)); ++ #endif ++ FUNC(XpmCreateDataFromXpmImage, int, (char ***data_return, ++ XpmImage *image, ++ XpmInfo *info)); ++ ++ FUNC(XpmCreateXpmImageFromData, int, (char **data, ++ XpmImage *image, ++ XpmInfo *info)); ++ ++ FUNC(XpmCreateXpmImageFromBuffer, int, (char *buffer, ++ XpmImage *image, ++ XpmInfo *info)); ++ ++ FUNC(XpmCreateBufferFromXpmImage, int, (char **buffer_return, ++ XpmImage *image, ++ XpmInfo *info)); ++ ++ FUNC(XpmGetParseError, int, (char *filename, ++ int *linenum_return, ++ int *charnum_return)); ++ ++ FUNC(XpmFree, void, (void *ptr)); ++ ++ #ifdef __cplusplus ++ } /* for C++ V2.0 */ ++ #endif ++ ++ ++ /* backward compatibility */ ++ ++ /* for version 3.0c */ ++ #define XpmPixmapColorError XpmColorError ++ #define XpmPixmapSuccess XpmSuccess ++ #define XpmPixmapOpenFailed XpmOpenFailed ++ #define XpmPixmapFileInvalid XpmFileInvalid ++ #define XpmPixmapNoMemory XpmNoMemory ++ #define XpmPixmapColorFailed XpmColorFailed ++ ++ #define XpmReadPixmapFile(dpy, d, file, pix, mask, att) \ ++ XpmReadFileToPixmap(dpy, d, file, pix, mask, att) ++ #define XpmWritePixmapFile(dpy, file, pix, mask, att) \ ++ XpmWriteFileFromPixmap(dpy, file, pix, mask, att) ++ ++ /* for version 3.0b */ ++ #define PixmapColorError XpmColorError ++ #define PixmapSuccess XpmSuccess ++ #define PixmapOpenFailed XpmOpenFailed ++ #define PixmapFileInvalid XpmFileInvalid ++ #define PixmapNoMemory XpmNoMemory ++ #define PixmapColorFailed XpmColorFailed ++ ++ #define ColorSymbol XpmColorSymbol ++ ++ #define XReadPixmapFile(dpy, d, file, pix, mask, att) \ ++ XpmReadFileToPixmap(dpy, d, file, pix, mask, att) ++ #define XWritePixmapFile(dpy, file, pix, mask, att) \ ++ XpmWriteFileFromPixmap(dpy, file, pix, mask, att) ++ #define XCreatePixmapFromData(dpy, d, data, pix, mask, att) \ ++ XpmCreatePixmapFromData(dpy, d, data, pix, mask, att) ++ #define XCreateDataFromPixmap(dpy, data, pix, mask, att) \ ++ XpmCreateDataFromPixmap(dpy, data, pix, mask, att) ++ ++ #endif /* XPM_NUMBERS */ ++ #endif +*** ../vim-7.3.638/src/Make_mvc.mak 2012-08-02 21:48:20.000000000 +0200 +--- src/Make_mvc.mak 2012-08-29 13:46:05.000000000 +0200 +*************** +*** 89,94 **** +--- 89,96 ---- + # Netbeans Support: NETBEANS=[yes or no] (default is yes if GUI is yes) + # + # XPM Image Support: XPM=[path to XPM directory] ++ # Default is "xpm", using the files included in the distribution. ++ # Use "no" to disable this feature. + # + # Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED) + # +*************** +*** 279,295 **** + NETBEANS_LIB = WSock32.lib + !endif + +! !ifdef XPM + # XPM - Include support for XPM signs +! # You need to download or build xpm.lib somehow. +! # You can get the most recent version of libXpm-*.zip from +! # http://cgit.freedesktop.org/xorg/lib/libXpm +! # from which you must build xpm.lib yourself +! # OR get and unpack: ftp://ftp.vim.org/pub/vim/pcextra/xpm.zip + XPM_OBJ = $(OBJDIR)/xpm_w32.obj + XPM_DEFS = -DFEAT_XPM_W32 + XPM_LIB = $(XPM)\lib\libXpm.lib +! XPM_INC = -I $(XPM)\include + !endif + !endif + +--- 281,301 ---- + NETBEANS_LIB = WSock32.lib + !endif + +! !ifndef XPM +! # XPM is not set, use the included xpm files, depending on the architecture. +! !if ("$(CPU)" == "AMD64") || ("$(CPU)" == "IA64") +! XPM = xpm\x64 +! !else +! XPM = xpm\x86 +! !endif +! !endif +! !if "$(XPM)" != "no" + # XPM - Include support for XPM signs +! # See the xpm directory for more information. + XPM_OBJ = $(OBJDIR)/xpm_w32.obj + XPM_DEFS = -DFEAT_XPM_W32 + XPM_LIB = $(XPM)\lib\libXpm.lib +! XPM_INC = -I $(XPM)\include -I $(XPM)\..\include + !endif + !endif + +*** ../vim-7.3.638/src/bigvim.bat 2010-08-15 21:57:29.000000000 +0200 +--- src/bigvim.bat 2012-08-29 13:46:18.000000000 +0200 +*************** +*** 1,3 **** + :: command to build big Vim with OLE, Perl, Python, Ruby and Tcl +! nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl512 DYNAMIC_PERL=yes PERL_VER=512 PYTHON=e:\python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=e:\python31 DYNAMIC_PYTHON3=yes PYTHON3_VER=31 RUBY=e:\ruby191 DYNAMIC_RUBY=yes RUBY_VER=191 RUBY_VER_LONG=1.9.1 TCL=e:\tcl DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes XPM=e:\xpm + +--- 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 + +*** ../vim-7.3.638/src/bigvim64.bat 2012-08-29 14:16:38.000000000 +0200 +--- src/bigvim64.bat 2012-08-29 13:46:35.000000000 +0200 +*************** +*** 0 **** +--- 1,6 ---- ++ :: command to build big Vim 64 bit with OLE, Perl, Python, Ruby and Tcl ++ :: First run: %VCDIR%\vcvarsall.bat x86_amd64 ++ SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\" ++ SET TOOLDIR=E:\ ++ %VCDIR%\bin\nmake -f Make_mvc.mak CPU=AMD64 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 ++ +*** ../vim-7.3.638/Filelist 2012-07-16 17:27:57.000000000 +0200 +--- Filelist 2012-08-29 13:53:52.000000000 +0200 +*************** +*** 349,354 **** +--- 349,360 ---- + src/vim*.ico \ + src/vim.tlb \ + src/vimtbar.lib \ ++ src/xpm/COPYRIGHT \ ++ src/xpm/README.txt \ ++ src/xpm/include/*.h \ ++ src/xpm/x64/lib/libXpm.lib \ ++ src/xpm/x86/lib/libXpm.a \ ++ src/xpm/x86/lib/libXpm.lib \ + src/vimtbar.dll \ + nsis/icons/*.bmp \ + nsis/icons/*.ico \ +*** ../vim-7.3.638/src/version.c 2012-08-29 14:17:51.000000000 +0200 +--- src/version.c 2012-08-29 14:14:19.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 639, + /**/ + +-- +A successful man is one who makes more money than his wife can spend. +A successful woman is one who can find such a man. + + /// 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 /// From 6baa4a8fb168772b6fe2da3e10efabe07b129890 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:42 +0200 Subject: [PATCH 02/46] - patchlevel 640 --- 7.3.640 | Bin 0 -> 455297 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 7.3.640 diff --git a/7.3.640 b/7.3.640 new file mode 100644 index 0000000000000000000000000000000000000000..984df6400779e68332e9e016d04f19445b940e0b GIT binary patch literal 455297 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 GUjGYh4Wu0a literal 0 HcmV?d00001 From 3cdf729f5f63fa78a75f073923f400bdd42ea298 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:44 +0200 Subject: [PATCH 03/46] - patchlevel 641 --- 7.3.641 | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 7.3.641 diff --git a/7.3.641 b/7.3.641 new file mode 100644 index 00000000..daacdb4f --- /dev/null +++ b/7.3.641 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.641 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.641 +Problem: ":mkview" uses ":normal" instead of ":normal!" for folds. (Dan) +Solution: Add the bang. (Christian Brabandt) +Files: src/fold.c + + +*** ../vim-7.3.640/src/fold.c 2012-08-08 18:01:00.000000000 +0200 +--- src/fold.c 2012-08-29 15:17:39.000000000 +0200 +*************** +*** 3373,3379 **** + /* open nested folds while this fold is open */ + if (fprintf(fd, "%ld", fp->fd_top + off) < 0 + || put_eol(fd) == FAIL +! || put_line(fd, "normal zo") == FAIL) + return FAIL; + if (put_foldopen_recurse(fd, wp, &fp->fd_nested, + off + fp->fd_top) +--- 3373,3379 ---- + /* open nested folds while this fold is open */ + if (fprintf(fd, "%ld", fp->fd_top + off) < 0 + || put_eol(fd) == FAIL +! || put_line(fd, "normal! zo") == FAIL) + return FAIL; + if (put_foldopen_recurse(fd, wp, &fp->fd_nested, + off + fp->fd_top) +*************** +*** 3417,3423 **** + { + if (fprintf(fd, "%ld", fp->fd_top + off) < 0 + || put_eol(fd) == FAIL +! || fprintf(fd, "normal z%c", + fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0 + || put_eol(fd) == FAIL) + return FAIL; +--- 3417,3423 ---- + { + if (fprintf(fd, "%ld", fp->fd_top + off) < 0 + || put_eol(fd) == FAIL +! || fprintf(fd, "normal! z%c", + fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0 + || put_eol(fd) == FAIL) + return FAIL; +*** ../vim-7.3.640/src/version.c 2012-08-29 14:23:06.000000000 +0200 +--- src/version.c 2012-08-29 15:18:26.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 641, + /**/ + +-- +You cannot propel yourself forward by patting yourself on the back. + + /// 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 /// From 82d202215dc4f4c85b3c81a425539aa4c473989f Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:45 +0200 Subject: [PATCH 04/46] - patchlevel 642 --- 7.3.642 | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 7.3.642 diff --git a/7.3.642 b/7.3.642 new file mode 100644 index 00000000..ddc40321 --- /dev/null +++ b/7.3.642 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.642 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.642 +Problem: Segfault with specific autocommands. Was OK after 7.3.449 and + before 7.3.545. (Richard Brown) +Solution: Pass TRUE for abort_if_last in the call to close_buffer(). + (Christian Brabandt) +Files: src/window.c + + +*** ../vim-7.3.641/src/window.c 2012-07-19 18:05:40.000000000 +0200 +--- src/window.c 2012-08-29 15:42:15.000000000 +0200 +*************** +*** 2269,2275 **** + #ifdef FEAT_AUTOCMD + win->w_closing = TRUE; + #endif +! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE); + #ifdef FEAT_AUTOCMD + if (win_valid(win)) + win->w_closing = FALSE; +--- 2269,2275 ---- + #ifdef FEAT_AUTOCMD + win->w_closing = TRUE; + #endif +! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, TRUE); + #ifdef FEAT_AUTOCMD + if (win_valid(win)) + win->w_closing = FALSE; +*** ../vim-7.3.641/src/version.c 2012-08-29 15:22:14.000000000 +0200 +--- src/version.c 2012-08-29 15:49:52.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 642, + /**/ + +-- +The psychic said, "God bless you." I said, "I didn't sneeze." She +looked deep into my eyes and said, "You will, eventually." And, damn +if she wasn't right. Two days later, I sneezed. --Ellen Degeneres + + /// 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 /// From e1ac2e7f4b185d50983852f1b01bd6be84472dda Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:47 +0200 Subject: [PATCH 05/46] - patchlevel 643 --- 7.3.643 | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 7.3.643 diff --git a/7.3.643 b/7.3.643 new file mode 100644 index 00000000..c2f700c5 --- /dev/null +++ b/7.3.643 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.643 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.643 (after 7.3.635) +Problem: MS-Windows: When starting gvim maximized 'lines' and 'columns' are + wrong. (Christian Robinson) +Solution: Move the check for gui.starting from ui_get_shellsize() to + check_shellsize(). +Files: src/ui.c, src/term.c + + +*** ../vim-7.3.642/src/ui.c 2012-08-23 13:28:50.000000000 +0200 +--- src/ui.c 2012-08-29 16:20:04.000000000 +0200 +*************** +*** 298,306 **** + int retval; + + #ifdef FEAT_GUI +- if (gui.starting) +- /* possibly a system call during startup, check later */ +- return OK; + if (gui.in_use) + retval = gui_get_shellsize(); + else +--- 298,303 ---- +*** ../vim-7.3.642/src/term.c 2012-08-15 16:20:59.000000000 +0200 +--- src/term.c 2012-08-29 16:22:25.000000000 +0200 +*************** +*** 3006,3012 **** + int old_Rows = Rows; + int old_Columns = Columns; + +! if (!exiting) + { + (void)ui_get_shellsize(); + check_shellsize(); +--- 3006,3018 ---- + int old_Rows = Rows; + int old_Columns = Columns; + +! if (!exiting +! #ifdef FEAT_GUI +! /* Do not get the size when executing a shell command during +! * startup. */ +! && !gui.starting +! #endif +! ) + { + (void)ui_get_shellsize(); + check_shellsize(); +*** ../vim-7.3.642/src/version.c 2012-08-29 15:50:22.000000000 +0200 +--- src/version.c 2012-08-29 16:25:42.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 643, + /**/ + +-- +Eight Megabytes And Continually Swapping. + + /// 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 /// From 2c2b50510c793297c3a3f5720705082b5bf2de00 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:48 +0200 Subject: [PATCH 06/46] - patchlevel 644 --- 7.3.644 | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 7.3.644 diff --git a/7.3.644 b/7.3.644 new file mode 100644 index 00000000..6f2630cc --- /dev/null +++ b/7.3.644 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.644 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.644 +Problem: Dead code for BeOS GUI. +Solution: Remove unused __BEOS__ stuff. +Files: src/gui.c + + +*** ../vim-7.3.643/src/gui.c 2012-07-10 16:49:08.000000000 +0200 +--- src/gui.c 2012-08-29 16:28:46.000000000 +0200 +*************** +*** 37,44 **** + static void gui_set_bg_color __ARGS((char_u *name)); + static win_T *xy2win __ARGS((int x, int y)); + +! #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \ +! && !defined(__APPLE__) + # define MAY_FORK + static void gui_do_fork __ARGS((void)); + +--- 37,43 ---- + static void gui_set_bg_color __ARGS((char_u *name)); + static win_T *xy2win __ARGS((int x, int y)); + +! #if defined(UNIX) && !defined(MACOS_X) && !defined(__APPLE__) + # define MAY_FORK + static void gui_do_fork __ARGS((void)); + +*************** +*** 784,794 **** + gui_exit(rc) + int rc; + { +- #ifndef __BEOS__ + /* don't free the fonts, it leads to a BUS error + * richard@whitequeen.com Jul 99 */ + free_highlight_fonts(); +- #endif + gui.in_use = FALSE; + gui_mch_exit(rc); + } +--- 783,791 ---- +*** ../vim-7.3.643/src/version.c 2012-08-29 16:26:01.000000000 +0200 +--- src/version.c 2012-08-29 16:33:30.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 644, + /**/ + +-- +E M A C S +s e l o h +c t t n i +a a t f +p r t +e o + l + + /// 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 /// From 3497045fbeaaab8b4d12de2f6b4a531a733d4b87 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:49 +0200 Subject: [PATCH 07/46] - patchlevel 645 --- 7.3.645 | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 7.3.645 diff --git a/7.3.645 b/7.3.645 new file mode 100644 index 00000000..40d8ee0b --- /dev/null +++ b/7.3.645 @@ -0,0 +1,118 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.645 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.645 +Problem: No tests for patch 7.3.625 and 7.3.637. +Solution: Add more tests for the "gn" command and try/catch. (Christian + Brabandt) +Files: src/testdir/test53.in, src/testdir/test53.ok, + src/testdir/test55.in, src/testdir/test55.ok + + +*** ../vim-7.3.644/src/testdir/test53.in 2012-07-25 15:06:20.000000000 +0200 +--- src/testdir/test53.in 2012-08-29 16:37:44.000000000 +0200 +*************** +*** 34,40 **** + gnd + /[a]bcdx + :1 +! 2gnd + :/^start:/,/^end:/wq! test.out + ENDTEST + +--- 34,46 ---- + gnd + /[a]bcdx + :1 +! 2gnd/join +! /$ +! 0gnd +! /\>\zs +! 0gnd/^ +! gnd$h/\zs +! gnd + :/^start:/,/^end:/wq! test.out + ENDTEST + +*************** +*** 57,60 **** +--- 63,70 ---- + one + two + abcdx | abcdx | abcdx ++ join ++ lines ++ zero width pattern ++ delete first and last chars + end: +*** ../vim-7.3.644/src/testdir/test53.ok 2012-07-25 15:06:20.000000000 +0200 +--- src/testdir/test53.ok 2012-08-29 16:37:48.000000000 +0200 +*************** +*** 21,24 **** +--- 21,27 ---- + SEARCH: + searchmatch + abcdx | | abcdx ++ join lines ++ zerowidth pattern ++ elete first and last char + end: +*** ../vim-7.3.644/src/testdir/test55.in 2012-05-18 12:06:58.000000000 +0200 +--- src/testdir/test55.in 2012-08-29 16:50:51.000000000 +0200 +*************** +*** 378,383 **** +--- 378,393 ---- + :unlet dict + :call garbagecollect(1) + :" ++ :" test for patch 7.3.637 ++ :let a = 'No error caught' ++ :try|foldopen|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry ++ o=a :" ++ :lang C ++ :redir => a ++ :try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry ++ :redir END ++ o=a :" ++ :" + :/^start:/,$wq! test.out + ENDTEST + +*** ../vim-7.3.644/src/testdir/test55.ok 2012-05-18 12:06:58.000000000 +0200 +--- src/testdir/test55.ok 2012-08-29 16:51:15.000000000 +0200 +*************** +*** 115,117 **** +--- 115,123 ---- + {'a': {'b': 'B'}} + Vim(call):E737: a + {'a': {'b': 'B'}} ++ Vim(foldopen):E490: ++ ++ ++ Error detected while processing : ++ E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry ++ +*** ../vim-7.3.644/src/version.c 2012-08-29 16:34:23.000000000 +0200 +--- src/version.c 2012-08-29 16:37:20.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 645, + /**/ + +-- +TALL KNIGHT OF NI: Ni! + "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 /// From 78bfc2ab393e0c3da3638f5f372fe4e80da14466 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:50 +0200 Subject: [PATCH 08/46] - patchlevel 646 --- 7.3.646 | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 7.3.646 diff --git a/7.3.646 b/7.3.646 new file mode 100644 index 00000000..3e507a79 --- /dev/null +++ b/7.3.646 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.646 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.646 +Problem: When reloading a buffer the undo file becomes unusable unless ":w" + is executed. (Dmitri Frank) +Solution: After reloading the buffer write the undo file. (Christian + Brabandt) +Files: src/fileio.c + + +*** ../vim-7.3.645/src/fileio.c 2012-07-10 17:14:50.000000000 +0200 +--- src/fileio.c 2012-08-29 18:19:44.000000000 +0200 +*************** +*** 7060,7067 **** +--- 7060,7082 ---- + } + + if (reload) ++ { + /* Reload the buffer. */ + buf_reload(buf, orig_mode); ++ #ifdef FEAT_PERSISTENT_UNDO ++ if (buf->b_p_udf && buf->b_ffname != NULL) ++ { ++ char_u hash[UNDO_HASH_SIZE]; ++ buf_T *save_curbuf = curbuf; ++ ++ /* Any existing undo file is unusable, write it now. */ ++ curbuf = buf; ++ u_compute_hash(hash); ++ u_write_undo(NULL, FALSE, buf, hash); ++ curbuf = save_curbuf; ++ } ++ #endif ++ } + + #ifdef FEAT_AUTOCMD + /* Trigger FileChangedShell when the file was changed in any way. */ +*** ../vim-7.3.645/src/version.c 2012-08-29 16:55:09.000000000 +0200 +--- src/version.c 2012-08-29 18:21:07.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 646, + /**/ + +-- + An extraordinary TALL KNIGHT in all black (possibly John with Mike on his + shoulders) walks out from the dark trees. He is extremely fierce and + gruesome countenance. He walks towards KING ARTHUR and PATSY, who are + wazzing like mad. (Salopian slang, meaning very scared. almost to the + point of wetting oneself, e.g. before an important football match or + prior to a postering. Salopian slang meaning a beating by the school + praeposters. Sorry about the Salopian slant to this stage direction - Ed.) + "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 /// From 124d85309fad82f6227b0d09c35a5676541d0ff1 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:52 +0200 Subject: [PATCH 09/46] - patchlevel 647 --- 7.3.647 | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 7.3.647 diff --git a/7.3.647 b/7.3.647 new file mode 100644 index 00000000..d1c524f8 --- /dev/null +++ b/7.3.647 @@ -0,0 +1,178 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.647 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.647 +Problem: "gnd" doesn't work correctly in Visual mode. +Solution: Handle Visual mode differently in "gn". (Christian Brabandt) +Files: src/search.c, src/testdir/test53.in, src/testdir/test53.ok + + +*** ../vim-7.3.646/src/search.c 2012-08-23 15:53:00.000000000 +0200 +--- src/search.c 2012-09-05 12:11:58.000000000 +0200 +*************** +*** 4545,4551 **** + int dir; + int result; /* result of various function calls */ + char_u old_p_ws = p_ws; +- int visual_active = FALSE; + int flags = 0; + pos_T save_VIsual; + int zerowidth = FALSE; +--- 4545,4550 ---- +*************** +*** 4561,4571 **** + { + orig_pos = curwin->w_cursor; + save_VIsual = VIsual; +- visual_active = TRUE; +- +- /* just started visual selection, only one character */ +- if (equalpos(VIsual, curwin->w_cursor)) +- visual_active = FALSE; + + pos = curwin->w_cursor; + start_pos = VIsual; +--- 4560,4565 ---- +*************** +*** 4619,4625 **** + p_ws = old_p_ws; + return FAIL; + } +! else if (!i && !result && !visual_active) + { + if (forward) /* try again from start of buffer */ + { +--- 4613,4619 ---- + p_ws = old_p_ws; + return FAIL; + } +! else if (!i && !result) + { + if (forward) /* try again from start of buffer */ + { +*************** +*** 4691,4697 **** + regmmatch_T regmatch; + int nmatched = 0; + int result = -1; +! pos_T pos; + + if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH, + SEARCH_KEEP, ®match) == FAIL) +--- 4685,4692 ---- + regmmatch_T regmatch; + int nmatched = 0; + int result = -1; +! pos_T pos; +! int save_called_emsg = called_emsg; + + if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH, + SEARCH_KEEP, ®match) == FAIL) +*************** +*** 4704,4718 **** + { + /* Zero-width pattern should match somewhere, then we can check if + * start and end are in the same position. */ + nmatched = vim_regexec_multi(®match, curwin, curbuf, + pos.lnum, (colnr_T)0, NULL); + + if (!called_emsg) + result = (nmatched != 0 +! && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum +! && regmatch.startpos[0].col == regmatch.endpos[0].col); + } + + vim_free(regmatch.regprog); + return result; + } +--- 4699,4715 ---- + { + /* Zero-width pattern should match somewhere, then we can check if + * start and end are in the same position. */ ++ called_emsg = FALSE; + nmatched = vim_regexec_multi(®match, curwin, curbuf, + pos.lnum, (colnr_T)0, NULL); + + if (!called_emsg) + result = (nmatched != 0 +! && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum +! && regmatch.startpos[0].col == regmatch.endpos[0].col); + } + ++ called_emsg |= save_called_emsg; + vim_free(regmatch.regprog); + return result; + } +*** ../vim-7.3.646/src/testdir/test53.in 2012-08-29 16:55:09.000000000 +0200 +--- src/testdir/test53.in 2012-09-05 12:12:03.000000000 +0200 +*************** +*** 40,46 **** + /\>\zs + 0gnd/^ + gnd$h/\zs +! gnd + :/^start:/,/^end:/wq! test.out + ENDTEST + +--- 40,47 ---- + /\>\zs + 0gnd/^ + gnd$h/\zs +! gnd/[u]niquepattern/s +! vlgnd + :/^start:/,/^end:/wq! test.out + ENDTEST + +*************** +*** 67,70 **** +--- 68,72 ---- + lines + zero width pattern + delete first and last chars ++ uniquepattern uniquepattern + end: +*** ../vim-7.3.646/src/testdir/test53.ok 2012-08-29 16:55:09.000000000 +0200 +--- src/testdir/test53.ok 2012-09-05 12:12:08.000000000 +0200 +*************** +*** 24,27 **** +--- 24,28 ---- + join lines + zerowidth pattern + elete first and last char ++ uniquepattern + end: +*** ../vim-7.3.646/src/version.c 2012-08-29 18:50:50.000000000 +0200 +--- src/version.c 2012-09-05 12:13:37.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 647, + /**/ + +-- + ** Hello and Welcome to the Psychiatric Hotline ** +If you are obsessive-compulsive, please press 1 repeatedly. +If you are co-dependent, please ask someone to press 2. +If you have multiple personalities, please press 3, 4, 5 and 6. +If you are paranoid-delusional, we know who you are and what you want + - just stay on the line so we can trace the call. +If you are schizophrenic, listen carefully and a little voice will + tell you which number to press next. +If you are manic-depressive, it doesn't matter which number you press + - no one will answer. +If you suffer from panic attacks, push every button you can find. +If you are sane, please hold on - we have the rest of humanity on the + other line and they desparately want to ask you a few questions. + + /// 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 /// From 80d3d2b2b844cb92b2785e7a61fb04d3b700f1e0 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:53 +0200 Subject: [PATCH 10/46] - patchlevel 648 --- 7.3.648 | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 7.3.648 diff --git a/7.3.648 b/7.3.648 new file mode 100644 index 00000000..f51d99d6 --- /dev/null +++ b/7.3.648 @@ -0,0 +1,131 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.648 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.648 +Problem: Crash when using a very long file name. (ZyX) +Solution: Properly check length of buffer space. +Files: src/buffer.c + + +*** ../vim-7.3.647/src/buffer.c 2012-07-16 17:31:48.000000000 +0200 +--- src/buffer.c 2012-09-05 13:17:38.000000000 +0200 +*************** +*** 3234,3245 **** + { + /* format: "fname + (path) (1 of 2) - VIM" */ + + if (curbuf->b_fname == NULL) +! vim_strncpy(buf, (char_u *)_("[No Name]"), IOSIZE - 100); + else + { + p = transstr(gettail(curbuf->b_fname)); +! vim_strncpy(buf, p, IOSIZE - 100); + vim_free(p); + } + +--- 3234,3248 ---- + { + /* format: "fname + (path) (1 of 2) - VIM" */ + ++ #define SPACE_FOR_FNAME (IOSIZE - 100) ++ #define SPACE_FOR_DIR (IOSIZE - 20) ++ #define SPACE_FOR_ARGNR (IOSIZE - 10) /* at least room for " - VIM" */ + if (curbuf->b_fname == NULL) +! vim_strncpy(buf, (char_u *)_("[No Name]"), SPACE_FOR_FNAME); + else + { + p = transstr(gettail(curbuf->b_fname)); +! vim_strncpy(buf, p, SPACE_FOR_FNAME); + vim_free(p); + } + +*************** +*** 3263,3269 **** + buf[off++] = ' '; + buf[off++] = '('; + home_replace(curbuf, curbuf->b_ffname, +! buf + off, IOSIZE - off, TRUE); + #ifdef BACKSLASH_IN_FILENAME + /* avoid "c:/name" to be reduced to "c" */ + if (isalpha(buf[off]) && buf[off + 1] == ':') +--- 3266,3272 ---- + buf[off++] = ' '; + buf[off++] = '('; + home_replace(curbuf, curbuf->b_ffname, +! buf + off, SPACE_FOR_DIR - off, TRUE); + #ifdef BACKSLASH_IN_FILENAME + /* avoid "c:/name" to be reduced to "c" */ + if (isalpha(buf[off]) && buf[off + 1] == ':') +*************** +*** 3274,3291 **** + if (p == buf + off) + /* must be a help buffer */ + vim_strncpy(buf + off, (char_u *)_("help"), +! (size_t)(IOSIZE - off - 1)); + else + *p = NUL; + +! /* translate unprintable chars */ +! p = transstr(buf + off); +! vim_strncpy(buf + off, p, (size_t)(IOSIZE - off - 1)); +! vim_free(p); + STRCAT(buf, ")"); + } + +! append_arg_number(curwin, buf, IOSIZE, FALSE); + + #if defined(FEAT_CLIENTSERVER) + if (serverName != NULL) +--- 3277,3304 ---- + if (p == buf + off) + /* must be a help buffer */ + vim_strncpy(buf + off, (char_u *)_("help"), +! (size_t)(SPACE_FOR_DIR - off - 1)); + else + *p = NUL; + +! /* Translate unprintable chars and concatenate. Keep some +! * room for the server name. When there is no room (very long +! * file name) use (...). */ +! if (off < SPACE_FOR_DIR) +! { +! p = transstr(buf + off); +! vim_strncpy(buf + off, p, (size_t)(SPACE_FOR_DIR - off)); +! vim_free(p); +! } +! else +! { +! vim_strncpy(buf + off, (char_u *)"...", +! (size_t)(SPACE_FOR_ARGNR - off)); +! } + STRCAT(buf, ")"); + } + +! append_arg_number(curwin, buf, SPACE_FOR_ARGNR, FALSE); + + #if defined(FEAT_CLIENTSERVER) + if (serverName != NULL) +*** ../vim-7.3.647/src/version.c 2012-09-05 12:16:40.000000000 +0200 +--- src/version.c 2012-09-05 13:29:53.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 648, + /**/ + +-- +Q: How does a UNIX Guru do Sex ? +A: unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep + + /// 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 /// From 3b1accda94edfa004edd38e05190d48d9ffbf793 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:54 +0200 Subject: [PATCH 11/46] - patchlevel 649 --- 7.3.649 | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 7.3.649 diff --git a/7.3.649 b/7.3.649 new file mode 100644 index 00000000..50c7ce81 --- /dev/null +++ b/7.3.649 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.649 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.649 +Problem: When 'clipboard' is set to "unnamed" small deletes end up in the + numbered registers. (Ingo Karkat) +Solution: Use the original register name to decide whether to put a delete + in a numbered register. (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.3.648/src/ops.c 2012-08-08 18:01:00.000000000 +0200 +--- src/ops.c 2012-09-05 14:13:32.000000000 +0200 +*************** +*** 1623,1628 **** +--- 1623,1629 ---- + #endif + linenr_T old_lcount = curbuf->b_ml.ml_line_count; + int did_yank = FALSE; ++ int orig_regname = oap->regname; + + if (curbuf->b_ml.ml_flags & ML_EMPTY) /* nothing to do */ + return OK; +*************** +*** 1715,1722 **** + /* + * Put deleted text into register 1 and shift number registers if the + * delete contains a line break, or when a regname has been specified. + */ +! if (oap->regname != 0 || oap->motion_type == MLINE + || oap->line_count > 1 || oap->use_reg_one) + { + y_current = &y_regs[9]; +--- 1716,1725 ---- + /* + * Put deleted text into register 1 and shift number registers if the + * delete contains a line break, or when a regname has been specified. ++ * Use the register name from before adjust_clip_reg() may have ++ * changed it. + */ +! if (orig_regname != 0 || oap->motion_type == MLINE + || oap->line_count > 1 || oap->use_reg_one) + { + y_current = &y_regs[9]; +*** ../vim-7.3.648/src/version.c 2012-09-05 13:30:22.000000000 +0200 +--- src/version.c 2012-09-05 14:17:55.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 649, + /**/ + +-- +'I generally avoid temptation unless I can't resist it." + -- Mae West + + /// 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 /// From ac867048b81b7b489d67845495c97b862497460f Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:56 +0200 Subject: [PATCH 12/46] - patchlevel 650 --- 7.3.650 | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 7.3.650 diff --git a/7.3.650 b/7.3.650 new file mode 100644 index 00000000..0937c126 --- /dev/null +++ b/7.3.650 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.650 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.650 +Problem: Completion after ":help \{-" gives an error message and messes up + the command line. +Solution: Cancel the tag search if the pattern can't be compiled. (Yasuhiro + Matsumoto) +Files: src/tag.c + + +*** ../vim-7.3.649/src/tag.c 2012-01-10 22:26:12.000000000 +0100 +--- src/tag.c 2012-09-05 14:56:52.000000000 +0200 +*************** +*** 1443,1448 **** +--- 1443,1450 ---- + orgpat.len = p_tl; + + prepare_pats(&orgpat, has_re); ++ if (has_re && orgpat.regmatch.regprog == NULL) ++ goto findtag_end; + + #ifdef FEAT_TAG_BINS + /* This is only to avoid a compiler warning for using search_info +*** ../vim-7.3.649/src/version.c 2012-09-05 14:18:42.000000000 +0200 +--- src/version.c 2012-09-05 15:01:07.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 650, + /**/ + +-- +GUARD #1: What, ridden on a horse? +ARTHUR: Yes! +GUARD #1: You're using coconuts! +ARTHUR: What? +GUARD #1: You've got two empty halves of coconut and you're bangin' 'em + together. + The Quest for the Holy Grail (Monty Python) + + /// 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 /// From 178c7e1e299a287395d0c4df42ae79e93b90a133 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:57 +0200 Subject: [PATCH 13/46] - patchlevel 651 --- 7.3.651 | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 7.3.651 diff --git a/7.3.651 b/7.3.651 new file mode 100644 index 00000000..0a724246 --- /dev/null +++ b/7.3.651 @@ -0,0 +1,99 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.651 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.651 +Problem: Completion after ":help \{-" gives an error message. +Solution: Prepend a backslash. +Files: src/ex_cmds.c + + +*** ../vim-7.3.650/src/ex_cmds.c 2012-08-08 16:50:40.000000000 +0200 +--- src/ex_cmds.c 2012-09-05 15:10:13.000000000 +0200 +*************** +*** 4851,4857 **** + #ifdef FEAT_EVAL + if (do_count) + { +! /* prevent accidently changing the buffer by a function */ + save_ma = curbuf->b_p_ma; + curbuf->b_p_ma = FALSE; + sandbox++; +--- 4851,4857 ---- + #ifdef FEAT_EVAL + if (do_count) + { +! /* prevent accidentally changing the buffer by a function */ + save_ma = curbuf->b_p_ma; + curbuf->b_p_ma = FALSE; + sandbox++; +*************** +*** 5264,5270 **** + * is assumed to be 'p' if missing. + * + * This is implemented in two passes: first we scan the file for the pattern and +! * set a mark for each line that (not) matches. secondly we execute the command + * for each line that has a mark. This is required because after deleting + * lines we do not know where to search for the next match. + */ +--- 5264,5270 ---- + * is assumed to be 'p' if missing. + * + * This is implemented in two passes: first we scan the file for the pattern and +! * set a mark for each line that (not) matches. Secondly we execute the command + * for each line that has a mark. This is required because after deleting + * lines we do not know where to search for the next match. + */ +*************** +*** 5896,5904 **** + } + else + { +! /* replace "[:...:]" with "\[:...:]"; "[+...]" with "\[++...]" */ +! if (arg[0] == '[' && (arg[1] == ':' +! || (arg[1] == '+' && arg[2] == '+'))) + *d++ = '\\'; + + for (s = arg; *s; ++s) +--- 5896,5909 ---- + } + else + { +! /* Replace: +! * "[:...:]" with "\[:...:]" +! * "[++...]" with "\[++...]" +! * "\{" with "\\{" +! */ +! if ((arg[0] == '[' && (arg[1] == ':' +! || (arg[1] == '+' && arg[2] == '+'))) +! || (arg[0] == '\\' && arg[1] == '{')) + *d++ = '\\'; + + for (s = arg; *s; ++s) +*** ../vim-7.3.650/src/version.c 2012-09-05 15:03:27.000000000 +0200 +--- src/version.c 2012-09-05 15:12:51.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 651, + /**/ + +-- +GUARD #1: Where'd you get the coconut? +ARTHUR: We found them. +GUARD #1: Found them? In Mercea? The coconut's tropical! +ARTHUR: What do you mean? +GUARD #1: Well, this is a temperate zone. + The Quest for the Holy Grail (Monty Python) + + /// 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 /// From 2f1ae71d7c6788a251af977500559cc0bbd5c91a Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:58 +0200 Subject: [PATCH 14/46] - patchlevel 652 --- 7.3.652 | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 7.3.652 diff --git a/7.3.652 b/7.3.652 new file mode 100644 index 00000000..e05a9dad --- /dev/null +++ b/7.3.652 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.652 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.652 +Problem: Workaround for Python crash isn't perfect. +Solution: Change the type of the length argument. (Sean Estabrooks) +Files: src/if_py_both.h + + +*** ../vim-7.3.651/src/if_py_both.h 2012-08-08 16:05:03.000000000 +0200 +--- src/if_py_both.h 2012-09-05 17:15:31.000000000 +0200 +*************** +*** 74,91 **** + static PyObject * + OutputWrite(PyObject *self, PyObject *args) + { +! int len; + char *str = NULL; + int error = ((OutputObject *)(self))->error; + + if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len)) + return NULL; + +- /* TODO: This works around a gcc optimizer problem and avoids Vim +- * from crashing. Should find a real solution. */ +- if (str == NULL) +- return NULL; +- + Py_BEGIN_ALLOW_THREADS + Python_Lock_Vim(); + writer((writefn)(error ? emsg : msg), (char_u *)str, len); +--- 74,86 ---- + static PyObject * + OutputWrite(PyObject *self, PyObject *args) + { +! Py_ssize_t len; + char *str = NULL; + int error = ((OutputObject *)(self))->error; + + if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len)) + return NULL; + + Py_BEGIN_ALLOW_THREADS + Python_Lock_Vim(); + writer((writefn)(error ? emsg : msg), (char_u *)str, len); +*** ../vim-7.3.651/src/version.c 2012-09-05 15:15:01.000000000 +0200 +--- src/version.c 2012-09-05 17:27:46.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 652, + /**/ + +-- +GUARD #2: It could be carried by an African swallow! +GUARD #1: Oh, yeah, an African swallow maybe, but not a European swallow, + that's my point. +GUARD #2: Oh, yeah, I agree with that... + The Quest for the Holy Grail (Monty Python) + + /// 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 /// From cf60b7952ce144f72fe599e6d1ec19f97d078dfb Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:35:59 +0200 Subject: [PATCH 15/46] - patchlevel 653 --- 7.3.653 | 280 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100644 7.3.653 diff --git a/7.3.653 b/7.3.653 new file mode 100644 index 00000000..7a0691e2 --- /dev/null +++ b/7.3.653 @@ -0,0 +1,280 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.653 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.653 +Problem: MingW needs build rule for included XPM files. Object directory + for 32 and 64 builds is the same, also for MSVC. +Solution: Add MingW build rule to use included XPM files. Add the CPU or + architecture to the object directory name. (Sergey Khorev) +Files: src/Make_ming.mak, src/Make_mvc.mak, src/xpm/README.txt + + +*** ../vim-7.3.652/src/Make_ming.mak 2012-08-02 21:21:43.000000000 +0200 +--- src/Make_ming.mak 2012-09-05 17:43:11.000000000 +0200 +*************** +*** 1,14 **** +! # Makefile for VIM on Win32, using 'EGCS/mingw32 1.1.2'. + # Info at http://www.mingw.org +! # Also requires 'GNU make 3.77', which you can get through a link +! # to 'JanJaap's page from the above page. + # Get missing libraries from http://gnuwin32.sf.net. + # + # Tested on Win32 NT 4 and Win95. + # +! # To make everything, just 'make -f Make_ming.mak' +! # To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe' +! # After a run, you can 'make -f Make_ming.mak clean' to clean up + # + # NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think + # it's just run out of memory or something. Run again, and it will continue +--- 1,15 ---- +! # Makefile for VIM on Win32 +! # + # Info at http://www.mingw.org +! # Alternative x86 and 64-builds: http://mingw-w64.sourceforge.net +! # Also requires GNU make, which you can download from the same sites. + # Get missing libraries from http://gnuwin32.sf.net. + # + # Tested on Win32 NT 4 and Win95. + # +! # To make everything, just 'make -f Make_ming.mak'. +! # To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe'. +! # After a run, you can 'make -f Make_ming.mak clean' to clean up. + # + # NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think + # it's just run out of memory or something. Run again, and it will continue +*************** +*** 20,27 **** + # "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: + # http://www.matcode.com/mpress.htm + # +! # Maintained by Ron Aaron +! # updated 2003 Jan 20 + + #>>>>> choose options: + # set to yes for a debug build +--- 21,28 ---- + # "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: + # http://www.matcode.com/mpress.htm + # +! # Maintained by Ron Aaron et al. +! # Updated 2012 Sep 5. + + #>>>>> choose options: + # set to yes for a debug build +*************** +*** 31,62 **** + # set to yes to make gvim, no for vim + GUI=yes + # FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] +! # set to TINY to make minimal version (few features) + FEATURES=BIG +! # set to one of i386, i486, i586, i686 as the minimum target processor + ARCH=i386 +! # set to yes to cross-compile from unix; no=native Windows + CROSS=no +! # set to path to iconv.h and libiconv.a to enable using 'iconv.dll' + #ICONV="." + ICONV=yes + GETTEXT=yes +! # set to yes to include multibyte support + MBYTE=yes +! # set to yes to include IME support + IME=yes + DYNAMIC_IME=yes +! # set to yes to enable writing a postscript file with :hardcopy + POSTSCRIPT=no +! # set to yes to enable OLE support + OLE=no +! # Set the default $(WINVER) to make it work with pre-Win2k + ifndef WINVER + WINVER = 0x0500 + endif +! # Set to yes to enable Cscope support + CSCOPE=yes +! # Set to yes to enable Netbeans support + NETBEANS=$(GUI) + + +--- 32,64 ---- + # set to yes to make gvim, no for vim + GUI=yes + # FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] +! # Set to TINY to make minimal version (few features). + FEATURES=BIG +! # Set to one of i386, i486, i586, i686 as the minimum target processor. +! # For amd64/x64 architecture set ARCH=x86-64 . + ARCH=i386 +! # Set to yes to cross-compile from unix; no=native Windows. + CROSS=no +! # Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'. + #ICONV="." + ICONV=yes + GETTEXT=yes +! # Set to yes to include multibyte support. + MBYTE=yes +! # Set to yes to include IME support. + IME=yes + DYNAMIC_IME=yes +! # Set to yes to enable writing a postscript file with :hardcopy. + POSTSCRIPT=no +! # Set to yes to enable OLE support. + OLE=no +! # Set the default $(WINVER) to make it work with pre-Win2k. + ifndef WINVER + WINVER = 0x0500 + endif +! # Set to yes to enable Cscope support. + CSCOPE=yes +! # Set to yes to enable Netbeans support. + NETBEANS=$(GUI) + + +*************** +*** 431,441 **** + endif + endif + +- ifdef XPM + # Only allow XPM for a GUI build. + ifeq (yes, $(GUI)) +! CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include + endif + endif + + ifeq ($(DEBUG),yes) +--- 433,464 ---- + endif + endif + + # Only allow XPM for a GUI build. + ifeq (yes, $(GUI)) +! +! ifndef XPM +! ifeq ($(ARCH),i386) +! XPM = xpm/x86 +! endif +! ifeq ($(ARCH),i486) +! XPM = xpm/x86 +! endif +! ifeq ($(ARCH),i586) +! XPM = xpm/x86 +! endif +! ifeq ($(ARCH),i686) +! XPM = xpm/x86 + endif ++ ifeq ($(ARCH),x86-64) ++ XPM = xpm/x64 ++ endif ++ endif ++ ifdef XPM ++ ifneq ($(XPM),no) ++ CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include ++ endif ++ endif ++ + endif + + ifeq ($(DEBUG),yes) +*************** +*** 565,574 **** + DEFINES += $(DEF_GUI) + OBJ += $(GUIOBJ) + LFLAGS += -mwindows +! OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX) + else + TARGET := vim$(DEBUG_SUFFIX).exe +! OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX) + endif + + ifdef GETTEXT +--- 588,597 ---- + DEFINES += $(DEF_GUI) + OBJ += $(GUIOBJ) + LFLAGS += -mwindows +! OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) + else + TARGET := vim$(DEBUG_SUFFIX).exe +! OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) + endif + + ifdef GETTEXT +*** ../vim-7.3.652/src/Make_mvc.mak 2012-08-29 14:18:26.000000000 +0200 +--- src/Make_mvc.mak 2012-09-05 17:33:56.000000000 +0200 +*************** +*** 213,218 **** +--- 213,219 ---- + # We're on Windows 95 + CPU = i386 + !endif # !PROCESSOR_ARCHITECTURE ++ OBJDIR = $(OBJDIR)$(CPU) + + # Build a retail version by default + +*************** +*** 283,292 **** + + !ifndef XPM + # XPM is not set, use the included xpm files, depending on the architecture. +! !if ("$(CPU)" == "AMD64") || ("$(CPU)" == "IA64") + XPM = xpm\x64 +! !else + XPM = xpm\x86 + !endif + !endif + !if "$(XPM)" != "no" +--- 284,295 ---- + + !ifndef XPM + # XPM is not set, use the included xpm files, depending on the architecture. +! !if "$(CPU)" == "AMD64" + XPM = xpm\x64 +! !elseif "$(CPU)" == "i386" + XPM = xpm\x86 ++ !else ++ XPM = no + !endif + !endif + !if "$(XPM)" != "no" +*** ../vim-7.3.652/src/xpm/README.txt 2012-08-29 14:18:26.000000000 +0200 +--- src/xpm/README.txt 2012-09-05 17:35:34.000000000 +0200 +*************** +*** 10,15 **** +--- 10,18 ---- + MinGW: + mingw32-make -f Make_ming.mak GUI=yes CSCOPE=yes XPM=e:/hg/xpm/x86 + ++ MinGW 64 for x64: ++ mingw32-make -f Make_ming.mak GUI=yes ARCH=x86-64 XPM=E:\HG\xpm\x64 ++ + Microsoft Visual C++ on x64 (tested with versions 2008 and 2010): + nmake -f Make_mvc.mak GUI=yes CSCOPE=yes XPM=E:\HG\xpm\x64 + +*** ../vim-7.3.652/src/version.c 2012-09-05 17:28:08.000000000 +0200 +--- src/version.c 2012-09-05 17:53:15.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 653, + /**/ + +-- +GUARD #2: Wait a minute -- supposing two swallows carried it together? +GUARD #1: No, they'd have to have it on a line. +GUARD #2: Well, simple! They'd just use a standard creeper! +GUARD #1: What, held under the dorsal guiding feathers? +GUARD #2: Well, why not? + The Quest for the Holy Grail (Monty Python) + + /// 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 /// From 6a926c03e975064eea5a2acfcd6ce21d297cc328 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:01 +0200 Subject: [PATCH 16/46] - patchlevel 654 --- 7.3.654 | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 7.3.654 diff --git a/7.3.654 b/7.3.654 new file mode 100644 index 00000000..dca5aa7c --- /dev/null +++ b/7.3.654 @@ -0,0 +1,150 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.654 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.654 +Problem: When creating a Vim dictionary from Python objects an empty key + might be used. +Solution: Do not use empty keys, throw an IndexError. (ZyX) +Files: src/if_py_both.h + + +*** ../vim-7.3.653/src/if_py_both.h 2012-09-05 17:28:08.000000000 +0200 +--- src/if_py_both.h 2012-09-05 18:35:18.000000000 +0200 +*************** +*** 607,612 **** +--- 607,620 ---- + + static PyTypeObject DictionaryType; + ++ #define DICTKEY_GET_NOTEMPTY(err) \ ++ DICTKEY_GET(err) \ ++ if (*key == NUL) \ ++ { \ ++ PyErr_SetString(PyExc_ValueError, _("empty keys are not allowed")); \ ++ return err; \ ++ } ++ + typedef struct + { + PyObject_HEAD +*************** +*** 659,665 **** + if (valObject == NULL) + return -1; + +! DICTKEY_GET(-1) + + di = dictitem_alloc(key); + +--- 667,673 ---- + if (valObject == NULL) + return -1; + +! DICTKEY_GET_NOTEMPTY(-1) + + di = dictitem_alloc(key); + +*************** +*** 730,736 **** + return -1; + } + +! DICTKEY_GET(-1) + + valObject = PyTuple_GetItem(litem, 1); + if (valObject == NULL) +--- 738,744 ---- + return -1; + } + +! DICTKEY_GET_NOTEMPTY(-1) + + valObject = PyTuple_GetItem(litem, 1); + if (valObject == NULL) +*************** +*** 784,799 **** + DictionaryItem(PyObject *self, PyObject *keyObject) + { + char_u *key; +! dictitem_T *val; + DICTKEY_DECL + +! DICTKEY_GET(NULL) + +! val = dict_find(((DictionaryObject *) (self))->dict, key, -1); + + DICTKEY_UNREF + +! return ConvertToPyObject(&val->di_tv); + } + + static PyInt +--- 792,813 ---- + DictionaryItem(PyObject *self, PyObject *keyObject) + { + char_u *key; +! dictitem_T *di; + DICTKEY_DECL + +! DICTKEY_GET_NOTEMPTY(NULL) +! +! di = dict_find(((DictionaryObject *) (self))->dict, key, -1); + +! if (di == NULL) +! { +! PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); +! return NULL; +! } + + DICTKEY_UNREF + +! return ConvertToPyObject(&di->di_tv); + } + + static PyInt +*************** +*** 811,817 **** + return -1; + } + +! DICTKEY_GET(-1) + + di = dict_find(d, key, -1); + +--- 825,831 ---- + return -1; + } + +! DICTKEY_GET_NOTEMPTY(-1) + + di = dict_find(d, key, -1); + +*** ../vim-7.3.653/src/version.c 2012-09-05 17:57:34.000000000 +0200 +--- src/version.c 2012-09-05 18:38:43.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 654, + /**/ + +-- +MORTICIAN: What? +CUSTOMER: Nothing -- here's your nine pence. +DEAD PERSON: I'm not dead! +MORTICIAN: Here -- he says he's not dead! +CUSTOMER: Yes, he is. +DEAD PERSON: I'm not! + The Quest for the Holy Grail (Monty Python) + + /// 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 /// From 0de8951db5aea1a2b52750925b8d975f411868f5 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:03 +0200 Subject: [PATCH 17/46] - patchlevel 655 --- 7.3.655 | Bin 0 -> 88812 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 7.3.655 diff --git a/7.3.655 b/7.3.655 new file mode 100644 index 0000000000000000000000000000000000000000..fc656ebe7ed47a917e7aa665cdc510e9ecbaad1c GIT binary patch literal 88812 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 Hr?mbPJ+NJ@ literal 0 HcmV?d00001 From 4877c4baf1c5389503eaa985cd894a6f5d758c49 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:04 +0200 Subject: [PATCH 18/46] - patchlevel 656 --- 7.3.656 | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 7.3.656 diff --git a/7.3.656 b/7.3.656 new file mode 100644 index 00000000..a9d768b6 --- /dev/null +++ b/7.3.656 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.656 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.656 +Problem: Internal error in :pyeval. +Solution: Handle failed object conversion. (ZyX) +Files: src/if_python.c, src/if_python3.c + + +*** ../vim-7.3.655/src/if_python.c 2012-06-30 13:34:29.000000000 +0200 +--- src/if_python.c 2012-09-05 18:52:50.000000000 +0200 +*************** +*** 1025,1032 **** + + static PySequenceMethods BufferAsSeq = { + (PyInquiry) BufferLength, /* sq_length, len(x) */ +! (binaryfunc) 0, /* BufferConcat, */ /* sq_concat, x+y */ +! (PyIntArgFunc) 0, /* BufferRepeat, */ /* sq_repeat, x*n */ + (PyIntArgFunc) BufferItem, /* sq_item, x[i] */ + (PyIntIntArgFunc) BufferSlice, /* sq_slice, x[i:j] */ + (PyIntObjArgProc) BufferAssItem, /* sq_ass_item, x[i]=v */ +--- 1025,1032 ---- + + static PySequenceMethods BufferAsSeq = { + (PyInquiry) BufferLength, /* sq_length, len(x) */ +! (binaryfunc) 0, /* BufferConcat, sq_concat, x+y */ +! (PyIntArgFunc) 0, /* BufferRepeat, sq_repeat, x*n */ + (PyIntArgFunc) BufferItem, /* sq_item, x[i] */ + (PyIntIntArgFunc) BufferSlice, /* sq_slice, x[i:j] */ + (PyIntObjArgProc) BufferAssItem, /* sq_ass_item, x[i]=v */ +*************** +*** 1787,1792 **** +--- 1787,1796 ---- + case VAR_DICT: ++rettv->vval.v_dict->dv_refcount; break; + case VAR_LIST: ++rettv->vval.v_list->lv_refcount; break; + case VAR_FUNC: func_ref(rettv->vval.v_string); break; ++ case VAR_UNKNOWN: ++ rettv->v_type = VAR_NUMBER; ++ rettv->vval.v_number = 0; ++ break; + } + } + +*** ../vim-7.3.655/src/if_python3.c 2012-06-29 16:28:23.000000000 +0200 +--- src/if_python3.c 2012-09-05 18:52:50.000000000 +0200 +*************** +*** 1817,1822 **** +--- 1817,1826 ---- + case VAR_DICT: ++rettv->vval.v_dict->dv_refcount; break; + case VAR_LIST: ++rettv->vval.v_list->lv_refcount; break; + case VAR_FUNC: func_ref(rettv->vval.v_string); break; ++ case VAR_UNKNOWN: ++ rettv->v_type = VAR_NUMBER; ++ rettv->vval.v_number = 0; ++ break; + } + } + +*** ../vim-7.3.655/src/version.c 2012-09-05 18:48:22.000000000 +0200 +--- src/version.c 2012-09-05 18:53:20.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 656, + /**/ + +-- +DEAD PERSON: I'm getting better! +CUSTOMER: No, you're not -- you'll be stone dead in a moment. +MORTICIAN: Oh, I can't take him like that -- it's against regulations. + The Quest for the Holy Grail (Monty Python) + + /// 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 /// From 47ba3180f84755545459582eb1cc6ffab56e949d Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:06 +0200 Subject: [PATCH 19/46] - patchlevel 657 --- 7.3.657 | 195 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 7.3.657 diff --git a/7.3.657 b/7.3.657 new file mode 100644 index 00000000..158acbdc --- /dev/null +++ b/7.3.657 @@ -0,0 +1,195 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.657 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.657 +Problem: Python bindings silently truncate string values containing NUL. +Solution: Fail when a string contains NUL. (ZyX) +Files: src/if_python.c, src/if_python3.c + + +*** ../vim-7.3.656/src/if_python.c 2012-09-05 18:54:37.000000000 +0200 +--- src/if_python.c 2012-09-05 19:02:07.000000000 +0200 +*************** +*** 191,196 **** +--- 191,197 ---- + # define PyRun_SimpleString dll_PyRun_SimpleString + # define PyRun_String dll_PyRun_String + # define PyString_AsString dll_PyString_AsString ++ # define PyString_AsStringAndSize dll_PyString_AsStringAndSize + # define PyString_FromString dll_PyString_FromString + # define PyString_FromStringAndSize dll_PyString_FromStringAndSize + # define PyString_Size dll_PyString_Size +*************** +*** 288,293 **** +--- 289,295 ---- + static int(*dll_PyRun_SimpleString)(char *); + static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *); + static char*(*dll_PyString_AsString)(PyObject *); ++ static int(*dll_PyString_AsStringAndSize)(PyObject *, char **, int *); + static PyObject*(*dll_PyString_FromString)(const char *); + static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt); + static PyInt(*dll_PyString_Size)(PyObject *); +*************** +*** 406,411 **** +--- 408,414 ---- + {"PyRun_SimpleString", (PYTHON_PROC*)&dll_PyRun_SimpleString}, + {"PyRun_String", (PYTHON_PROC*)&dll_PyRun_String}, + {"PyString_AsString", (PYTHON_PROC*)&dll_PyString_AsString}, ++ {"PyString_AsStringAndSize", (PYTHON_PROC*)&dll_PyString_AsStringAndSize}, + {"PyString_FromString", (PYTHON_PROC*)&dll_PyString_FromString}, + {"PyString_FromStringAndSize", (PYTHON_PROC*)&dll_PyString_FromStringAndSize}, + {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size}, +*************** +*** 578,591 **** + static int initialised = 0; + #define PYINITIALISED initialised + +- /* Add conversion from PyInt? */ + #define DICTKEY_GET(err) \ + if (!PyString_Check(keyObject)) \ + { \ + PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \ + return err; \ + } \ +! key = (char_u *) PyString_AsString(keyObject); + #define DICTKEY_UNREF + #define DICTKEY_DECL + +--- 581,595 ---- + static int initialised = 0; + #define PYINITIALISED initialised + + #define DICTKEY_GET(err) \ + if (!PyString_Check(keyObject)) \ + { \ + PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \ + return err; \ + } \ +! if (PyString_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \ +! return err; +! + #define DICTKEY_UNREF + #define DICTKEY_DECL + +*** ../vim-7.3.656/src/if_python3.c 2012-09-05 18:54:37.000000000 +0200 +--- src/if_python3.c 2012-09-05 19:02:07.000000000 +0200 +*************** +*** 172,177 **** +--- 172,178 ---- + # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString + # undef PyBytes_AsString + # define PyBytes_AsString py3_PyBytes_AsString ++ # define PyBytes_AsStringAndSize py3_PyBytes_AsStringAndSize + # undef PyBytes_FromString + # define PyBytes_FromString py3_PyBytes_FromString + # define PyFloat_FromDouble py3_PyFloat_FromDouble +*************** +*** 273,278 **** +--- 274,280 ---- + static char* (*py3__PyUnicode_AsString)(PyObject *unicode); + static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors); + static char* (*py3_PyBytes_AsString)(PyObject *bytes); ++ static int (*py3_PyBytes_AsStringAndSize)(PyObject *bytes, char **buffer, int *length); + static PyObject* (*py3_PyBytes_FromString)(char *str); + static PyObject* (*py3_PyFloat_FromDouble)(double num); + static double (*py3_PyFloat_AsDouble)(PyObject *); +*************** +*** 379,384 **** +--- 381,387 ---- + {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, + {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, + {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, ++ {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize}, + {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString}, + {"PyFloat_FromDouble", (PYTHON_PROC*)&py3_PyFloat_FromDouble}, + {"PyFloat_AsDouble", (PYTHON_PROC*)&py3_PyFloat_AsDouble}, +*************** +*** 544,560 **** + + #define PYINITIALISED py3initialised + +! /* Add conversion from PyInt? */ + #define DICTKEY_GET(err) \ + if (PyBytes_Check(keyObject)) \ +! key = (char_u *) PyBytes_AsString(keyObject); \ + else if (PyUnicode_Check(keyObject)) \ + { \ + bytes = PyString_AsBytes(keyObject); \ + if (bytes == NULL) \ + return err; \ +! key = (char_u *) PyBytes_AsString(bytes); \ +! if (key == NULL) \ + return err; \ + } \ + else \ +--- 547,566 ---- + + #define PYINITIALISED py3initialised + +! #define DICTKEY_DECL PyObject *bytes = NULL; +! + #define DICTKEY_GET(err) \ + if (PyBytes_Check(keyObject)) \ +! { \ +! if (PyBytes_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \ +! return err; \ +! } \ + else if (PyUnicode_Check(keyObject)) \ + { \ + bytes = PyString_AsBytes(keyObject); \ + if (bytes == NULL) \ + return err; \ +! if (PyBytes_AsStringAndSize(bytes, (char **) &key, NULL) == -1) \ + return err; \ + } \ + else \ +*************** +*** 562,573 **** + PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \ + return err; \ + } + #define DICTKEY_UNREF \ + if (bytes != NULL) \ + Py_XDECREF(bytes); + +- #define DICTKEY_DECL PyObject *bytes = NULL; +- + /* + * Include the code shared with if_python.c + */ +--- 568,578 ---- + PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \ + return err; \ + } ++ + #define DICTKEY_UNREF \ + if (bytes != NULL) \ + Py_XDECREF(bytes); + + /* + * Include the code shared with if_python.c + */ +*** ../vim-7.3.656/src/version.c 2012-09-05 18:54:37.000000000 +0200 +--- src/version.c 2012-09-05 19:03:03.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 657, + /**/ + +-- +Have you heard about the new Barbie doll? It's called Divorce +Barbie. It comes with all of Ken's stuff. + + /// 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 /// From 9b20d1e8263447bbef97ba3fec7afaa13ded97f9 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:08 +0200 Subject: [PATCH 20/46] - patchlevel 658 --- 7.3.658 | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 7.3.658 diff --git a/7.3.658 b/7.3.658 new file mode 100644 index 00000000..eeec4687 --- /dev/null +++ b/7.3.658 @@ -0,0 +1,159 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.658 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.658 +Problem: NUL bytes truncate strings when converted from Python. +Solution: Handle truncation as an error. (ZyX) +Files: src/if_py_both.h, src/if_python3.c + + +*** ../vim-7.3.657/src/if_py_both.h 2012-09-05 18:45:24.000000000 +0200 +--- src/if_py_both.h 2012-09-05 19:05:27.000000000 +0200 +*************** +*** 2530,2537 **** + #if PY_MAJOR_VERSION >= 3 + else if (PyBytes_Check(obj)) + { +! char_u *result = (char_u *) PyBytes_AsString(obj); + + if (result == NULL) + return -1; + +--- 2530,2539 ---- + #if PY_MAJOR_VERSION >= 3 + else if (PyBytes_Check(obj)) + { +! char_u *result; + ++ if (PyString_AsStringAndSize(obj, (char **) &result, NULL) == -1) ++ return -1; + if (result == NULL) + return -1; + +*************** +*** 2549,2555 **** + if (bytes == NULL) + return -1; + +! result = (char_u *) PyBytes_AsString(bytes); + if (result == NULL) + return -1; + +--- 2551,2558 ---- + if (bytes == NULL) + return -1; + +! if(PyString_AsStringAndSize(bytes, (char **) &result, NULL) == -1) +! return -1; + if (result == NULL) + return -1; + +*************** +*** 2572,2578 **** + if (bytes == NULL) + return -1; + +! result=(char_u *) PyString_AsString(bytes); + if (result == NULL) + return -1; + +--- 2575,2582 ---- + if (bytes == NULL) + return -1; + +! if(PyString_AsStringAndSize(bytes, (char **) &result, NULL) == -1) +! return -1; + if (result == NULL) + return -1; + +*************** +*** 2587,2594 **** + } + else if (PyString_Check(obj)) + { +! char_u *result = (char_u *) PyString_AsString(obj); + + if (result == NULL) + return -1; + +--- 2591,2600 ---- + } + else if (PyString_Check(obj)) + { +! char_u *result; + ++ if(PyString_AsStringAndSize(obj, (char **) &result, NULL) == -1) ++ return -1; + if (result == NULL) + return -1; + +*** ../vim-7.3.657/src/if_python3.c 2012-09-05 19:03:51.000000000 +0200 +--- src/if_python3.c 2012-09-05 19:05:27.000000000 +0200 +*************** +*** 85,90 **** +--- 85,91 ---- + #define PyString_AsString(obj) PyBytes_AsString(obj) + #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) + #define PyString_FromString(repr) PyUnicode_FromString(repr) ++ #define PyString_AsStringAndSize(obj, buffer, len) PyBytes_AsStringAndSize(obj, buffer, len) + + #if defined(DYNAMIC_PYTHON3) || defined(PROTO) + +*************** +*** 552,558 **** + #define DICTKEY_GET(err) \ + if (PyBytes_Check(keyObject)) \ + { \ +! if (PyBytes_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \ + return err; \ + } \ + else if (PyUnicode_Check(keyObject)) \ +--- 553,559 ---- + #define DICTKEY_GET(err) \ + if (PyBytes_Check(keyObject)) \ + { \ +! if (PyString_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \ + return err; \ + } \ + else if (PyUnicode_Check(keyObject)) \ +*************** +*** 560,566 **** + bytes = PyString_AsBytes(keyObject); \ + if (bytes == NULL) \ + return err; \ +! if (PyBytes_AsStringAndSize(bytes, (char **) &key, NULL) == -1) \ + return err; \ + } \ + else \ +--- 561,567 ---- + bytes = PyString_AsBytes(keyObject); \ + if (bytes == NULL) \ + return err; \ +! if (PyString_AsStringAndSize(bytes, (char **) &key, NULL) == -1) \ + return err; \ + } \ + else \ +*** ../vim-7.3.657/src/version.c 2012-09-05 19:03:51.000000000 +0200 +--- src/version.c 2012-09-05 19:07:40.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 658, + /**/ + +-- +You know you use Vim too much when you have this alias in your +~/.bashrc file: alias :e=/bin/vim (Eljay Love-Jensen) + + /// 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 /// From fe41c018b6a71ec2516b4284e3596eecd8bee2c4 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:09 +0200 Subject: [PATCH 21/46] - patchlevel 659 --- 7.3.659 | 295 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100644 7.3.659 diff --git a/7.3.659 b/7.3.659 new file mode 100644 index 00000000..2a30e67c --- /dev/null +++ b/7.3.659 @@ -0,0 +1,295 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.659 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.659 +Problem: Recent Python changes are not tested. +Solution: Add tests for Python bindings. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + + +*** ../vim-7.3.658/src/testdir/test86.in 2012-06-29 12:54:32.000000000 +0200 +--- src/testdir/test86.in 2012-09-05 19:11:36.000000000 +0200 +*************** +*** 176,203 **** + :else + : $put ='[0.0, 0.0]' + :endif + :" + :" pyeval() + :let l=pyeval('range(3)') + :$put =string(l) + :let d=pyeval('{"a": "b", "c": 1, "d": ["e"]}') + :$put =sort(items(d)) +- :try +- : let undef=pyeval('undefined_name') +- :catch +- : $put =v:exception[:13] +- :endtry +- :try +- : let vim=pyeval('vim') +- :catch +- : $put =v:exception[:13] +- :endtry + :if has('float') + : let f=pyeval('0.0') + : $put =string(f) + :else + : $put ='0.0' + :endif + :endfun + :" + :call Test() +--- 176,237 ---- + :else + : $put ='[0.0, 0.0]' + :endif ++ :let messages=[] ++ :py < Date: Fri, 5 Oct 2012 00:36:10 +0200 Subject: [PATCH 22/46] - patchlevel 660 --- 7.3.660 | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 7.3.660 diff --git a/7.3.660 b/7.3.660 new file mode 100644 index 00000000..9c54170b --- /dev/null +++ b/7.3.660 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.660 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.660 +Problem: ":help !" jumps to help for ":!". +Solution: Adjust check for tag header line. (Andy Wokula) +Files: src/tag.c + + +*** ../vim-7.3.659/src/tag.c 2012-09-05 15:03:27.000000000 +0200 +--- src/tag.c 2012-09-12 18:10:01.000000000 +0200 +*************** +*** 1797,1803 **** + */ + if (state == TS_START) + { +! if (STRNCMP(lbuf, "!_TAG_", 6) <= 0) + { + /* + * Read header line. +--- 1797,1803 ---- + */ + if (state == TS_START) + { +! if (STRNCMP(lbuf, "!_TAG_", 6) == 0) + { + /* + * Read header line. +*** ../vim-7.3.659/src/version.c 2012-09-05 19:17:37.000000000 +0200 +--- src/version.c 2012-09-12 18:18:30.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 660, + /**/ + +-- +Q: How does a UNIX Guru pick up a girl? +A: look; grep; which; eval; nice; uname; talk; date; + + /// 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 /// From 2d4727e894eed03a7ff97a662cec0e4dd7d725c4 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:12 +0200 Subject: [PATCH 23/46] - patchlevel 661 --- 7.3.661 | 160 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 7.3.661 diff --git a/7.3.661 b/7.3.661 new file mode 100644 index 00000000..3193e016 --- /dev/null +++ b/7.3.661 @@ -0,0 +1,160 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.661 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.661 (after 7.3.652) +Problem: SEGV in Python code. +Solution: Initialize len to zero. Use the right function depending on + version. (Maxim Philippov) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + + +*** ../vim-7.3.660/src/if_py_both.h 2012-09-05 19:09:06.000000000 +0200 +--- src/if_py_both.h 2012-09-12 19:50:07.000000000 +0200 +*************** +*** 74,80 **** + static PyObject * + OutputWrite(PyObject *self, PyObject *args) + { +! Py_ssize_t len; + char *str = NULL; + int error = ((OutputObject *)(self))->error; + +--- 74,80 ---- + static PyObject * + OutputWrite(PyObject *self, PyObject *args) + { +! Py_ssize_t len = 0; + char *str = NULL; + int error = ((OutputObject *)(self))->error; + +*** ../vim-7.3.660/src/if_python.c 2012-09-05 19:03:51.000000000 +0200 +--- src/if_python.c 2012-09-12 19:52:10.000000000 +0200 +*************** +*** 44,51 **** + # undef _XOPEN_SOURCE /* pyconfig.h defines it as well. */ + #endif + +- #define PY_SSIZE_T_CLEAN +- + #include + #if defined(MACOS) && !defined(MACOS_X_UNIX) + # include "macglue.h" +--- 44,49 ---- +*************** +*** 54,59 **** +--- 52,61 ---- + #undef main /* Defined in python.h - aargh */ + #undef HAVE_FCNTL_H /* Clash with os_win32.h */ + ++ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 ++ # define PY_SSIZE_T_CLEAN ++ #endif ++ + static void init_structs(void); + + #define PyBytes_FromString PyString_FromString +*************** +*** 358,365 **** +--- 360,374 ---- + PYTHON_PROC *ptr; + } python_funcname_table[] = + { ++ #ifndef PY_SSIZE_T_CLEAN + {"PyArg_Parse", (PYTHON_PROC*)&dll_PyArg_Parse}, + {"PyArg_ParseTuple", (PYTHON_PROC*)&dll_PyArg_ParseTuple}, ++ {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue}, ++ #else ++ {"_PyArg_Parse_SizeT", (PYTHON_PROC*)&dll_PyArg_Parse}, ++ {"_PyArg_ParseTuple_SizeT", (PYTHON_PROC*)&dll_PyArg_ParseTuple}, ++ {"_Py_BuildValue_SizeT", (PYTHON_PROC*)&dll_Py_BuildValue}, ++ #endif + {"PyMem_Free", (PYTHON_PROC*)&dll_PyMem_Free}, + {"PyMem_Malloc", (PYTHON_PROC*)&dll_PyMem_Malloc}, + {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString}, +*************** +*** 422,428 **** + {"PySys_SetArgv", (PYTHON_PROC*)&dll_PySys_SetArgv}, + {"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type}, + {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready}, +- {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue}, + {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod}, + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 \ + && SIZEOF_SIZE_T != SIZEOF_INT +--- 431,436 ---- +*** ../vim-7.3.660/src/if_python3.c 2012-09-05 19:09:06.000000000 +0200 +--- src/if_python3.c 2012-09-12 19:52:10.000000000 +0200 +*************** +*** 42,49 **** + # undef _DEBUG + #endif + +- #define PY_SSIZE_T_CLEAN +- + #ifdef F_BLANK + # undef F_BLANK + #endif +--- 42,47 ---- +*************** +*** 66,71 **** +--- 64,73 ---- + #undef main /* Defined in python.h - aargh */ + #undef HAVE_FCNTL_H /* Clash with os_win32.h */ + ++ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 ++ # define PY_SSIZE_T_CLEAN ++ #endif ++ + static void init_structs(void); + + /* The "surrogateescape" error handler is new in Python 3.1 */ +*************** +*** 328,334 **** +--- 330,342 ---- + {"PySys_SetArgv", (PYTHON_PROC*)&py3_PySys_SetArgv}, + {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome}, + {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize}, ++ #ifndef PY_SSIZE_T_CLEAN + {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, ++ {"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue}, ++ #else ++ {"_PyArg_ParseTuple_SizeT", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, ++ {"_Py_BuildValue_SizeT", (PYTHON_PROC*)&py3_Py_BuildValue}, ++ #endif + {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free}, + {"PyMem_Malloc", (PYTHON_PROC*)&py3_PyMem_Malloc}, + {"PyList_New", (PYTHON_PROC*)&py3_PyList_New}, +*************** +*** 364,370 **** + {"PyObject_GetIter", (PYTHON_PROC*)&py3_PyObject_GetIter}, + {"PyLong_FromLong", (PYTHON_PROC*)&py3_PyLong_FromLong}, + {"PyDict_New", (PYTHON_PROC*)&py3_PyDict_New}, +- {"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue}, + {"PyType_Ready", (PYTHON_PROC*)&py3_PyType_Ready}, + {"PyDict_SetItemString", (PYTHON_PROC*)&py3_PyDict_SetItemString}, + {"PyLong_AsLong", (PYTHON_PROC*)&py3_PyLong_AsLong}, +--- 372,377 ---- +*** ../vim-7.3.660/src/version.c 2012-09-12 18:19:39.000000000 +0200 +--- src/version.c 2012-09-12 19:53:52.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 661, + /**/ + +-- +Courtroom Quote #19: +Q: Doctor, how many autopsies have you performed on dead people? +A: All my autopsies have been performed on dead people. + + /// 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 /// From 2367c99d6fd6b90d4a91a2f6d9abf6d1bb03c1b3 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:13 +0200 Subject: [PATCH 24/46] - patchlevel 662 --- 7.3.662 | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 7.3.662 diff --git a/7.3.662 b/7.3.662 new file mode 100644 index 00000000..609e0c5f --- /dev/null +++ b/7.3.662 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.662 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.662 +Problem: Can't build Ruby interface with Ruby 1.9.3. +Solution: Add missing functions. (V. Ondruch) +Files: src/if_ruby.c + + +*** ../vim-7.3.661/src/if_ruby.c 2012-04-25 12:28:05.000000000 +0200 +--- src/if_ruby.c 2012-09-18 16:31:45.000000000 +0200 +*************** +*** 178,183 **** +--- 178,186 ---- + #define rb_hash_new dll_rb_hash_new + #define rb_inspect dll_rb_inspect + #define rb_int2inum dll_rb_int2inum ++ #define rb_fix2int dll_rb_fix2int ++ #define rb_num2int dll_rb_num2int ++ #define rb_num2uint dll_rb_num2uint + #define rb_lastline_get dll_rb_lastline_get + #define rb_lastline_set dll_rb_lastline_set + #define rb_load_protect dll_rb_load_protect +*************** +*** 268,274 **** + static VALUE (*dll_rb_hash_new) (void); + static VALUE (*dll_rb_inspect) (VALUE); + static VALUE (*dll_rb_int2inum) (long); +! static VALUE (*dll_rb_int2inum) (long); + static VALUE (*dll_rb_lastline_get) (void); + static void (*dll_rb_lastline_set) (VALUE); + static void (*dll_rb_load_protect) (VALUE, int, int*); +--- 271,279 ---- + static VALUE (*dll_rb_hash_new) (void); + static VALUE (*dll_rb_inspect) (VALUE); + static VALUE (*dll_rb_int2inum) (long); +! static long (*dll_rb_fix2int) (VALUE); +! static long (*dll_rb_num2int) (VALUE); +! static unsigned long (*dll_rb_num2uint) (VALUE); + static VALUE (*dll_rb_lastline_get) (void); + static void (*dll_rb_lastline_set) (VALUE); + static void (*dll_rb_load_protect) (VALUE, int, int*); +*************** +*** 377,382 **** +--- 382,390 ---- + {"rb_hash_new", (RUBY_PROC*)&dll_rb_hash_new}, + {"rb_inspect", (RUBY_PROC*)&dll_rb_inspect}, + {"rb_int2inum", (RUBY_PROC*)&dll_rb_int2inum}, ++ {"rb_fix2int", (RUBY_PROC*)&dll_rb_fix2int}, ++ {"rb_num2int", (RUBY_PROC*)&dll_rb_num2int}, ++ {"rb_num2uint", (RUBY_PROC*)&dll_rb_num2uint}, + {"rb_lastline_get", (RUBY_PROC*)&dll_rb_lastline_get}, + {"rb_lastline_set", (RUBY_PROC*)&dll_rb_lastline_set}, + {"rb_load_protect", (RUBY_PROC*)&dll_rb_load_protect}, +*** ../vim-7.3.661/src/version.c 2012-09-12 20:21:38.000000000 +0200 +--- src/version.c 2012-09-18 16:35:53.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 662, + /**/ + +-- +FATHER: We are here today to witness the union of two young people in the + joyful bond of the holy wedlock. Unfortunately, one of them, my son + Herbert, has just fallen to his death. + [Murmurs from CROWD; the BRIDE smiles with relief, coughs.] + "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 /// From f01402f883613f72e0b8d84bb98e84a671548d10 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:14 +0200 Subject: [PATCH 25/46] - patchlevel 663 --- 7.3.663 | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 7.3.663 diff --git a/7.3.663 b/7.3.663 new file mode 100644 index 00000000..a6154f48 --- /dev/null +++ b/7.3.663 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.663 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.663 +Problem: End of color scheme name not clear in E185. (Aaron Lewis) +Solution: Put the name in single quotes. +Files: src/ex_docmd.c + + +*** ../vim-7.3.662/src/ex_docmd.c 2012-08-23 18:43:06.000000000 +0200 +--- src/ex_docmd.c 2012-09-14 20:49:29.000000000 +0200 +*************** +*** 6466,6472 **** + #endif + } + else if (load_colors(eap->arg) == FAIL) +! EMSG2(_("E185: Cannot find color scheme %s"), eap->arg); + } + + static void +--- 6466,6472 ---- + #endif + } + else if (load_colors(eap->arg) == FAIL) +! EMSG2(_("E185: Cannot find color scheme '%s'"), eap->arg); + } + + static void +*** ../vim-7.3.662/src/version.c 2012-09-18 16:36:26.000000000 +0200 +--- src/version.c 2012-09-18 16:44:57.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 663, + /**/ + +-- +Yesterday is history. +Tomorrow is a mystery. +Today is a gift. +That's why it is called 'present'. + + /// 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 /// From 3392e4c142565babe8743748c96fbaf36849ec67 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:15 +0200 Subject: [PATCH 26/46] - patchlevel 664 --- 7.3.664 | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 7.3.664 diff --git a/7.3.664 b/7.3.664 new file mode 100644 index 00000000..b83c3822 --- /dev/null +++ b/7.3.664 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.664 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.664 +Problem: Buffer overflow in unescaping text. (Raymond Ko) +Solution: Limit check for multi-byte character to 4 bytes. +Files: src/mbyte.c + + +*** ../vim-7.3.663/src/mbyte.c 2012-06-01 17:46:52.000000000 +0200 +--- src/mbyte.c 2012-09-18 17:53:05.000000000 +0200 +*************** +*** 3793,3805 **** + mb_unescape(pp) + char_u **pp; + { +! static char_u buf[MB_MAXBYTES + 1]; +! int n, m = 0; + char_u *str = *pp; + + /* Must translate K_SPECIAL KS_SPECIAL KE_FILLER to K_SPECIAL and CSI +! * KS_EXTRA KE_CSI to CSI. */ +! for (n = 0; str[n] != NUL && m <= MB_MAXBYTES; ++n) + { + if (str[n] == K_SPECIAL + && str[n + 1] == KS_SPECIAL +--- 3793,3807 ---- + mb_unescape(pp) + char_u **pp; + { +! static char_u buf[6]; +! int n; +! int m = 0; + char_u *str = *pp; + + /* Must translate K_SPECIAL KS_SPECIAL KE_FILLER to K_SPECIAL and CSI +! * KS_EXTRA KE_CSI to CSI. +! * Maximum length of a utf-8 character is 4 bytes. */ +! for (n = 0; str[n] != NUL && m < 4; ++n) + { + if (str[n] == K_SPECIAL + && str[n + 1] == KS_SPECIAL +*************** +*** 3836,3841 **** +--- 3838,3847 ---- + *pp = str + n + 1; + return buf; + } ++ ++ /* Bail out quickly for ASCII. */ ++ if (buf[0] < 128) ++ break; + } + return NULL; + } +*** ../vim-7.3.663/src/version.c 2012-09-18 16:47:00.000000000 +0200 +--- src/version.c 2012-09-18 18:01:14.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 664, + /**/ + +-- +There are three kinds of people: Those who can count & those who can't. + + /// 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 /// From 00b5f7694e8641411baa7369c6e4f7a8c3af334a Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:17 +0200 Subject: [PATCH 27/46] - patchlevel 665 --- 7.3.665 | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 7.3.665 diff --git a/7.3.665 b/7.3.665 new file mode 100644 index 00000000..2f6c30e0 --- /dev/null +++ b/7.3.665 @@ -0,0 +1,80 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.665 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.665 +Problem: MSVC 11 is not supported. +Solution: Recognize MSVC 11. (Raymond Ko) +Files: src/Make_mvc.mak + + +*** ../vim-7.3.664/src/Make_mvc.mak 2012-09-05 17:57:34.000000000 +0200 +--- src/Make_mvc.mak 2012-09-18 18:24:48.000000000 +0200 +*************** +*** 395,400 **** +--- 395,403 ---- + !if "$(_NMAKE_VER)" == "10.00.30319.01" + MSVCVER = 10.0 + !endif ++ !if "$(_NMAKE_VER)" == "11.00.50727.1" ++ MSVCVER = 11.0 ++ !endif + !endif + + # Abort bulding VIM if version of VC is unrecognised. +*************** +*** 409,415 **** + !endif + + # Convert processor ID to MVC-compatible number +! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0") + !if "$(CPUNR)" == "i386" + CPUARG = /G3 + !elseif "$(CPUNR)" == "i486" +--- 412,418 ---- + !endif + + # Convert processor ID to MVC-compatible number +! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0") && ("$(MSVCVER)" != "11.0") + !if "$(CPUNR)" == "i386" + CPUARG = /G3 + !elseif "$(CPUNR)" == "i486" +*************** +*** 443,449 **** + OPTFLAG = /Ox + !endif + +! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") + # Use link time code generation if not worried about size + !if "$(OPTIMIZE)" != "SPACE" + OPTFLAG = $(OPTFLAG) /GL +--- 446,452 ---- + OPTFLAG = /Ox + !endif + +! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") + # Use link time code generation if not worried about size + !if "$(OPTIMIZE)" != "SPACE" + OPTFLAG = $(OPTFLAG) /GL +*** ../vim-7.3.664/src/version.c 2012-09-18 18:03:33.000000000 +0200 +--- src/version.c 2012-09-18 18:26:16.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 665, + /**/ + +-- +There are 10 kinds of people: Those who understand binary and those who don't. + + /// 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 /// From c20a119355848384b48af2cced5eee5edcb207ba Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:18 +0200 Subject: [PATCH 28/46] - patchlevel 666 --- 7.3.666 | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 7.3.666 diff --git a/7.3.666 b/7.3.666 new file mode 100644 index 00000000..42900d18 --- /dev/null +++ b/7.3.666 @@ -0,0 +1,95 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.6 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.666 +Problem: With MSVC 11 Win32.mak is not found. +Solution: Add the SDK_INCLUDE_DIR variable. (Raymond Ko) +Files: src/Make_mvc.mak + + +*** ../vim-7.3.665/src/Make_mvc.mak 2012-09-18 18:27:07.000000000 +0200 +--- src/Make_mvc.mak 2012-09-18 21:58:09.000000000 +0200 +*************** +*** 1,7 **** + # Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me) + # and Win64, using the Microsoft Visual C++ compilers. Known to work with + # VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005), +! # VC9 (VS2008), and VC10 (VS2010). + # + # To build using other Windows compilers, see INSTALLpc.txt + # +--- 1,7 ---- + # Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me) + # and Win64, using the Microsoft Visual C++ compilers. Known to work with + # VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005), +! # VC9 (VS2008), VC10 (VS2010) and VC11 (VS2012) + # + # To build using other Windows compilers, see INSTALLpc.txt + # +*************** +*** 15,20 **** +--- 15,23 ---- + # This will build the console version of Vim with no additional interfaces. + # To add features, define any of the following: + # ++ # For MSVC 11 you need to specify where the Win32.mak file is, e.g.: ++ # SDK_INCLUDE_DIR="C:\Program Files\Microsoft SDKs\Windows\v7.1\Include" ++ # + # !!!! After changing features do "nmake clean" first !!!! + # + # Feature Set: FEATURES=[TINY, SMALL, NORMAL, BIG, HUGE] (default is BIG) +*************** +*** 227,233 **** +--- 230,241 ---- + + # Get all sorts of useful, standard macros from the Platform SDK. + ++ !ifdef SDK_INCLUDE_DIR ++ !include $(SDK_INCLUDE_DIR)\Win32.mak ++ !else + !include ++ !endif ++ + + # Flag to turn on Win64 compatibility warnings for VC7.x and VC8. + WP64CHECK = /Wp64 +*************** +*** 911,917 **** + + # Report link time code generation progress if used. + !ifdef NODEBUG +! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") + !if "$(OPTIMIZE)" != "SPACE" + LINKARGS1 = $(LINKARGS1) /LTCG:STATUS + !endif +--- 919,925 ---- + + # Report link time code generation progress if used. + !ifdef NODEBUG +! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") + !if "$(OPTIMIZE)" != "SPACE" + LINKARGS1 = $(LINKARGS1) /LTCG:STATUS + !endif +*** ../vim-7.3.665/src/version.c 2012-09-18 18:27:07.000000000 +0200 +--- src/version.c 2012-09-18 21:58:44.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 666, + /**/ + +-- +Be nice to your kids... they'll be the ones choosing your nursing home. + + /// 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 /// From a5914e45ed30d969bc82d3c9ebd599fb8e0eb68d Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:19 +0200 Subject: [PATCH 29/46] - patchlevel 667 --- 7.3.667 | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 7.3.667 diff --git a/7.3.667 b/7.3.667 new file mode 100644 index 00000000..3f9f0247 --- /dev/null +++ b/7.3.667 @@ -0,0 +1,86 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.667 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.667 +Problem: Unused variables in Perl interface. +Solution: Adjust #ifdefs. +Files: src/if_perl.xs + + +*** ../vim-7.3.666/src/if_perl.xs 2012-08-08 13:17:26.000000000 +0200 +--- src/if_perl.xs 2012-09-21 12:39:29.000000000 +0200 +*************** +*** 315,320 **** +--- 315,323 ---- + static void (*Perl_sv_free2)(pTHX_ SV*); + static void (*Perl_sys_init)(int* argc, char*** argv); + static void (*Perl_sys_term)(void); ++ static void (*Perl_call_list)(pTHX_ I32, AV*); ++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) ++ # else + static SV** (*Perl_ISv_ptr)(register PerlInterpreter*); + static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*); + static SV*** (*Perl_Istack_base_ptr)(register PerlInterpreter*); +*************** +*** 326,341 **** + static I32** (*Perl_Imarkstack_max_ptr)(register PerlInterpreter*); + static SV*** (*Perl_Istack_sp_ptr)(register PerlInterpreter*); + static OP** (*Perl_Iop_ptr)(register PerlInterpreter*); +- static void (*Perl_call_list)(pTHX_ I32, AV*); + static I32* (*Perl_Iscopestack_ix_ptr)(register PerlInterpreter*); + static AV** (*Perl_Iunitcheckav_ptr)(register PerlInterpreter*); + #endif + + static GV** (*Perl_Idefgv_ptr)(register PerlInterpreter*); + static GV** (*Perl_Ierrgv_ptr)(register PerlInterpreter*); + static SV* (*Perl_Isv_yes_ptr)(register PerlInterpreter*); +- static void (*boot_DynaLoader)_((pTHX_ CV*)); + static perl_key* (*Perl_Gthr_key_ptr)_((pTHX)); + + /* + * Table of name to function pointer of perl. +--- 329,347 ---- + static I32** (*Perl_Imarkstack_max_ptr)(register PerlInterpreter*); + static SV*** (*Perl_Istack_sp_ptr)(register PerlInterpreter*); + static OP** (*Perl_Iop_ptr)(register PerlInterpreter*); + static I32* (*Perl_Iscopestack_ix_ptr)(register PerlInterpreter*); + static AV** (*Perl_Iunitcheckav_ptr)(register PerlInterpreter*); ++ # endif + #endif + ++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) ++ #else + static GV** (*Perl_Idefgv_ptr)(register PerlInterpreter*); + static GV** (*Perl_Ierrgv_ptr)(register PerlInterpreter*); + static SV* (*Perl_Isv_yes_ptr)(register PerlInterpreter*); + static perl_key* (*Perl_Gthr_key_ptr)_((pTHX)); ++ #endif ++ static void (*boot_DynaLoader)_((pTHX_ CV*)); + + /* + * Table of name to function pointer of perl. +*** ../vim-7.3.666/src/version.c 2012-09-18 22:00:02.000000000 +0200 +--- src/version.c 2012-09-21 12:40:57.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 667, + /**/ + +-- +Two cows are standing together in a field. One asks the other: +"So what do you think about this Mad Cow Disease?" +The other replies: "That doesn't concern me. I'm a helicopter." + + /// 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 /// From 0b5d9f76928dbd2bd1ceaa8487ee3f679b040aa3 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:21 +0200 Subject: [PATCH 30/46] - patchlevel 668 --- 7.3.668 | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 7.3.668 diff --git a/7.3.668 b/7.3.668 new file mode 100644 index 00000000..4ddf2063 --- /dev/null +++ b/7.3.668 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.668 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.668 +Problem: Building with Perl loaded dynamically still uses static library. +Solution: Adjust use of PL_thr_key. (Ken Takata) +Files: src/if_perl.xs + + +*** ../vim-7.3.667/src/if_perl.xs 2012-09-21 12:42:38.000000000 +0200 +--- src/if_perl.xs 2012-09-21 12:47:55.000000000 +0200 +*************** +*** 155,161 **** + # define Perl_set_context dll_Perl_set_context + # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) + # define Perl_sv_2bool_flags dll_Perl_sv_2bool_flags +! # define Perl_xs_apiversion_bootcheck dll_Perl_xs_apiversion_bootcheck + # else + # define Perl_sv_2bool dll_Perl_sv_2bool + # endif +--- 155,161 ---- + # define Perl_set_context dll_Perl_set_context + # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) + # define Perl_sv_2bool_flags dll_Perl_sv_2bool_flags +! # define Perl_xs_apiversion_bootcheck dll_Perl_xs_apiversion_bootcheck + # else + # define Perl_sv_2bool dll_Perl_sv_2bool + # endif +*************** +*** 225,230 **** +--- 225,233 ---- + # define Perl_call_list dll_Perl_call_list + # define Perl_Iscopestack_ix_ptr dll_Perl_Iscopestack_ix_ptr + # define Perl_Iunitcheckav_ptr dll_Perl_Iunitcheckav_ptr ++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) ++ # define PL_thr_key *dll_PL_thr_key ++ # endif + + /* + * Declare HANDLE for perl.dll and function pointers. +*************** +*** 335,340 **** +--- 338,344 ---- + #endif + + #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) ++ static perl_key* dll_PL_thr_key; + #else + static GV** (*Perl_Idefgv_ptr)(register PerlInterpreter*); + static GV** (*Perl_Ierrgv_ptr)(register PerlInterpreter*); +*************** +*** 453,458 **** +--- 457,463 ---- + # endif + #endif + #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) ++ {"PL_thr_key", (PERL_PROC*)&dll_PL_thr_key}, + #else + {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr}, + {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr}, +*** ../vim-7.3.667/src/version.c 2012-09-21 12:42:38.000000000 +0200 +--- src/version.c 2012-09-21 12:49:06.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 668, + /**/ + +-- +Michael: There is no such thing as a dump question. +Bernard: Sure there is. For example "what is a core dump?" + + /// 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 /// From 0125f497fe89fc4308d0b81343a083c636edb525 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:22 +0200 Subject: [PATCH 31/46] - patchlevel 669 --- 7.3.669 | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 7.3.669 diff --git a/7.3.669 b/7.3.669 new file mode 100644 index 00000000..7fb19402 --- /dev/null +++ b/7.3.669 @@ -0,0 +1,128 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.669 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.669 +Problem: When building with Cygwin loading Python dynamically fails. +Solution: Use DLLLIBRARY instead of INSTSONAME. (Ken Takata) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.668/src/configure.in 2012-08-15 14:04:50.000000000 +0200 +--- src/configure.in 2012-09-21 12:52:32.000000000 +0200 +*************** +*** 889,894 **** +--- 889,895 ---- + @echo "python_LIBS='$(LIBS)'" + @echo "python_SYSLIBS='$(SYSLIBS)'" + @echo "python_LINKFORSHARED='$(LINKFORSHARED)'" ++ @echo "python_DLLLIBRARY='$(DLLLIBRARY)'" + @echo "python_INSTSONAME='$(INSTSONAME)'" + eof + dnl -- delete the lines from make about Entering/Leaving directory +*************** +*** 909,914 **** +--- 910,918 ---- + fi + ]) + ++ if test "X$python_DLLLIBRARY" != "X"; then ++ python_INSTSONAME="$python_DLLLIBRARY" ++ fi + PYTHON_LIBS="${vi_cv_path_python_plibs}" + if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" +*************** +*** 1082,1087 **** +--- 1086,1092 ---- + @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'" + @echo "python3_LIBS='$(LIBS)'" + @echo "python3_SYSLIBS='$(SYSLIBS)'" ++ @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'" + @echo "python3_INSTSONAME='$(INSTSONAME)'" + eof + dnl -- delete the lines from make about Entering/Leaving directory +*************** +*** 1094,1099 **** +--- 1099,1107 ---- + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` + ]) + ++ if test "X$python3_DLLLIBRARY" != "X"; then ++ python3_INSTSONAME="$python3_DLLLIBRARY" ++ fi + PYTHON3_LIBS="${vi_cv_path_python3_plibs}" + if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" +*** ../vim-7.3.668/src/auto/configure 2012-08-15 14:04:50.000000000 +0200 +--- src/auto/configure 2012-09-21 13:06:09.000000000 +0200 +*************** +*** 5330,5335 **** +--- 5330,5336 ---- + @echo "python_LIBS='$(LIBS)'" + @echo "python_SYSLIBS='$(SYSLIBS)'" + @echo "python_LINKFORSHARED='$(LINKFORSHARED)'" ++ @echo "python_DLLLIBRARY='$(DLLLIBRARY)'" + @echo "python_INSTSONAME='$(INSTSONAME)'" + eof + eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" +*************** +*** 5350,5355 **** +--- 5351,5359 ---- + fi + + ++ if test "X$python_DLLLIBRARY" != "X"; then ++ python_INSTSONAME="$python_DLLLIBRARY" ++ fi + PYTHON_LIBS="${vi_cv_path_python_plibs}" + if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" +*************** +*** 5633,5638 **** +--- 5637,5643 ---- + @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'" + @echo "python3_LIBS='$(LIBS)'" + @echo "python3_SYSLIBS='$(SYSLIBS)'" ++ @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'" + @echo "python3_INSTSONAME='$(INSTSONAME)'" + eof + eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" +*************** +*** 5645,5650 **** +--- 5650,5658 ---- + fi + + ++ if test "X$python3_DLLLIBRARY" != "X"; then ++ python3_INSTSONAME="$python3_DLLLIBRARY" ++ fi + PYTHON3_LIBS="${vi_cv_path_python3_plibs}" + if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" +*** ../vim-7.3.668/src/version.c 2012-09-21 12:50:44.000000000 +0200 +--- src/version.c 2012-09-21 12:54:42.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 669, + /**/ + +-- +TALL KNIGHT: We are now no longer the Knights Who Say Ni! +ONE KNIGHT: Ni! +OTHERS: Sh! +ONE KNIGHT: (whispers) Sorry. + "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 /// From c76da71ee900ba9698a1cca4e84b05338843abf0 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:23 +0200 Subject: [PATCH 32/46] - patchlevel 670 --- 7.3.670 | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 7.3.670 diff --git a/7.3.670 b/7.3.670 new file mode 100644 index 00000000..91b4caa9 --- /dev/null +++ b/7.3.670 @@ -0,0 +1,88 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.670 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.670 +Problem: Python: memory leaks when there are exceptions. +Solution: Add DICTKEY_UNREF in the right places. (ZyX) +Files: src/if_py_both.h + + +*** ../vim-7.3.669/src/if_py_both.h 2012-09-12 20:21:38.000000000 +0200 +--- src/if_py_both.h 2012-09-21 13:32:13.000000000 +0200 +*************** +*** 799,812 **** + + di = dict_find(((DictionaryObject *) (self))->dict, key, -1); + + if (di == NULL) + { + PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); + return NULL; + } + +- DICTKEY_UNREF +- + return ConvertToPyObject(&di->di_tv); + } + +--- 799,812 ---- + + di = dict_find(((DictionaryObject *) (self))->dict, key, -1); + ++ DICTKEY_UNREF ++ + if (di == NULL) + { + PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); + return NULL; + } + + return ConvertToPyObject(&di->di_tv); + } + +*************** +*** 835,840 **** +--- 835,841 ---- + + if (di == NULL) + { ++ DICTKEY_UNREF + PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); + return -1; + } +*************** +*** 859,864 **** +--- 860,866 ---- + + if (dict_add(d, di) == FAIL) + { ++ DICTKEY_UNREF + vim_free(di); + PyErr_SetVim(_("failed to add key to dictionary")); + return -1; +*** ../vim-7.3.669/src/version.c 2012-09-21 13:26:44.000000000 +0200 +--- src/version.c 2012-09-21 13:42:43.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 670, + /**/ + +-- +TALL KNIGHT: Firstly. You must get us another shrubbery! +OTHER KNIGHTS: More shrubberies! More shrubberies for the ex-Knights of Ni! +ARTHUR: Not another shrubbery - + "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 /// From 62c2fb821acac642f45ecb141d694a2add3052ad Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:24 +0200 Subject: [PATCH 33/46] - patchlevel 671 --- 7.3.671 | 311 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 311 insertions(+) create mode 100644 7.3.671 diff --git a/7.3.671 b/7.3.671 new file mode 100644 index 00000000..c47e6f33 --- /dev/null +++ b/7.3.671 @@ -0,0 +1,311 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.671 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.671 +Problem: More Python code can be shared between Python 2 and 3. +Solution: Move code to if_py_both.h. (ZyX) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + + +*** ../vim-7.3.670/src/if_py_both.h 2012-09-21 13:43:09.000000000 +0200 +--- src/if_py_both.h 2012-09-21 13:45:02.000000000 +0200 +*************** +*** 71,76 **** +--- 71,101 ---- + /* Output buffer management + */ + ++ static int ++ OutputSetattr(PyObject *self, char *name, PyObject *val) ++ { ++ if (val == NULL) ++ { ++ PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes")); ++ return -1; ++ } ++ ++ if (strcmp(name, "softspace") == 0) ++ { ++ if (!PyInt_Check(val)) ++ { ++ PyErr_SetString(PyExc_TypeError, _("softspace must be an integer")); ++ return -1; ++ } ++ ++ ((OutputObject *)(self))->softspace = PyInt_AsLong(val); ++ return 0; ++ } ++ ++ PyErr_SetString(PyExc_AttributeError, _("invalid attribute")); ++ return -1; ++ } ++ + static PyObject * + OutputWrite(PyObject *self, PyObject *args) + { +*** ../vim-7.3.670/src/if_python.c 2012-09-12 20:21:38.000000000 +0200 +--- src/if_python.c 2012-09-21 13:45:02.000000000 +0200 +*************** +*** 951,981 **** + return Py_FindMethod(OutputMethods, self, name); + } + +- static int +- OutputSetattr(PyObject *self, char *name, PyObject *val) +- { +- if (val == NULL) +- { +- PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes")); +- return -1; +- } +- +- if (strcmp(name, "softspace") == 0) +- { +- if (!PyInt_Check(val)) +- { +- PyErr_SetString(PyExc_TypeError, _("softspace must be an integer")); +- return -1; +- } +- +- ((OutputObject *)(self))->softspace = PyInt_AsLong(val); +- return 0; +- } +- +- PyErr_SetString(PyExc_AttributeError, _("invalid attribute")); +- return -1; +- } +- + /***************/ + + static int +--- 951,956 ---- +*** ../vim-7.3.670/src/if_python3.c 2012-09-12 20:21:38.000000000 +0200 +--- src/if_python3.c 2012-09-21 13:45:02.000000000 +0200 +*************** +*** 88,93 **** +--- 88,96 ---- + #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) + #define PyString_FromString(repr) PyUnicode_FromString(repr) + #define PyString_AsStringAndSize(obj, buffer, len) PyBytes_AsStringAndSize(obj, buffer, len) ++ #define PyInt_Check(obj) PyLong_Check(obj) ++ #define PyInt_FromLong(i) PyLong_FromLong(i) ++ #define PyInt_AsLong(obj) PyLong_AsLong(obj) + + #if defined(DYNAMIC_PYTHON3) || defined(PROTO) + +*************** +*** 586,591 **** +--- 589,599 ---- + */ + #include "if_py_both.h" + ++ #define GET_ATTR_STRING(name, nameobj) \ ++ char *name = ""; \ ++ if(PyUnicode_Check(nameobj)) \ ++ name = _PyUnicode_AsString(nameobj) ++ + #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0) + + static void +*************** +*** 923,931 **** + static PyObject * + OutputGetattro(PyObject *self, PyObject *nameobj) + { +! char *name = ""; +! if (PyUnicode_Check(nameobj)) +! name = _PyUnicode_AsString(nameobj); + + if (strcmp(name, "softspace") == 0) + return PyLong_FromLong(((OutputObject *)(self))->softspace); +--- 931,937 ---- + static PyObject * + OutputGetattro(PyObject *self, PyObject *nameobj) + { +! GET_ATTR_STRING(name, nameobj); + + if (strcmp(name, "softspace") == 0) + return PyLong_FromLong(((OutputObject *)(self))->softspace); +*************** +*** 936,965 **** + static int + OutputSetattro(PyObject *self, PyObject *nameobj, PyObject *val) + { +! char *name = ""; +! if (PyUnicode_Check(nameobj)) +! name = _PyUnicode_AsString(nameobj); +! +! if (val == NULL) +! { +! PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes")); +! return -1; +! } + +! if (strcmp(name, "softspace") == 0) +! { +! if (!PyLong_Check(val)) +! { +! PyErr_SetString(PyExc_TypeError, _("softspace must be an integer")); +! return -1; +! } +! +! ((OutputObject *)(self))->softspace = PyLong_AsLong(val); +! return 0; +! } +! +! PyErr_SetString(PyExc_AttributeError, _("invalid attribute")); +! return -1; + } + + /***************/ +--- 942,950 ---- + static int + OutputSetattro(PyObject *self, PyObject *nameobj, PyObject *val) + { +! GET_ATTR_STRING(name, nameobj); + +! return OutputSetattr(self, name, val); + } + + /***************/ +*************** +*** 1091,1099 **** + { + BufferObject *this = (BufferObject *)(self); + +! char *name = ""; +! if (PyUnicode_Check(nameobj)) +! name = _PyUnicode_AsString(nameobj); + + if (CheckBuffer(this)) + return NULL; +--- 1076,1082 ---- + { + BufferObject *this = (BufferObject *)(self); + +! GET_ATTR_STRING(name, nameobj); + + if (CheckBuffer(this)) + return NULL; +*************** +*** 1257,1265 **** + static PyObject * + RangeGetattro(PyObject *self, PyObject *nameobj) + { +! char *name = ""; +! if (PyUnicode_Check(nameobj)) +! name = _PyUnicode_AsString(nameobj); + + if (strcmp(name, "start") == 0) + return Py_BuildValue("n", ((RangeObject *)(self))->start - 1); +--- 1240,1246 ---- + static PyObject * + RangeGetattro(PyObject *self, PyObject *nameobj) + { +! GET_ATTR_STRING(name, nameobj); + + if (strcmp(name, "start") == 0) + return Py_BuildValue("n", ((RangeObject *)(self))->start - 1); +*************** +*** 1430,1439 **** + { + WindowObject *this = (WindowObject *)(self); + +! char *name = ""; +! if (PyUnicode_Check(nameobj)) +! name = _PyUnicode_AsString(nameobj); +! + + if (CheckWindow(this)) + return NULL; +--- 1411,1417 ---- + { + WindowObject *this = (WindowObject *)(self); + +! GET_ATTR_STRING(name, nameobj); + + if (CheckWindow(this)) + return NULL; +*************** +*** 1461,1470 **** + static int + WindowSetattro(PyObject *self, PyObject *nameobj, PyObject *val) + { +! char *name = ""; +! +! if (PyUnicode_Check(nameobj)) +! name = _PyUnicode_AsString(nameobj); + + return WindowSetattr(self, name, val); + } +--- 1439,1445 ---- + static int + WindowSetattro(PyObject *self, PyObject *nameobj, PyObject *val) + { +! GET_ATTR_STRING(name, nameobj); + + return WindowSetattr(self, name, val); + } +*************** +*** 1508,1516 **** + static PyObject * + CurrentGetattro(PyObject *self UNUSED, PyObject *nameobj) + { +! char *name = ""; +! if (PyUnicode_Check(nameobj)) +! name = _PyUnicode_AsString(nameobj); + + if (strcmp(name, "buffer") == 0) + return (PyObject *)BufferNew(curbuf); +--- 1483,1489 ---- + static PyObject * + CurrentGetattro(PyObject *self UNUSED, PyObject *nameobj) + { +! GET_ATTR_STRING(name, nameobj); + + if (strcmp(name, "buffer") == 0) + return (PyObject *)BufferNew(curbuf); +*************** +*** 1681,1689 **** + FunctionGetattro(PyObject *self, PyObject *nameobj) + { + FunctionObject *this = (FunctionObject *)(self); +! char *name = ""; +! if (PyUnicode_Check(nameobj)) +! name = _PyUnicode_AsString(nameobj); + + if (strcmp(name, "name") == 0) + return PyUnicode_FromString((char *)(this->name)); +--- 1654,1661 ---- + FunctionGetattro(PyObject *self, PyObject *nameobj) + { + FunctionObject *this = (FunctionObject *)(self); +! +! GET_ATTR_STRING(name, nameobj); + + if (strcmp(name, "name") == 0) + return PyUnicode_FromString((char *)(this->name)); +*** ../vim-7.3.670/src/version.c 2012-09-21 13:43:09.000000000 +0200 +--- src/version.c 2012-09-21 13:45:28.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 671, + /**/ + +-- +The war between Emacs and Vi is over. Vi has won with 3 to 1. + http://www.ssc.com/lg/issue30/raymond.html + + /// 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 /// From 8b653467651852339d9a58421a7c8bc8eca1c6b1 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:26 +0200 Subject: [PATCH 34/46] - patchlevel 672 --- 7.3.672 | 699 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 699 insertions(+) create mode 100644 7.3.672 diff --git a/7.3.672 b/7.3.672 new file mode 100644 index 00000000..b43b0f15 --- /dev/null +++ b/7.3.672 @@ -0,0 +1,699 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.672 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.672 +Problem: Not possible to lock/unlock lists in Python interface. +Solution: Add .locked and .scope attributes. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python.c, + src/if_python3.c, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + + +*** ../vim-7.3.671/runtime/doc/if_pyth.txt 2012-06-29 12:54:32.000000000 +0200 +--- runtime/doc/if_pyth.txt 2012-09-21 13:49:14.000000000 +0200 +*************** +*** 27,33 **** + + *:python* *:py* *E205* *E263* *E264* + :[range]py[thon] {stmt} +! Execute Python statement {stmt}. + + :[range]py[thon] << {endmarker} + {script} +--- 27,35 ---- + + *:python* *:py* *E205* *E263* *E264* + :[range]py[thon] {stmt} +! Execute Python statement {stmt}. A simple check if +! the `:python` command is working: > +! :python print "Hello" + + :[range]py[thon] << {endmarker} + {script} +*************** +*** 157,162 **** +--- 159,184 ---- + vimlist or vimdictionary python type that are connected to original + list or dictionary. Thus modifications to these objects imply + modifications of the original. ++ ++ Additionally, vimlist and vimdictionary type have read-write ++ `.locked` attribute that returns ++ Value Meaning ~ ++ zero Variable is not locked ++ vim.VAR_LOCKED Variable is locked, but can be unlocked ++ vim.VAR_FIXED Variable is locked and can’t be unlocked ++ integer constants. If variable is not fixed, you can do ++ `var.locked=True` to lock it and `var.locked=False` to unlock. ++ There is no recursive locking like |:lockvar|! does. There is also ++ no way to lock a specific key or check whether it is locked (in any ++ case these locks are ignored by anything except |:let|: |extend()| ++ does not care, neither does python interface). ++ ++ Vimdictionary type also supports `.scope` attribute which is one of ++ Value Meaning ~ ++ zero Dictionary is not a scope one ++ vim.VAR_DEF_SCOPE Function-local or global scope dictionary ++ vim.VAR_SCOPE Other scope dictionary ++ + 2. if expression evaluates to a function reference, then it returns + callable vimfunction object. Use self keyword argument to assign + |self| object for dictionary functions. +*************** +*** 362,369 **** + 8. Python 3 *python3* + + *:py3* *:python3* +! The |:py3| and |:python3| commands work similar to |:python|. +! *:py3file* + The |:py3file| command works similar to |:pyfile|. + + +--- 384,393 ---- + 8. Python 3 *python3* + + *:py3* *:python3* +! The |:py3| and |:python3| commands work similar to |:python|. A simple check +! if the `:py3` command is wrong: > +! :py3 print("Hello") +! < *:py3file* + The |:py3file| command works similar to |:pyfile|. + + +*** ../vim-7.3.671/src/if_py_both.h 2012-09-21 13:45:57.000000000 +0200 +--- src/if_py_both.h 2012-09-21 13:49:14.000000000 +0200 +*************** +*** 808,813 **** +--- 808,851 ---- + } + + static PyInt ++ DictionarySetattr(DictionaryObject *self, char *name, PyObject *val) ++ { ++ if (val == NULL) ++ { ++ PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes")); ++ return -1; ++ } ++ ++ if (strcmp(name, "locked") == 0) ++ { ++ if (self->dict->dv_lock == VAR_FIXED) ++ { ++ PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed dictionary")); ++ return -1; ++ } ++ else ++ { ++ if (!PyBool_Check(val)) ++ { ++ PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed")); ++ return -1; ++ } ++ ++ if (val == Py_True) ++ self->dict->dv_lock = VAR_LOCKED; ++ else ++ self->dict->dv_lock = 0; ++ } ++ return 0; ++ } ++ else ++ { ++ PyErr_SetString(PyExc_AttributeError, _("Cannot set this attribute")); ++ return -1; ++ } ++ } ++ ++ static PyInt + DictionaryLength(PyObject *self) + { + return ((PyInt) ((((DictionaryObject *)(self))->dict->dv_hashtab.ht_used))); +*************** +*** 1271,1276 **** +--- 1309,1352 ---- + return self; + } + ++ static int ++ ListSetattr(ListObject *self, char *name, PyObject *val) ++ { ++ if (val == NULL) ++ { ++ PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes")); ++ return -1; ++ } ++ ++ if (strcmp(name, "locked") == 0) ++ { ++ if (self->list->lv_lock == VAR_FIXED) ++ { ++ PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed list")); ++ return -1; ++ } ++ else ++ { ++ if (!PyBool_Check(val)) ++ { ++ PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed")); ++ return -1; ++ } ++ ++ if (val == Py_True) ++ self->list->lv_lock = VAR_LOCKED; ++ else ++ self->list->lv_lock = 0; ++ } ++ return 0; ++ } ++ else ++ { ++ PyErr_SetString(PyExc_AttributeError, _("Cannot set this attribute")); ++ return -1; ++ } ++ } ++ + static struct PyMethodDef ListMethods[] = { + {"extend", (PyCFunction)ListConcatInPlace, METH_O, ""}, + { NULL, NULL, 0, NULL } +*** ../vim-7.3.671/src/if_python.c 2012-09-21 13:45:57.000000000 +0200 +--- src/if_python.c 2012-09-21 13:49:14.000000000 +0200 +*************** +*** 163,168 **** +--- 163,169 ---- + # define PyInt_FromLong dll_PyInt_FromLong + # define PyLong_AsLong dll_PyLong_AsLong + # define PyLong_FromLong dll_PyLong_FromLong ++ # define PyBool_Type (*dll_PyBool_Type) + # define PyInt_Type (*dll_PyInt_Type) + # define PyLong_Type (*dll_PyLong_Type) + # define PyList_GetItem dll_PyList_GetItem +*************** +*** 221,226 **** +--- 222,229 ---- + # define _PyObject_NextNotImplemented (*dll__PyObject_NextNotImplemented) + # endif + # define _Py_NoneStruct (*dll__Py_NoneStruct) ++ # define _Py_ZeroStruct (*dll__Py_ZeroStruct) ++ # define _Py_TrueStruct (*dll__Py_TrueStruct) + # define PyObject_Init dll__PyObject_Init + # define PyObject_GetIter dll_PyObject_GetIter + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 +*************** +*** 263,268 **** +--- 266,272 ---- + static PyObject*(*dll_PyInt_FromLong)(long); + static long(*dll_PyLong_AsLong)(PyObject *); + static PyObject*(*dll_PyLong_FromLong)(long); ++ static PyTypeObject* dll_PyBool_Type; + static PyTypeObject* dll_PyInt_Type; + static PyTypeObject* dll_PyLong_Type; + static PyObject*(*dll_PyList_GetItem)(PyObject *, PyInt); +*************** +*** 320,325 **** +--- 324,331 ---- + static iternextfunc dll__PyObject_NextNotImplemented; + # endif + static PyObject* dll__Py_NoneStruct; ++ static PyObject* _Py_ZeroStruct; ++ static PyObject* dll__Py_TrueStruct; + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 + static int (*dll_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *); + # endif +*************** +*** 389,394 **** +--- 395,401 ---- + {"PyInt_FromLong", (PYTHON_PROC*)&dll_PyInt_FromLong}, + {"PyLong_AsLong", (PYTHON_PROC*)&dll_PyLong_AsLong}, + {"PyLong_FromLong", (PYTHON_PROC*)&dll_PyLong_FromLong}, ++ {"PyBool_Type", (PYTHON_PROC*)&dll_PyBool_Type}, + {"PyInt_Type", (PYTHON_PROC*)&dll_PyInt_Type}, + {"PyLong_Type", (PYTHON_PROC*)&dll_PyLong_Type}, + {"PyList_GetItem", (PYTHON_PROC*)&dll_PyList_GetItem}, +*************** +*** 449,454 **** +--- 456,463 ---- + {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&dll__PyObject_NextNotImplemented}, + # endif + {"_Py_NoneStruct", (PYTHON_PROC*)&dll__Py_NoneStruct}, ++ {"_Py_ZeroStruct", (PYTHON_PROC*)&dll__Py_ZeroStruct}, ++ {"_Py_TrueStruct", (PYTHON_PROC*)&dll__Py_TrueStruct}, + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 + {"PyType_IsSubtype", (PYTHON_PROC*)&dll_PyType_IsSubtype}, + # endif +*************** +*** 1563,1568 **** +--- 1572,1581 ---- + PyDict_SetItemString(dict, "buffers", (PyObject *)(void *)&TheBufferList); + PyDict_SetItemString(dict, "current", (PyObject *)(void *)&TheCurrent); + PyDict_SetItemString(dict, "windows", (PyObject *)(void *)&TheWindowList); ++ PyDict_SetItemString(dict, "VAR_LOCKED", PyInt_FromLong(VAR_LOCKED)); ++ PyDict_SetItemString(dict, "VAR_FIXED", PyInt_FromLong(VAR_FIXED)); ++ PyDict_SetItemString(dict, "VAR_SCOPE", PyInt_FromLong(VAR_SCOPE)); ++ PyDict_SetItemString(dict, "VAR_DEF_SCOPE", PyInt_FromLong(VAR_DEF_SCOPE)); + + if (PyErr_Occurred()) + return -1; +*************** +*** 1629,1635 **** + (destructor) DictionaryDestructor, + (printfunc) 0, + (getattrfunc) DictionaryGetattr, +! (setattrfunc) 0, + (cmpfunc) 0, + (reprfunc) 0, + +--- 1642,1648 ---- + (destructor) DictionaryDestructor, + (printfunc) 0, + (getattrfunc) DictionaryGetattr, +! (setattrfunc) DictionarySetattr, + (cmpfunc) 0, + (reprfunc) 0, + +*************** +*** 1656,1661 **** +--- 1669,1681 ---- + static PyObject * + DictionaryGetattr(PyObject *self, char *name) + { ++ DictionaryObject *this = ((DictionaryObject *) (self)); ++ ++ if (strcmp(name, "locked") == 0) ++ return PyInt_FromLong(this->dict->dv_lock); ++ else if (strcmp(name, "scope") == 0) ++ return PyInt_FromLong(this->dict->dv_scope); ++ + return Py_FindMethod(DictionaryMethods, self, name); + } + +*************** +*** 1687,1693 **** + (destructor) ListDestructor, + (printfunc) 0, + (getattrfunc) ListGetattr, +! (setattrfunc) 0, + (cmpfunc) 0, + (reprfunc) 0, + +--- 1707,1713 ---- + (destructor) ListDestructor, + (printfunc) 0, + (getattrfunc) ListGetattr, +! (setattrfunc) ListSetattr, + (cmpfunc) 0, + (reprfunc) 0, + +*************** +*** 1714,1719 **** +--- 1734,1742 ---- + static PyObject * + ListGetattr(PyObject *self, char *name) + { ++ if (strcmp(name, "locked") == 0) ++ return PyInt_FromLong(((ListObject *)(self))->list->lv_lock); ++ + return Py_FindMethod(ListMethods, self, name); + } + +*** ../vim-7.3.671/src/if_python3.c 2012-09-21 13:45:57.000000000 +0200 +--- src/if_python3.c 2012-09-21 13:49:14.000000000 +0200 +*************** +*** 161,167 **** + # define PyRun_String py3_PyRun_String + # define PySys_SetObject py3_PySys_SetObject + # define PySys_SetArgv py3_PySys_SetArgv +- # define PyType_Type (*py3_PyType_Type) + # define PyType_Ready py3_PyType_Ready + #undef Py_BuildValue + # define Py_BuildValue py3_Py_BuildValue +--- 161,166 ---- +*************** +*** 170,175 **** +--- 169,176 ---- + # define Py_Finalize py3_Py_Finalize + # define Py_IsInitialized py3_Py_IsInitialized + # define _Py_NoneStruct (*py3__Py_NoneStruct) ++ # define _Py_FalseStruct (*py3__Py_FalseStruct) ++ # define _Py_TrueStruct (*py3__Py_TrueStruct) + # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented) + # define PyModule_AddObject py3_PyModule_AddObject + # define PyImport_AppendInittab py3_PyImport_AppendInittab +*************** +*** 184,191 **** +--- 185,194 ---- + # define PyFloat_FromDouble py3_PyFloat_FromDouble + # define PyFloat_AsDouble py3_PyFloat_AsDouble + # define PyObject_GenericGetAttr py3_PyObject_GenericGetAttr ++ # define PyType_Type (*py3_PyType_Type) + # define PySlice_Type (*py3_PySlice_Type) + # define PyFloat_Type (*py3_PyFloat_Type) ++ # define PyBool_Type (*py3_PyBool_Type) + # define PyErr_NewException py3_PyErr_NewException + # ifdef Py_DEBUG + # define _Py_NegativeRefcount py3__Py_NegativeRefcount +*************** +*** 245,251 **** + static PyObject* (*py3_PyImport_ImportModule)(const char *); + static PyObject* (*py3_PyImport_AddModule)(const char *); + static int (*py3_PyErr_BadArgument)(void); +- static PyTypeObject* py3_PyType_Type; + static PyObject* (*py3_PyErr_Occurred)(void); + static PyObject* (*py3_PyModule_GetDict)(PyObject *); + static int (*py3_PyList_SetItem)(PyObject *, Py_ssize_t, PyObject *); +--- 248,253 ---- +*************** +*** 275,280 **** +--- 277,284 ---- + static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *); + static iternextfunc py3__PyObject_NextNotImplemented; + static PyObject* py3__Py_NoneStruct; ++ static PyObject* py3__Py_FalseStruct; ++ static PyObject* py3__Py_TrueStruct; + static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o); + static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void)); + static char* (*py3__PyUnicode_AsString)(PyObject *unicode); +*************** +*** 288,295 **** +--- 292,301 ---- + static PyObject* (*py3_PyModule_Create2)(struct PyModuleDef* module, int module_api_version); + static PyObject* (*py3_PyType_GenericAlloc)(PyTypeObject *type, Py_ssize_t nitems); + static PyObject* (*py3_PyType_GenericNew)(PyTypeObject *type, PyObject *args, PyObject *kwds); ++ static PyTypeObject* py3_PyType_Type; + static PyTypeObject* py3_PySlice_Type; + static PyTypeObject* py3_PyFloat_Type; ++ static PyTypeObject* py3_PyBool_Type; + static PyObject* (*py3_PyErr_NewException)(char *name, PyObject *base, PyObject *dict); + static PyObject* (*py3_PyCapsule_New)(void *, char *, PyCapsule_Destructor); + static void* (*py3_PyCapsule_GetPointer)(PyObject *, char *); +*************** +*** 363,369 **** + {"PyImport_ImportModule", (PYTHON_PROC*)&py3_PyImport_ImportModule}, + {"PyImport_AddModule", (PYTHON_PROC*)&py3_PyImport_AddModule}, + {"PyErr_BadArgument", (PYTHON_PROC*)&py3_PyErr_BadArgument}, +- {"PyType_Type", (PYTHON_PROC*)&py3_PyType_Type}, + {"PyErr_Occurred", (PYTHON_PROC*)&py3_PyErr_Occurred}, + {"PyModule_GetDict", (PYTHON_PROC*)&py3_PyModule_GetDict}, + {"PyList_SetItem", (PYTHON_PROC*)&py3_PyList_SetItem}, +--- 369,374 ---- +*************** +*** 386,391 **** +--- 391,398 ---- + {"Py_IsInitialized", (PYTHON_PROC*)&py3_Py_IsInitialized}, + {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&py3__PyObject_NextNotImplemented}, + {"_Py_NoneStruct", (PYTHON_PROC*)&py3__Py_NoneStruct}, ++ {"_Py_FalseStruct", (PYTHON_PROC*)&py3__Py_FalseStruct}, ++ {"_Py_TrueStruct", (PYTHON_PROC*)&py3__Py_TrueStruct}, + {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear}, + {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init}, + {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject}, +*************** +*** 400,407 **** +--- 407,416 ---- + {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2}, + {"PyType_GenericAlloc", (PYTHON_PROC*)&py3_PyType_GenericAlloc}, + {"PyType_GenericNew", (PYTHON_PROC*)&py3_PyType_GenericNew}, ++ {"PyType_Type", (PYTHON_PROC*)&py3_PyType_Type}, + {"PySlice_Type", (PYTHON_PROC*)&py3_PySlice_Type}, + {"PyFloat_Type", (PYTHON_PROC*)&py3_PyFloat_Type}, ++ {"PyBool_Type", (PYTHON_PROC*)&py3_PyBool_Type}, + {"PyErr_NewException", (PYTHON_PROC*)&py3_PyErr_NewException}, + # ifdef Py_DEBUG + {"_Py_NegativeRefcount", (PYTHON_PROC*)&py3__Py_NegativeRefcount}, +*************** +*** 1534,1539 **** +--- 1543,1570 ---- + /* mp_ass_subscript */ (objobjargproc) DictionaryAssItem, + }; + ++ static PyObject * ++ DictionaryGetattro(PyObject *self, PyObject *nameobj) ++ { ++ DictionaryObject *this = ((DictionaryObject *) (self)); ++ ++ GET_ATTR_STRING(name, nameobj); ++ ++ if (strcmp(name, "locked") == 0) ++ return PyLong_FromLong(this->dict->dv_lock); ++ else if (strcmp(name, "scope") == 0) ++ return PyLong_FromLong(this->dict->dv_scope); ++ ++ return PyObject_GenericGetAttr(self, nameobj); ++ } ++ ++ static int ++ DictionarySetattro(PyObject *self, PyObject *nameobj, PyObject *val) ++ { ++ GET_ATTR_STRING(name, nameobj); ++ return DictionarySetattr((DictionaryObject *) self, name, val); ++ } ++ + static PyTypeObject DictionaryType; + + static void +*************** +*** 1625,1630 **** +--- 1656,1679 ---- + } + } + ++ static PyObject * ++ ListGetattro(PyObject *self, PyObject *nameobj) ++ { ++ GET_ATTR_STRING(name, nameobj); ++ ++ if (strcmp(name, "locked") == 0) ++ return PyLong_FromLong(((ListObject *) (self))->list->lv_lock); ++ ++ return PyObject_GenericGetAttr(self, nameobj); ++ } ++ ++ static int ++ ListSetattro(PyObject *self, PyObject *nameobj, PyObject *val) ++ { ++ GET_ATTR_STRING(name, nameobj); ++ return ListSetattr((ListObject *) self, name, val); ++ } ++ + static void + ListDestructor(PyObject *self) + { +*************** +*** 1713,1718 **** +--- 1762,1768 ---- + PyMODINIT_FUNC Py3Init_vim(void) + { + PyObject *mod; ++ PyObject *tmp; + /* The special value is removed from sys.path in Python3_Init(). */ + static wchar_t *(argv[2]) = {L"/must>not&exist/foo", NULL}; + +*************** +*** 1744,1749 **** +--- 1794,1809 ---- + Py_INCREF((PyObject *)(void *)&TheWindowList); + PyModule_AddObject(mod, "windows", (PyObject *)(void *)&TheWindowList); + ++ #define ADD_INT_CONSTANT(name, value) \ ++ tmp = PyLong_FromLong(value); \ ++ Py_INCREF(tmp); \ ++ PyModule_AddObject(mod, name, tmp) ++ ++ ADD_INT_CONSTANT("VAR_LOCKED", VAR_LOCKED); ++ ADD_INT_CONSTANT("VAR_FIXED", VAR_FIXED); ++ ADD_INT_CONSTANT("VAR_SCOPE", VAR_SCOPE); ++ ADD_INT_CONSTANT("VAR_DEF_SCOPE", VAR_DEF_SCOPE); ++ + if (PyErr_Occurred()) + return NULL; + +*************** +*** 1899,1904 **** +--- 1959,1966 ---- + vim_memset(&DictionaryType, 0, sizeof(DictionaryType)); + DictionaryType.tp_name = "vim.dictionary"; + DictionaryType.tp_basicsize = sizeof(DictionaryObject); ++ DictionaryType.tp_getattro = DictionaryGetattro; ++ DictionaryType.tp_setattro = DictionarySetattro; + DictionaryType.tp_dealloc = DictionaryDestructor; + DictionaryType.tp_as_mapping = &DictionaryAsMapping; + DictionaryType.tp_flags = Py_TPFLAGS_DEFAULT; +*************** +*** 1909,1914 **** +--- 1971,1978 ---- + ListType.tp_name = "vim.list"; + ListType.tp_dealloc = ListDestructor; + ListType.tp_basicsize = sizeof(ListObject); ++ ListType.tp_getattro = ListGetattro; ++ ListType.tp_setattro = ListSetattro; + ListType.tp_as_sequence = &ListAsSeq; + ListType.tp_as_mapping = &ListAsMapping; + ListType.tp_flags = Py_TPFLAGS_DEFAULT; +*** ../vim-7.3.671/src/testdir/test86.in 2012-09-05 19:17:37.000000000 +0200 +--- src/testdir/test86.in 2012-09-21 13:49:14.000000000 +0200 +*************** +*** 211,216 **** +--- 211,251 ---- + m.extend([e.__class__.__name__]) + EOF + :$put =messages ++ :unlet messages ++ :" locked and scope attributes ++ :let d={} | let dl={} | lockvar dl ++ :for s in split("d dl v: g:") ++ : let name=tr(s, ':', 's') ++ : execute 'py '.name.'=vim.bindeval("'.s.'")' ++ : let toput=s.' : '.join(map(['locked', 'scope'], 'v:val.":".pyeval(name.".".v:val)'), ';') ++ : $put =toput ++ :endfor ++ :silent! let d.abc=1 ++ :silent! let dl.abc=1 ++ :py d.locked=True ++ :py dl.locked=False ++ :silent! let d.def=1 ++ :silent! let dl.def=1 ++ :put ='d:'.string(d) ++ :put ='dl:'.string(dl) ++ :unlet d dl ++ : ++ :let l=[] | let ll=[] | lockvar ll ++ :for s in split("l ll") ++ : let name=tr(s, ':', 's') ++ : execute 'py '.name.'=vim.bindeval("'.s.'")' ++ : let toput=s.' : locked:'.pyeval(name.'.locked') ++ : $put =toput ++ :endfor ++ :silent! call extend(l, [0]) ++ :silent! call extend(ll, [0]) ++ :py l.locked=True ++ :py ll.locked=False ++ :silent! call extend(l, [1]) ++ :silent! call extend(ll, [1]) ++ :put ='l:'.string(l) ++ :put ='ll:'.string(ll) ++ :unlet l ll + :" + :" pyeval() + :let l=pyeval('range(3)') +*************** +*** 240,245 **** +--- 275,281 ---- + :call garbagecollect(1) + :" + :/^start:/,$wq! test.out ++ :call getchar() + ENDTEST + + start: +*** ../vim-7.3.671/src/testdir/test86.ok 2012-09-05 19:17:37.000000000 +0200 +--- src/testdir/test86.ok 2012-09-21 13:49:14.000000000 +0200 +*************** +*** 44,49 **** +--- 44,59 ---- + ValueError + TypeError + TypeError ++ d : locked:0;scope:0 ++ dl : locked:1;scope:0 ++ v: : locked:2;scope:1 ++ g: : locked:0;scope:2 ++ d:{'abc': 1} ++ dl:{'def': 1} ++ l : locked:0 ++ ll : locked:1 ++ l:[0] ++ ll:[1] + [0, 1, 2] + ['a', 'b'] + ['c', 1] +*** ../vim-7.3.671/src/testdir/test87.in 2012-09-05 19:17:37.000000000 +0200 +--- src/testdir/test87.in 2012-09-21 13:49:14.000000000 +0200 +*************** +*** 211,216 **** +--- 211,251 ---- + m.extend([e.__class__.__name__]) + EOF + :$put =messages ++ :unlet messages ++ :" locked and scope attributes ++ :let d={} | let dl={} | lockvar dl ++ :for s in split("d dl v: g:") ++ : let name=tr(s, ':', 's') ++ : execute 'py3 '.name.'=vim.bindeval("'.s.'")' ++ : let toput=s.' : '.join(map(['locked', 'scope'], 'v:val.":".py3eval(name.".".v:val)'), ';') ++ : $put =toput ++ :endfor ++ :silent! let d.abc=1 ++ :silent! let dl.abc=1 ++ :py3 d.locked=True ++ :py3 dl.locked=False ++ :silent! let d.def=1 ++ :silent! let dl.def=1 ++ :put ='d:'.string(d) ++ :put ='dl:'.string(dl) ++ :unlet d dl ++ : ++ :let l=[] | let ll=[] | lockvar ll ++ :for s in split("l ll") ++ : let name=tr(s, ':', 's') ++ : execute 'py3 '.name.'=vim.bindeval("'.s.'")' ++ : let toput=s.' : locked:'.py3eval(name.'.locked') ++ : $put =toput ++ :endfor ++ :silent! call extend(l, [0]) ++ :silent! call extend(ll, [0]) ++ :py3 l.locked=True ++ :py3 ll.locked=False ++ :silent! call extend(l, [1]) ++ :silent! call extend(ll, [1]) ++ :put ='l:'.string(l) ++ :put ='ll:'.string(ll) ++ :unlet l ll + :" + :" py3eval() + :let l=py3eval('[0, 1, 2]') +*** ../vim-7.3.671/src/testdir/test87.ok 2012-09-05 19:17:37.000000000 +0200 +--- src/testdir/test87.ok 2012-09-21 13:49:14.000000000 +0200 +*************** +*** 44,49 **** +--- 44,59 ---- + ValueError + TypeError + TypeError ++ d : locked:0;scope:0 ++ dl : locked:1;scope:0 ++ v: : locked:2;scope:1 ++ g: : locked:0;scope:2 ++ d:{'abc': 1} ++ dl:{'def': 1} ++ l : locked:0 ++ ll : locked:1 ++ l:[0] ++ ll:[1] + [0, 1, 2] + ['a', 'b'] + ['c', 1] +*** ../vim-7.3.671/src/version.c 2012-09-21 13:45:57.000000000 +0200 +--- src/version.c 2012-09-21 13:48:18.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 672, + /**/ + +-- +Vi beats Emacs to death, and then again! + http://linuxtoday.com/stories/5764.html + + /// 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 /// From 53f5541a7a577cc33fa7ea3275138797d1cc3dcc Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:27 +0200 Subject: [PATCH 35/46] - patchlevel 673 --- 7.3.673 | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 7.3.673 diff --git a/7.3.673 b/7.3.673 new file mode 100644 index 00000000..8ab41a33 --- /dev/null +++ b/7.3.673 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.673 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.673 +Problem: Using "gN" while 'selection' is "exclusive" misses one character. + (Ben Fritz) +Solution: Check the direction when compensating for exclusive selection. + (Christian Brabandt) +Files: src/search.c + + +*** ../vim-7.3.672/src/search.c 2012-09-05 12:16:39.000000000 +0200 +--- src/search.c 2012-10-03 13:28:49.000000000 +0200 +*************** +*** 4650,4657 **** + if (VIsual_active) + { + redraw_curbuf_later(INVERTED); /* update the inversion */ +! if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor)) +! inc_cursor(); + } + + #ifdef FEAT_FOLDING +--- 4650,4664 ---- + if (VIsual_active) + { + redraw_curbuf_later(INVERTED); /* update the inversion */ +! if (*p_sel == 'e') +! { +! /* Correction for exclusive selection depends on the direction. */ +! if (forward && ltoreq(VIsual, curwin->w_cursor)) +! inc_cursor(); +! else if (!forward && ltoreq(curwin->w_cursor, VIsual)) +! inc(&VIsual); +! } +! + } + + #ifdef FEAT_FOLDING +*** ../vim-7.3.672/src/version.c 2012-09-21 14:00:05.000000000 +0200 +--- src/version.c 2012-10-03 13:31:45.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 673, + /**/ + +-- +You can be stopped by the police for biking over 65 miles per hour. +You are not allowed to walk across a street on your hands. + [real standing laws in Connecticut, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// From d09d5af6e2dcb1749a27bc326a60a9721d0f4044 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:28 +0200 Subject: [PATCH 36/46] - patchlevel 674 --- 7.3.674 | 286 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 286 insertions(+) create mode 100644 7.3.674 diff --git a/7.3.674 b/7.3.674 new file mode 100644 index 00000000..ea3dc8d2 --- /dev/null +++ b/7.3.674 @@ -0,0 +1,286 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.674 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.674 +Problem: Can't compile with Lua/dyn on Cygwin. +Solution: Adjust configure to use the right library name. (Ken Takata) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.673/src/configure.in 2012-09-21 13:26:44.000000000 +0200 +--- src/configure.in 2012-10-03 14:39:42.000000000 +0200 +*************** +*** 455,485 **** + + LUA_INC= + if test "X$vi_cv_path_lua_pfx" != "X"; then + AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include) + if test -f $vi_cv_path_lua_pfx/include/lua.h; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) +! dnl -- try to find Lua executable +! AC_PATH_PROG(vi_cv_path_lua, lua) +! if test "X$vi_cv_path_lua" != "X"; then +! dnl -- find Lua version +! AC_CACHE_CHECK(Lua version, vi_cv_version_lua, +! [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ]) +! AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua) +! if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then +! AC_MSG_RESULT(yes) +! LUA_INC=/lua$vi_cv_version_lua +! else +! AC_MSG_RESULT(no) +! vi_cv_path_lua_pfx= +! fi + fi + fi + fi + + if test "X$vi_cv_path_lua_pfx" != "X"; then +! if test "X$vi_cv_version_lua" != "X"; then + dnl Test alternate location using version + LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua" + else +--- 455,485 ---- + + LUA_INC= + if test "X$vi_cv_path_lua_pfx" != "X"; then ++ dnl -- try to find Lua executable ++ AC_PATH_PROG(vi_cv_path_lua, lua) ++ if test "X$vi_cv_path_lua" != "X"; then ++ dnl -- find Lua version ++ AC_CACHE_CHECK(Lua version, vi_cv_version_lua, ++ [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ]) ++ fi + AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include) + if test -f $vi_cv_path_lua_pfx/include/lua.h; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) +! AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua) +! if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then +! AC_MSG_RESULT(yes) +! LUA_INC=/lua$vi_cv_version_lua +! else +! AC_MSG_RESULT(no) +! vi_cv_path_lua_pfx= + fi + fi + fi + + if test "X$vi_cv_path_lua_pfx" != "X"; then +! if test "X$LUA_INC" != "X"; then + dnl Test alternate location using version + LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua" + else +*************** +*** 491,507 **** + LUA_PRO="if_lua.pro" + AC_DEFINE(FEAT_LUA) + if test "$enable_luainterp" = "dynamic"; then +! 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 i in 0 1 2 3 4 5 6 7 8 9; do +! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then +! LUA_SONAME=".$i" +! break +! fi +! done + AC_DEFINE(DYNAMIC_LUA) + LUA_LIBS="" +! LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS" + fi + fi + if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then +--- 491,512 ---- + LUA_PRO="if_lua.pro" + AC_DEFINE(FEAT_LUA) + if test "$enable_luainterp" = "dynamic"; then +! 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 i in 0 1 2 3 4 5 6 7 8 9; do +! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then +! LUA_SONAME=".$i" +! break +! fi +! done +! vi_cv_dll_name_lua="liblua${vi_cv_version_lua}.so$LUA_SONAME" +! fi + AC_DEFINE(DYNAMIC_LUA) + LUA_LIBS="" +! LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS" + fi + fi + if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then +*** ../vim-7.3.673/src/auto/configure 2012-09-21 13:26:44.000000000 +0200 +--- src/auto/configure 2012-10-03 14:42:13.000000000 +0200 +*************** +*** 4648,4662 **** + + LUA_INC= + if test "X$vi_cv_path_lua_pfx" != "X"; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include" >&5 +! $as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include... " >&6; } +! if test -f $vi_cv_path_lua_pfx/include/lua.h; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +! $as_echo "yes" >&6; } +! else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +! $as_echo "no" >&6; } +! # Extract the first word of "lua", so it can be a program name with args. + set dummy lua; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +--- 4648,4654 ---- + + LUA_INC= + if test "X$vi_cv_path_lua_pfx" != "X"; then +! # Extract the first word of "lua", so it can be a program name with args. + set dummy lua; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +*************** +*** 4696,4703 **** + fi + + +! if test "X$vi_cv_path_lua" != "X"; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version" >&5 + $as_echo_n "checking Lua version... " >&6; } + if test "${vi_cv_version_lua+set}" = set; then : + $as_echo_n "(cached) " >&6 +--- 4688,4695 ---- + fi + + +! if test "X$vi_cv_path_lua" != "X"; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version" >&5 + $as_echo_n "checking Lua version... " >&6; } + if test "${vi_cv_version_lua+set}" = set; then : + $as_echo_n "(cached) " >&6 +*************** +*** 4706,4728 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_lua" >&5 + $as_echo "$vi_cv_version_lua" >&6; } +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua" >&5 + $as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua... " >&6; } +! if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +! LUA_INC=/lua$vi_cv_version_lua +! else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } +! vi_cv_path_lua_pfx= +! fi + fi + fi + fi + + if test "X$vi_cv_path_lua_pfx" != "X"; then +! if test "X$vi_cv_version_lua" != "X"; then + LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua" + else + LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua" +--- 4698,4728 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_lua" >&5 + $as_echo "$vi_cv_version_lua" >&6; } +! fi +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include" >&5 +! $as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include... " >&6; } +! if test -f $vi_cv_path_lua_pfx/include/lua.h; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +! $as_echo "yes" >&6; } +! else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +! $as_echo "no" >&6; } +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua" >&5 + $as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua... " >&6; } +! if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +! LUA_INC=/lua$vi_cv_version_lua +! else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } +! vi_cv_path_lua_pfx= + fi + fi + fi + + if test "X$vi_cv_path_lua_pfx" != "X"; then +! if test "X$LUA_INC" != "X"; then + LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua" + else + LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua" +*************** +*** 4734,4749 **** + $as_echo "#define FEAT_LUA 1" >>confdefs.h + + if test "$enable_luainterp" = "dynamic"; then +! for i in 0 1 2 3 4 5 6 7 8 9; do +! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then +! LUA_SONAME=".$i" +! break +! fi +! done + $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h + + LUA_LIBS="" +! LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS" + fi + fi + if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then +--- 4734,4754 ---- + $as_echo "#define FEAT_LUA 1" >>confdefs.h + + if test "$enable_luainterp" = "dynamic"; then +! 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 i in 0 1 2 3 4 5 6 7 8 9; do +! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then +! LUA_SONAME=".$i" +! break +! fi +! done +! vi_cv_dll_name_lua="liblua${vi_cv_version_lua}.so$LUA_SONAME" +! fi + $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h + + LUA_LIBS="" +! LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS" + fi + fi + if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then +*** ../vim-7.3.673/src/version.c 2012-10-03 13:35:45.000000000 +0200 +--- src/version.c 2012-10-03 14:44:56.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 674, + /**/ + +-- +The Law, in its majestic equality, forbids the rich, as well as the +poor, to sleep under the bridges, to beg in the streets, and to steal +bread. -- Anatole France + + /// 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 /// From bfd8a19b3724af380eb520dd580216149c8a5141 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:30 +0200 Subject: [PATCH 37/46] - patchlevel 675 --- 7.3.675 | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 7.3.675 diff --git a/7.3.675 b/7.3.675 new file mode 100644 index 00000000..7106917f --- /dev/null +++ b/7.3.675 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.675 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.675 +Problem: Using uninitialized memory with very long file name. +Solution: Put NUL after text when it is truncated. (ZyX) +Files: src/buffer.c + + +*** ../vim-7.3.674/src/buffer.c 2012-09-05 13:30:22.000000000 +0200 +--- src/buffer.c 2012-10-03 16:25:12.000000000 +0200 +*************** +*** 3058,3064 **** + + *p++ = '"'; + if (buf_spname(curbuf) != NULL) +! STRCPY(p, buf_spname(curbuf)); + else + { + if (!fullname && curbuf->b_fname != NULL) +--- 3058,3064 ---- + + *p++ = '"'; + if (buf_spname(curbuf) != NULL) +! vim_strncpy(p, buf_spname(curbuf), IOSIZE - (p - buffer) - 1); + else + { + if (!fullname && curbuf->b_fname != NULL) +*** ../vim-7.3.674/src/version.c 2012-10-03 14:48:03.000000000 +0200 +--- src/version.c 2012-10-03 16:29:28.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 675, + /**/ + +-- +It is illegal to rob a bank and then shoot at the bank teller with a water +pistol. + [real standing law in Louisana, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// From d4a36b0c9d3facb2f6b079d32fe92336e13b74a8 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:31 +0200 Subject: [PATCH 38/46] - patchlevel 676 --- 7.3.676 | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 7.3.676 diff --git a/7.3.676 b/7.3.676 new file mode 100644 index 00000000..40d6f3d0 --- /dev/null +++ b/7.3.676 @@ -0,0 +1,77 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.676 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.676 +Problem: Ruby compilation on Windows 32 bit doesn't work. +Solution: Only use some functions for 64 bit. (Ken Takata) +Files: src/if_ruby.c + + +*** ../vim-7.3.675/src/if_ruby.c 2012-09-18 16:36:26.000000000 +0200 +--- src/if_ruby.c 2012-10-03 17:55:58.000000000 +0200 +*************** +*** 178,186 **** +--- 178,188 ---- + #define rb_hash_new dll_rb_hash_new + #define rb_inspect dll_rb_inspect + #define rb_int2inum dll_rb_int2inum ++ #if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ + #define rb_fix2int dll_rb_fix2int + #define rb_num2int dll_rb_num2int + #define rb_num2uint dll_rb_num2uint ++ #endif + #define rb_lastline_get dll_rb_lastline_get + #define rb_lastline_set dll_rb_lastline_set + #define rb_load_protect dll_rb_load_protect +*************** +*** 271,279 **** +--- 273,283 ---- + static VALUE (*dll_rb_hash_new) (void); + static VALUE (*dll_rb_inspect) (VALUE); + static VALUE (*dll_rb_int2inum) (long); ++ #if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ + static long (*dll_rb_fix2int) (VALUE); + static long (*dll_rb_num2int) (VALUE); + static unsigned long (*dll_rb_num2uint) (VALUE); ++ #endif + static VALUE (*dll_rb_lastline_get) (void); + static void (*dll_rb_lastline_set) (VALUE); + static void (*dll_rb_load_protect) (VALUE, int, int*); +*************** +*** 382,390 **** +--- 386,396 ---- + {"rb_hash_new", (RUBY_PROC*)&dll_rb_hash_new}, + {"rb_inspect", (RUBY_PROC*)&dll_rb_inspect}, + {"rb_int2inum", (RUBY_PROC*)&dll_rb_int2inum}, ++ #if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ + {"rb_fix2int", (RUBY_PROC*)&dll_rb_fix2int}, + {"rb_num2int", (RUBY_PROC*)&dll_rb_num2int}, + {"rb_num2uint", (RUBY_PROC*)&dll_rb_num2uint}, ++ #endif + {"rb_lastline_get", (RUBY_PROC*)&dll_rb_lastline_get}, + {"rb_lastline_set", (RUBY_PROC*)&dll_rb_lastline_set}, + {"rb_load_protect", (RUBY_PROC*)&dll_rb_load_protect}, +*** ../vim-7.3.675/src/version.c 2012-10-03 17:12:43.000000000 +0200 +--- src/version.c 2012-10-03 17:52:11.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 676, + /**/ + +-- +Why don't cannibals eat clowns? +Because they taste funny. + + /// 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 /// From fdc6798bb926a67bd64e06e7f743fa32dbb92047 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:32 +0200 Subject: [PATCH 39/46] - patchlevel 677 --- 7.3.677 | 268 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 7.3.677 diff --git a/7.3.677 b/7.3.677 new file mode 100644 index 00000000..bf6e91f5 --- /dev/null +++ b/7.3.677 @@ -0,0 +1,268 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.677 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.677 +Problem: buf_spname() is used inconsistently. +Solution: Make the return type a char_u pointer. Check the size of the + returned string. +Files: src/buffer.c, src/proto/buffer.pro, src/ex_cmds2.c, + src/ex_docmd.c, src/memline.c, src/screen.c + + +*** ../vim-7.3.676/src/buffer.c 2012-10-03 17:12:43.000000000 +0200 +--- src/buffer.c 2012-10-03 18:14:34.000000000 +0200 +*************** +*** 2635,2641 **** + continue; + msg_putchar('\n'); + if (buf_spname(buf) != NULL) +! STRCPY(NameBuff, buf_spname(buf)); + else + home_replace(buf, buf->b_fname, NameBuff, MAXPATHL, TRUE); + +--- 2635,2641 ---- + continue; + msg_putchar('\n'); + if (buf_spname(buf) != NULL) +! vim_strncpy(NameBuff, buf_spname(buf), MAXPATHL - 1); + else + home_replace(buf, buf->b_fname, NameBuff, MAXPATHL, TRUE); + +*************** +*** 3350,3356 **** + else + { + if (buf_spname(curbuf) != NULL) +! i_name = (char_u *)buf_spname(curbuf); + else /* use file name only in icon */ + i_name = gettail(curbuf->b_ffname); + *i_str = NUL; +--- 3350,3356 ---- + else + { + if (buf_spname(curbuf) != NULL) +! i_name = buf_spname(curbuf); + else /* use file name only in icon */ + i_name = gettail(curbuf->b_ffname); + *i_str = NUL; +*************** +*** 3766,3772 **** + case STL_FILENAME: + fillable = FALSE; /* don't change ' ' to fillchar */ + if (buf_spname(wp->w_buffer) != NULL) +! STRCPY(NameBuff, buf_spname(wp->w_buffer)); + else + { + t = (opt == STL_FULLPATH) ? wp->w_buffer->b_ffname +--- 3766,3772 ---- + case STL_FILENAME: + fillable = FALSE; /* don't change ' ' to fillchar */ + if (buf_spname(wp->w_buffer) != NULL) +! vim_strncpy(NameBuff, buf_spname(wp->w_buffer), MAXPATHL - 1); + else + { + t = (opt == STL_FULLPATH) ? wp->w_buffer->b_ffname +*************** +*** 5244,5250 **** + * Return special buffer name. + * Returns NULL when the buffer has a normal file name. + */ +! char * + buf_spname(buf) + buf_T *buf; + { +--- 5244,5250 ---- + * Return special buffer name. + * Returns NULL when the buffer has a normal file name. + */ +! char_u * + buf_spname(buf) + buf_T *buf; + { +*************** +*** 5263,5271 **** + goto win_found; + win_found: + if (win != NULL && win->w_llist_ref != NULL) +! return _(msg_loclist); + else +! return _(msg_qflist); + } + #endif + #ifdef FEAT_QUICKFIX +--- 5263,5271 ---- + goto win_found; + win_found: + if (win != NULL && win->w_llist_ref != NULL) +! return (char_u *)_(msg_loclist); + else +! return (char_u *)_(msg_qflist); + } + #endif + #ifdef FEAT_QUICKFIX +*************** +*** 5274,5285 **** + if (bt_nofile(buf)) + { + if (buf->b_sfname != NULL) +! return (char *)buf->b_sfname; +! return _("[Scratch]"); + } + #endif + if (buf->b_fname == NULL) +! return _("[No Name]"); + return NULL; + } + +--- 5274,5285 ---- + if (bt_nofile(buf)) + { + if (buf->b_sfname != NULL) +! return buf->b_sfname; +! return (char_u *)_("[Scratch]"); + } + #endif + if (buf->b_fname == NULL) +! return (char_u *)_("[No Name]"); + return NULL; + } + +*** ../vim-7.3.676/src/proto/buffer.pro 2012-07-10 15:18:18.000000000 +0200 +--- src/proto/buffer.pro 2012-10-03 18:17:58.000000000 +0200 +*************** +*** 51,57 **** + void do_modelines __ARGS((int flags)); + int read_viminfo_bufferlist __ARGS((vir_T *virp, int writing)); + void write_viminfo_bufferlist __ARGS((FILE *fp)); +! char *buf_spname __ARGS((buf_T *buf)); + void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr)); + linenr_T buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr)); + int buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type)); +--- 51,57 ---- + void do_modelines __ARGS((int flags)); + int read_viminfo_bufferlist __ARGS((vir_T *virp, int writing)); + void write_viminfo_bufferlist __ARGS((FILE *fp)); +! char_u *buf_spname __ARGS((buf_T *buf)); + void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr)); + linenr_T buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr)); + int buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type)); +*** ../vim-7.3.676/src/ex_cmds2.c 2012-06-29 12:57:03.000000000 +0200 +--- src/ex_cmds2.c 2012-10-03 18:15:26.000000000 +0200 +*************** +*** 1688,1695 **** + msg_didout = FALSE; + } + if (EMSG2(_("E162: No write since last change for buffer \"%s\""), +! buf_spname(buf) != NULL ? (char_u *)buf_spname(buf) : +! buf->b_fname)) + { + save = no_wait_return; + no_wait_return = FALSE; +--- 1688,1694 ---- + msg_didout = FALSE; + } + if (EMSG2(_("E162: No write since last change for buffer \"%s\""), +! buf_spname(buf) != NULL ? buf_spname(buf) : buf->b_fname)) + { + save = no_wait_return; + no_wait_return = FALSE; +*** ../vim-7.3.676/src/ex_docmd.c 2012-09-18 16:47:00.000000000 +0200 +--- src/ex_docmd.c 2012-10-03 18:15:47.000000000 +0200 +*************** +*** 7602,7608 **** + msg_putchar(bufIsChanged(wp->w_buffer) ? '+' : ' '); + msg_putchar(' '); + if (buf_spname(wp->w_buffer) != NULL) +! STRCPY(IObuff, buf_spname(wp->w_buffer)); + else + home_replace(wp->w_buffer, wp->w_buffer->b_fname, + IObuff, IOSIZE, TRUE); +--- 7602,7608 ---- + msg_putchar(bufIsChanged(wp->w_buffer) ? '+' : ' '); + msg_putchar(' '); + if (buf_spname(wp->w_buffer) != NULL) +! vim_strncpy(IObuff, buf_spname(wp->w_buffer), IOSIZE - 1); + else + home_replace(wp->w_buffer, wp->w_buffer->b_fname, + IObuff, IOSIZE, TRUE); +*** ../vim-7.3.676/src/memline.c 2011-10-26 11:44:15.000000000 +0200 +--- src/memline.c 2012-10-03 18:18:23.000000000 +0200 +*************** +*** 780,788 **** + need_wait_return = TRUE; /* call wait_return later */ + ++no_wait_return; + (void)EMSG2(_("E303: Unable to open swap file for \"%s\", recovery impossible"), +! buf_spname(buf) != NULL +! ? (char_u *)buf_spname(buf) +! : buf->b_fname); + --no_wait_return; + } + +--- 780,786 ---- + need_wait_return = TRUE; /* call wait_return later */ + ++no_wait_return; + (void)EMSG2(_("E303: Unable to open swap file for \"%s\", recovery impossible"), +! buf_spname(buf) != NULL ? buf_spname(buf) : buf->b_fname); + --no_wait_return; + } + +*************** +*** 1315,1321 **** + smsg((char_u *)_("Using swap file \"%s\""), NameBuff); + + if (buf_spname(curbuf) != NULL) +! STRCPY(NameBuff, buf_spname(curbuf)); + else + home_replace(NULL, curbuf->b_ffname, NameBuff, MAXPATHL, TRUE); + smsg((char_u *)_("Original file \"%s\""), NameBuff); +--- 1313,1319 ---- + smsg((char_u *)_("Using swap file \"%s\""), NameBuff); + + if (buf_spname(curbuf) != NULL) +! vim_strncpy(NameBuff, buf_spname(curbuf), MAXPATHL - 1); + else + home_replace(NULL, curbuf->b_ffname, NameBuff, MAXPATHL, TRUE); + smsg((char_u *)_("Original file \"%s\""), NameBuff); +*** ../vim-7.3.676/src/screen.c 2012-08-23 18:55:50.000000000 +0200 +--- src/screen.c 2012-10-03 18:17:25.000000000 +0200 +*************** +*** 9876,9882 **** + buf_T *buf; + { + if (buf_spname(buf) != NULL) +! STRCPY(NameBuff, buf_spname(buf)); + else + home_replace(buf, buf->b_fname, NameBuff, MAXPATHL, TRUE); + trans_characters(NameBuff, MAXPATHL); +--- 9876,9882 ---- + buf_T *buf; + { + if (buf_spname(buf) != NULL) +! vim_strncpy(NameBuff, buf_spname(buf), MAXPATHL - 1); + else + home_replace(buf, buf->b_fname, NameBuff, MAXPATHL, TRUE); + trans_characters(NameBuff, MAXPATHL); +*** ../vim-7.3.676/src/version.c 2012-10-03 18:06:55.000000000 +0200 +--- src/version.c 2012-10-03 18:22:18.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 677, + /**/ + +-- +bashian roulette: +$ ((RANDOM%6)) || rm -rf ~ + + /// 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 /// From 65f419e2c4b5ac9cdebdc22927b61051f1cf306c Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:33 +0200 Subject: [PATCH 40/46] - patchlevel 678 --- 7.3.678 | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 7.3.678 diff --git a/7.3.678 b/7.3.678 new file mode 100644 index 00000000..5f20da01 --- /dev/null +++ b/7.3.678 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.678 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.678 +Problem: Ruby .so name may not be correct. +Solution: Use the LIBRUBY_SO entry from the config. (Vit Ondruch) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.677/src/configure.in 2012-10-03 14:48:03.000000000 +0200 +--- src/configure.in 2012-10-03 18:38:24.000000000 +0200 +*************** +*** 1487,1493 **** + RUBY_PRO="if_ruby.pro" + AC_DEFINE(FEAT_RUBY) + if test "$enable_rubyinterp" = "dynamic"; then +! libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'` + AC_DEFINE(DYNAMIC_RUBY) + RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" + RUBY_LIBS= +--- 1487,1493 ---- + RUBY_PRO="if_ruby.pro" + AC_DEFINE(FEAT_RUBY) + if test "$enable_rubyinterp" = "dynamic"; then +! libruby=`$vi_cv_path_ruby -r rbconfig -e 'puts Config::CONFIG[["LIBRUBY_SO"]]'` + AC_DEFINE(DYNAMIC_RUBY) + RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" + RUBY_LIBS= +*** ../vim-7.3.677/src/auto/configure 2012-10-03 14:48:03.000000000 +0200 +--- src/auto/configure 2012-10-03 18:40:48.000000000 +0200 +*************** +*** 6376,6382 **** + $as_echo "#define FEAT_RUBY 1" >>confdefs.h + + if test "$enable_rubyinterp" = "dynamic"; then +! libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG["RUBY_SO_NAME"], Config::CONFIG["DLEXT"]'` + $as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h + + RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" +--- 6376,6382 ---- + $as_echo "#define FEAT_RUBY 1" >>confdefs.h + + if test "$enable_rubyinterp" = "dynamic"; then +! libruby=`$vi_cv_path_ruby -r rbconfig -e 'puts Config::CONFIG["LIBRUBY_SO"]'` + $as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h + + RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" +*** ../vim-7.3.677/src/version.c 2012-10-03 18:24:55.000000000 +0200 +--- src/version.c 2012-10-03 18:49:09.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 678, + /**/ + +-- +Snoring is prohibited unless all bedroom windows are closed and securely +locked. + [real standing law in Massachusetts, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// From ce843e570699a7aff5ecd58e2c96cfce0b80fab6 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:35 +0200 Subject: [PATCH 41/46] - patchlevel 679 --- 7.3.679 | 230 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 7.3.679 diff --git a/7.3.679 b/7.3.679 new file mode 100644 index 00000000..f95bf5ea --- /dev/null +++ b/7.3.679 @@ -0,0 +1,230 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.679 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.679 +Problem: Ruby detection uses Config, newer Ruby versions use RbConfig. +Solution: Detect the need to use RbConfig. (Vit Ondruch) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.678/src/configure.in 2012-10-03 18:49:55.000000000 +0200 +--- src/configure.in 2012-10-03 18:50:48.000000000 +0200 +*************** +*** 1442,1465 **** + AC_MSG_CHECKING(Ruby version) + if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then + AC_MSG_RESULT(OK) + AC_MSG_CHECKING(Ruby header files) +! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null` + if test "X$rubyhdrdir" != "X"; then + AC_MSG_RESULT($rubyhdrdir) + RUBY_CFLAGS="-I$rubyhdrdir" +! rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'` + if test -d "$rubyhdrdir/$rubyarch"; then + RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" + fi +! rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'` + RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" +! rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'` + if test "X$rubylibs" != "X"; then + RUBY_LIBS="$rubylibs" + fi +! librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'` +! librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'` +! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'` + if test -f "$rubylibdir/$librubya"; then + librubyarg="$librubyarg" + RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" +--- 1442,1471 ---- + AC_MSG_CHECKING(Ruby version) + if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then + AC_MSG_RESULT(OK) ++ AC_MSG_CHECKING(Ruby rbconfig) ++ ruby_rbconfig="RbConfig" ++ if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then ++ ruby_rbconfig="Config" ++ fi ++ AC_MSG_RESULT($ruby_rbconfig) + AC_MSG_CHECKING(Ruby header files) +! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e "print $ruby_rbconfig::CONFIG[['rubyhdrdir']] || $ruby_rbconfig::CONFIG[['archdir']] || \\$hdrdir" 2>/dev/null` + if test "X$rubyhdrdir" != "X"; then + AC_MSG_RESULT($rubyhdrdir) + RUBY_CFLAGS="-I$rubyhdrdir" +! rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"` + if test -d "$rubyhdrdir/$rubyarch"; then + RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" + fi +! rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"` + RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" +! rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"` + if test "X$rubylibs" != "X"; then + RUBY_LIBS="$rubylibs" + fi +! librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"` +! librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"` +! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"` + if test -f "$rubylibdir/$librubya"; then + librubyarg="$librubyarg" + RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" +*************** +*** 1472,1478 **** + if test "X$librubyarg" != "X"; then + RUBY_LIBS="$librubyarg $RUBY_LIBS" + fi +! rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'` + if test "X$rubyldflags" != "X"; then + dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only + dnl be included if requested by passing --with-mac-arch to +--- 1478,1484 ---- + if test "X$librubyarg" != "X"; then + RUBY_LIBS="$librubyarg $RUBY_LIBS" + fi +! rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"` + if test "X$rubyldflags" != "X"; then + dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only + dnl be included if requested by passing --with-mac-arch to +*************** +*** 1487,1493 **** + RUBY_PRO="if_ruby.pro" + AC_DEFINE(FEAT_RUBY) + if test "$enable_rubyinterp" = "dynamic"; then +! libruby=`$vi_cv_path_ruby -r rbconfig -e 'puts Config::CONFIG[["LIBRUBY_SO"]]'` + AC_DEFINE(DYNAMIC_RUBY) + RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" + RUBY_LIBS= +--- 1493,1499 ---- + RUBY_PRO="if_ruby.pro" + AC_DEFINE(FEAT_RUBY) + if test "$enable_rubyinterp" = "dynamic"; then +! libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"` + AC_DEFINE(DYNAMIC_RUBY) + RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" + RUBY_LIBS= +*** ../vim-7.3.678/src/auto/configure 2012-10-03 18:49:55.000000000 +0200 +--- src/auto/configure 2012-10-03 18:51:38.000000000 +0200 +*************** +*** 6332,6357 **** + if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: OK" >&5 + $as_echo "OK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Ruby header files" >&5 + $as_echo_n "checking Ruby header files... " >&6; } +! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG["rubyhdrdir"] || Config::CONFIG["archdir"] || $hdrdir' 2>/dev/null` + if test "X$rubyhdrdir" != "X"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $rubyhdrdir" >&5 + $as_echo "$rubyhdrdir" >&6; } + RUBY_CFLAGS="-I$rubyhdrdir" +! rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["arch"]'` + if test -d "$rubyhdrdir/$rubyarch"; then + RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" + fi +! rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["ruby_version"].gsub(/\./, "")[0,2]'` + RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" +! rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LIBS"]'` + if test "X$rubylibs" != "X"; then + RUBY_LIBS="$rubylibs" + fi +! librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBYARG"])'` +! librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBY_A"])'` +! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'` + if test -f "$rubylibdir/$librubya"; then + librubyarg="$librubyarg" + RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" +--- 6332,6365 ---- + if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: OK" >&5 + $as_echo "OK" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Ruby rbconfig" >&5 ++ $as_echo_n "checking Ruby rbconfig... " >&6; } ++ ruby_rbconfig="RbConfig" ++ if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then ++ ruby_rbconfig="Config" ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ruby_rbconfig" >&5 ++ $as_echo "$ruby_rbconfig" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Ruby header files" >&5 + $as_echo_n "checking Ruby header files... " >&6; } +! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e "print $ruby_rbconfig::CONFIG['rubyhdrdir'] || $ruby_rbconfig::CONFIG['archdir'] || \\$hdrdir" 2>/dev/null` + if test "X$rubyhdrdir" != "X"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $rubyhdrdir" >&5 + $as_echo "$rubyhdrdir" >&6; } + RUBY_CFLAGS="-I$rubyhdrdir" +! rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG['arch']"` + if test -d "$rubyhdrdir/$rubyarch"; then + RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" + fi +! rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG['ruby_version'].gsub(/\./, '')[0,2]"` + RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" +! rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG['LIBS']"` + if test "X$rubylibs" != "X"; then + RUBY_LIBS="$rubylibs" + fi +! librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG['LIBRUBYARG'])"` +! librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG['LIBRUBY_A'])"` +! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG['libdir'])"` + if test -f "$rubylibdir/$librubya"; then + librubyarg="$librubyarg" + RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" +*************** +*** 6363,6369 **** + if test "X$librubyarg" != "X"; then + RUBY_LIBS="$librubyarg $RUBY_LIBS" + fi +! rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LDFLAGS"]'` + if test "X$rubyldflags" != "X"; then + rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` + if test "X$rubyldflags" != "X"; then +--- 6371,6377 ---- + if test "X$librubyarg" != "X"; then + RUBY_LIBS="$librubyarg $RUBY_LIBS" + fi +! rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG['LDFLAGS']"` + if test "X$rubyldflags" != "X"; then + rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` + if test "X$rubyldflags" != "X"; then +*************** +*** 6376,6382 **** + $as_echo "#define FEAT_RUBY 1" >>confdefs.h + + if test "$enable_rubyinterp" = "dynamic"; then +! libruby=`$vi_cv_path_ruby -r rbconfig -e 'puts Config::CONFIG["LIBRUBY_SO"]'` + $as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h + + RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" +--- 6384,6390 ---- + $as_echo "#define FEAT_RUBY 1" >>confdefs.h + + if test "$enable_rubyinterp" = "dynamic"; then +! libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG['LIBRUBY_SO']"` + $as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h + + RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" +*** ../vim-7.3.678/src/version.c 2012-10-03 18:49:55.000000000 +0200 +--- src/version.c 2012-10-03 21:08:31.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 679, + /**/ + +-- +Close your shells, or I'll kill -9 you +Tomorrow I'll quota you +Remember the disks'll always be full +And then while I'm away +I'll write ~ everyday +And I'll send-pr all my buggings to you. + [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ] + + /// 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 /// From 5247819f1f832bbdffcd62aa66240b83527aa6b8 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:36 +0200 Subject: [PATCH 42/46] - patchlevel 680 --- 7.3.680 | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 7.3.680 diff --git a/7.3.680 b/7.3.680 new file mode 100644 index 00000000..537eb587 --- /dev/null +++ b/7.3.680 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.680 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.680 +Problem: Some files missing in the list of distributed files. +Solution: Add lines for new files. +Files: Filelist + + +*** ../vim-7.3.679/Filelist 2012-08-29 14:18:26.000000000 +0200 +--- Filelist 2012-09-21 14:53:59.000000000 +0200 +*************** +*** 261,266 **** +--- 261,267 ---- + src/Make_mvc.mak \ + src/Make_w16.mak \ + src/bigvim.bat \ ++ src/bigvim64.bat \ + src/msvcsetup.bat \ + src/msvc2008.bat \ + src/msvc2010.bat \ +*************** +*** 352,357 **** +--- 353,359 ---- + src/xpm/COPYRIGHT \ + src/xpm/README.txt \ + src/xpm/include/*.h \ ++ src/xpm/x64/lib/libXpm.a \ + src/xpm/x64/lib/libXpm.lib \ + src/xpm/x86/lib/libXpm.a \ + src/xpm/x86/lib/libXpm.lib \ +*************** +*** 692,697 **** +--- 694,700 ---- + runtime/tutor/tutor.utf-8 \ + runtime/tutor/tutor.?? \ + runtime/tutor/tutor.??.* \ ++ runtime/tutor/tutor.??_??.* \ + runtime/tutor/tutor.bar \ + runtime/tutor/tutor.bar.* \ + runtime/spell/README.txt \ +*** ../vim-7.3.679/src/version.c 2012-10-03 21:09:33.000000000 +0200 +--- src/version.c 2012-10-03 21:32:38.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 680, + /**/ + +-- +So when I saw the post to comp.editors, I rushed over to the FTP site to +grab it. So I yank apart the tarball, light x candles, where x= the +vim version multiplied by the md5sum of the source divided by the MAC of +my NIC (8A3FA78155A8A1D346C3C4A), put on black robes, dim the lights, +wave a dead chicken over the hard drive, and summon the power of GNU GCC +with the magic words "make config ; make!". + [Jason Spence, compiling Vim 5.0] + + /// 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 /// From 29cb0acafb18882a87d5c04ca1c1067fa4570d06 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:37 +0200 Subject: [PATCH 43/46] - patchlevel 681 --- 7.3.681 | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 7.3.681 diff --git a/7.3.681 b/7.3.681 new file mode 100644 index 00000000..7794ce09 --- /dev/null +++ b/7.3.681 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.681 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.681 (after 7.3.680) +Problem: List of distributed files picks up backup files. +Solution: Make tutor patterns more specific. +Files: Filelist + + +*** ../vim-7.3.680/Filelist 2012-10-03 21:33:37.000000000 +0200 +--- Filelist 2012-10-03 21:44:29.000000000 +0200 +*************** +*** 693,702 **** + runtime/tutor/Makefile \ + runtime/tutor/tutor.utf-8 \ + runtime/tutor/tutor.?? \ +! runtime/tutor/tutor.??.* \ +! runtime/tutor/tutor.??_??.* \ + runtime/tutor/tutor.bar \ +! runtime/tutor/tutor.bar.* \ + runtime/spell/README.txt \ + runtime/spell/??/*.diff \ + runtime/spell/??/main.aap \ +--- 693,709 ---- + runtime/tutor/Makefile \ + runtime/tutor/tutor.utf-8 \ + runtime/tutor/tutor.?? \ +! runtime/tutor/tutor.??.utf-8 \ +! runtime/tutor/tutor.??.euc \ +! runtime/tutor/tutor.??.sjis \ +! runtime/tutor/tutor.??.iso9 \ +! runtime/tutor/tutor.??.big5 \ +! runtime/tutor/tutor.??.cp1250 \ +! runtime/tutor/tutor.??.cp1251 \ +! runtime/tutor/tutor.??.cp737 \ +! runtime/tutor/tutor.??_??.utf-8 \ + runtime/tutor/tutor.bar \ +! runtime/tutor/tutor.bar.utf-8 \ + runtime/spell/README.txt \ + runtime/spell/??/*.diff \ + runtime/spell/??/main.aap \ +*** ../vim-7.3.680/src/version.c 2012-10-03 21:33:37.000000000 +0200 +--- src/version.c 2012-10-03 21:48:04.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 681, + /**/ + +-- +Zen Microsystems: we're the om in .commmmmmmmm + + /// 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 /// From e873ec2d9e2ca7e534df8c22307baff458535cc7 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:39 +0200 Subject: [PATCH 44/46] - patchlevel 682 --- 7.3.682 | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 7.3.682 diff --git a/7.3.682 b/7.3.682 new file mode 100644 index 00000000..a8e133e7 --- /dev/null +++ b/7.3.682 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.682 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.682 (after 7.3.677) +Problem: Compiler complains about incompatible types. +Solution: Remove type casts. (hint by Danek Duvall) +Files: src/edit.c + + +*** ../vim-7.3.681/src/edit.c 2012-08-08 18:01:00.000000000 +0200 +--- src/edit.c 2012-10-04 22:33:22.000000000 +0200 +*************** +*** 4194,4201 **** + ins_buf->b_fname == NULL + ? buf_spname(ins_buf) + : ins_buf->b_sfname == NULL +! ? (char *)ins_buf->b_fname +! : (char *)ins_buf->b_sfname); + (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R)); + } + else if (*e_cpt == NUL) +--- 4194,4201 ---- + ins_buf->b_fname == NULL + ? buf_spname(ins_buf) + : ins_buf->b_sfname == NULL +! ? ins_buf->b_fname +! : ins_buf->b_sfname); + (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R)); + } + else if (*e_cpt == NUL) +*** ../vim-7.3.681/src/version.c 2012-10-03 21:48:38.000000000 +0200 +--- src/version.c 2012-10-04 22:36:15.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 682, + /**/ + +-- +Dogs must have a permit signed by the mayor in order to congregate in groups +of three or more on private property. + [real standing law in Oklahoma, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// From acfd5fdb8c92736ff4c370c28d59d0ff0e714d0b Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 00:36:41 +0200 Subject: [PATCH 45/46] - patchlevel 682 --- README.patches | 44 +++++++++++++++++++++++ vim.spec | 95 ++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 137 insertions(+), 2 deletions(-) diff --git a/README.patches b/README.patches index dfe8b806..cb9e52ec 100644 --- a/README.patches +++ b/README.patches @@ -669,3 +669,47 @@ Individual patches for Vim 7.3: 4539 7.3.636 (after 7.3.625) "gn" fails for some zero-width matches 3117 7.3.637 cannot catch error caused by a foldopen when there is no fold 1783 7.3.638 unecessary redraw of the previous character + 31440 7.3.639 it's not easy to build Vim on Windows with XPM support +455297 7.3.640 binary files for 7.3.639 + 2219 7.3.641 ":mkview" uses ":normal" instead of ":normal!" for folds + 1810 7.3.642 segfault with specific autocommands + 2060 7.3.643 MS-Windows: 'lines' is wrong when starting up maximized + 1925 7.3.644 dead code for BeOS GUI + 2910 7.3.645 no tests for patch 7.3.625 and 7.3.637 + 2353 7.3.646 undo file unusable after reloading a buffer + 5213 7.3.647 "gnd" doesn't work correctly in Visual mode + 3831 7.3.648 crash when using a very long file name + 2256 7.3.649 with 'clipboard' set to "unnamed" small deletes go to "1 + 1679 7.3.650 Completing ":help \{-" gives error and messes up command line + 3120 7.3.651 Completing ":help \{-" gives error message + 2304 7.3.652 workaround for Python crash isn't perfect + 7986 7.3.653 lacking XPM support for MingW, 32 and 64 objects mixed up + 3301 7.3.654 creating Vim dictionary from Python an empty key might be used + 88812 7.3.655 64 bit MingW xpm .a file is missing + 3106 7.3.656 internal error in :pyeval + 6680 7.3.657 Python bindings silently truncate string values containing NUL + 4244 7.3.658 NUL bytes truncate strings when converted from Python + 6242 7.3.659 recent Python changes are not tested + 1448 7.3.660 ":help !" jumps to help for ":!" + 5339 7.3.661 (after 7.3.652) SEGV in Python code + 3126 7.3.662 can't build Ruby interface with Ruby 1.9.3 + 1498 7.3.663 end of color scheme name not clear in E185 + 2171 7.3.664 buffer overflow in unescaping multi-byte characters + 2414 7.3.665 MSVC 11 is not supported + 3195 7.3.666 Win32.mak can't be found + 3213 7.3.667 unused variables in Perl interface + 2763 7.3.668 loading Perl dynamically still uses static library + 4757 7.3.669 when building with Cygwin loading Python dynamically fails + 2318 7.3.670 tiny memory leak when throwing exception in Python + 8213 7.3.671 more Python code can be shared between Python 2 and 3 + 22436 7.3.672 not possible to lock/unlock lists in Python interface + 1967 7.3.673 "gN" while 'selection' is "exclusive" misses one character + 10873 7.3.674 can't compile with Lua/dyn on Cygwin + 1597 7.3.675 accessing uninitialized memory with a very long file name + 2721 7.3.676 Ruby compilation on Windows 32 bit doesn't work + 8428 7.3.677 buf_spname() is used inconsistently + 2887 7.3.678 Ruby .so name may not be correct + 11455 7.3.679 Ruby detection uses Config, newer Ruby versions use RbConfig + 2190 7.3.680 some files missing in the list of distributed files + 2014 7.3.681 list of distributed files picks up backup files + 1791 7.3.682 (after 7.3.677) compiler complains about incompatible types diff --git a/vim.spec b/vim.spec index 527c445e..f65aa0c9 100644 --- a/vim.spec +++ b/vim.spec @@ -18,13 +18,13 @@ #used for pre-releases: %define beta %{nil} %define vimdir vim73%{?beta} -%define patchlevel 638 +%define patchlevel 682 Summary: The VIM editor URL: http://www.vim.org/ Name: vim Version: %{baseversion}.%{beta}%{patchlevel} -Release: 2%{?dist} +Release: 1%{?dist} License: Vim Group: Applications/Editors Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{baseversion}%{?beta}%{?CVSDATE}.tar.bz2 @@ -694,6 +694,50 @@ Patch635: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.635 Patch636: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.636 Patch637: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.637 Patch638: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.638 +Patch639: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.639 +Patch640: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.640 +Patch641: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.641 +Patch642: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.642 +Patch643: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.643 +Patch644: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.644 +Patch645: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.645 +Patch646: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.646 +Patch647: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.647 +Patch648: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.648 +Patch649: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.649 +Patch650: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.650 +Patch651: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.651 +Patch652: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.652 +Patch653: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.653 +Patch654: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.654 +Patch655: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.655 +Patch656: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.656 +Patch657: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.657 +Patch658: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.658 +Patch659: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.659 +Patch660: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.660 +Patch661: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.661 +Patch662: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.662 +Patch663: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.663 +Patch664: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.664 +Patch665: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.665 +Patch666: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.666 +Patch667: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.667 +Patch668: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.668 +Patch669: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.669 +Patch670: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.670 +Patch671: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.671 +Patch672: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.672 +Patch673: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.673 +Patch674: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.674 +Patch675: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.675 +Patch676: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.676 +Patch677: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.677 +Patch678: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.678 +Patch679: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.679 +Patch680: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.680 +Patch681: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.681 +Patch682: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.682 Patch3000: vim-7.3-syntax.patch Patch3002: vim-7.1-nowarnings.patch @@ -1478,6 +1522,50 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk %patch636 -p0 %patch637 -p0 %patch638 -p0 +%patch639 -p0 +%patch640 -p0 +%patch641 -p0 +%patch642 -p0 +%patch643 -p0 +%patch644 -p0 +%patch645 -p0 +%patch646 -p0 +%patch647 -p0 +%patch648 -p0 +%patch649 -p0 +%patch650 -p0 +%patch651 -p0 +%patch652 -p0 +%patch653 -p0 +%patch654 -p0 +%patch655 -p0 +%patch656 -p0 +%patch657 -p0 +%patch658 -p0 +%patch659 -p0 +%patch660 -p0 +%patch661 -p0 +%patch662 -p0 +%patch663 -p0 +%patch664 -p0 +%patch665 -p0 +%patch666 -p0 +%patch667 -p0 +%patch668 -p0 +%patch669 -p0 +%patch670 -p0 +%patch671 -p0 +%patch672 -p0 +%patch673 -p0 +%patch674 -p0 +%patch675 -p0 +%patch676 -p0 +%patch677 -p0 +%patch678 -p0 +%patch679 -p0 +%patch680 -p0 +%patch681 -p0 +%patch682 -p0 # install spell files @@ -1935,6 +2023,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/icons/hicolor/*/apps/* %changelog +* Fri Oct 05 2012 Karsten Hopp 7.3.682-1 +- patchlevel 682 + * Tue Aug 28 2012 Karsten Hopp 7.3.638-2 - fix some man page typos (#668894, #675480) - own usr/share/vim/vimfiles/doc/tags (#845564) From 20a9c5ed5805cc84ca54cc020e2cc0e57d434c18 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Fri, 5 Oct 2012 01:10:55 +0200 Subject: [PATCH 46/46] use --enable-rubyinterp=dynamic and --enable-pythoninterp=dynamic --- vim.spec | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/vim.spec b/vim.spec index f65aa0c9..927813fc 100644 --- a/vim.spec +++ b/vim.spec @@ -1596,7 +1596,9 @@ mv -f Makefile.tmp Makefile export CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2" export CXXFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2" -%configure --with-features=huge --enable-pythoninterp --enable-perlinterp \ +%configure --with-features=huge \ + --enable-pythoninterp=dynamic \ + --enable-perlinterp \ --disable-tclinterp --with-x=yes \ --enable-xim --enable-multibyte \ --with-tlib=ncurses \ @@ -1614,7 +1616,7 @@ export CXXFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_ --disable-selinux \ %endif %if "%{withruby}" == "1" - --enable-rubyinterp \ + --enable-rubyinterp=dynamic \ %else --disable-rubyinterp \ %endif @@ -1623,8 +1625,11 @@ make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir} %{?_smp_mflags} cp vim gvim make clean -%configure --prefix=%{_prefix} --with-features=huge --enable-pythoninterp \ - --enable-perlinterp --disable-tclinterp --with-x=no \ +%configure --prefix=%{_prefix} --with-features=huge \ + --enable-pythoninterp=dynamic \ + --enable-perlinterp \ + --disable-tclinterp \ + --with-x=no \ --enable-gui=no --exec-prefix=%{_prefix} --enable-multibyte \ --enable-cscope --with-modified-by="" \ --with-tlib=ncurses \ @@ -1640,7 +1645,7 @@ make clean --disable-selinux \ %endif %if "%{withruby}" == "1" - --enable-rubyinterp \ + --enable-rubyinterp=dynamic \ %else --disable-rubyinterp \ %endif @@ -2025,6 +2030,7 @@ rm -rf $RPM_BUILD_ROOT %changelog * Fri Oct 05 2012 Karsten Hopp 7.3.682-1 - patchlevel 682 +- use --enable-rubyinterp=dynamic and --enable-pythoninterp=dynamic * Tue Aug 28 2012 Karsten Hopp 7.3.638-2 - fix some man page typos (#668894, #675480)