diff options
Diffstat (limited to 'source/ap')
541 files changed, 88593 insertions, 419 deletions
diff --git a/source/ap/alsa-utils/alsa-utils.SlackBuild b/source/ap/alsa-utils/alsa-utils.SlackBuild index 77664487..3e642d08 100755 --- a/source/ap/alsa-utils/alsa-utils.SlackBuild +++ b/source/ap/alsa-utils/alsa-utils.SlackBuild @@ -63,7 +63,7 @@ cd $TMP rm -rf alsa-utils-$VERSION tar xvf $CWD/alsa-utils-$VERSION.tar.?z* || exit 1 cd alsa-utils-$VERSION || exit 1 -zcat $CWD/alsa-utils.alsaconf.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit +#zcat $CWD/alsa-utils.alsaconf.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit chown -R root:root . find . \ @@ -78,6 +78,7 @@ CFLAGS="$SLKCFLAGS" \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --mandir=/usr/man \ --sysconfdir=/etc \ + --disable-alsaconf \ --build=$ARCH-slackware-linux make $NUMJOBS || make || exit 1 diff --git a/source/ap/cdrdao/cdrdao-1.2.3-stat.patch b/source/ap/cdrdao/cdrdao-1.2.3-stat.patch new file mode 100644 index 00000000..5a68e713 --- /dev/null +++ b/source/ap/cdrdao/cdrdao-1.2.3-stat.patch @@ -0,0 +1,13 @@ +diff -up cdrdao-1.2.3/dao/ScsiIf-linux.cc.stat cdrdao-1.2.3/dao/ScsiIf-linux.cc +--- cdrdao-1.2.3/dao/ScsiIf-linux.cc.stat 2010-01-20 20:11:36.000000000 +0100 ++++ cdrdao-1.2.3/dao/ScsiIf-linux.cc 2010-01-20 20:14:07.000000000 +0100 +@@ -19,6 +19,9 @@ + + #include <config.h> + ++#include <sys/types.h> ++#include <sys/stat.h> ++ + #include <stdio.h> + #include <fcntl.h> + #include <unistd.h> diff --git a/source/ap/cdrdao/cdrdao.SlackBuild b/source/ap/cdrdao/cdrdao.SlackBuild index 95216d51..fe3c5b7d 100755 --- a/source/ap/cdrdao/cdrdao.SlackBuild +++ b/source/ap/cdrdao/cdrdao.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA +# Copyright 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -22,7 +22,7 @@ VERSION=1.2.3 -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -61,6 +61,9 @@ cd $TMP rm -rf cdrdao-$VERSION tar xvf $CWD/cdrdao-$VERSION.tar.?z* || exit 1 cd cdrdao-$VERSION + +zcat $CWD/cdrdao-1.2.3-stat.patch.gz | patch -p1 --verbose || exit 1 + chown -R root:root . find . \ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ diff --git a/source/ap/diffutils/diffutils.SlackBuild b/source/ap/diffutils/diffutils.SlackBuild index f338b71d..2287abb2 100755 --- a/source/ap/diffutils/diffutils.SlackBuild +++ b/source/ap/diffutils/diffutils.SlackBuild @@ -22,7 +22,7 @@ PKGNAM=diffutils -VERSION=3.0 +VERSION=${VERSION:-$(echo diffutils-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: diff --git a/source/ap/dmapi/slack-desc b/source/ap/dmapi/slack-desc index c5acf491..9cbfcfa9 100644 --- a/source/ap/dmapi/slack-desc +++ b/source/ap/dmapi/slack-desc @@ -10,7 +10,7 @@ dmapi: dmapi (Data Management API library) dmapi: dmapi: A library required to use the Data Management API (DMAPI). dmapi: This interface is defined in the X/Open document 'Systems Management: -dmapi: Data Storage Managment (XDSM) API' dated February 1997. +dmapi: Data Storage Management (XDSM) API' dated February 1997. dmapi: dmapi: The DMAPI library is used by the xfsdump utility. dmapi: diff --git a/source/ap/ghostscript/ghostscript.SlackBuild b/source/ap/ghostscript/ghostscript.SlackBuild index ff9fac9e..4afef964 100755 --- a/source/ap/ghostscript/ghostscript.SlackBuild +++ b/source/ap/ghostscript/ghostscript.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -23,7 +23,7 @@ PKGNAM=ghostscript VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-2} +BUILD=${BUILD:-3} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -60,10 +60,7 @@ rm -rf ${PKGNAM}-${VERSION} tar xvf $CWD/${PKGNAM}-$VERSION.tar.xz || exit 1 cd ${PKGNAM}-$VERSION -# Bugfix: -zcat $CWD/ghostscript.rev11948.diff.gz | patch -p1 --verbose || exit 1 - -## Regenerate ./configure: +## Regenerate ./configure (if patched): #sh autogen.sh # Make sure ownerships and permissions are sane: @@ -104,6 +101,8 @@ CFLAGS="$SLKCFLAGS" \ --with-ijs \ --disable-compile-inits \ --enable-dynamic \ + --enable-cups \ + --with-install-cups \ --enable-cairo=no \ --program-prefix= \ --program-suffix= \ @@ -124,6 +123,13 @@ if [ -r $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap ]; then zcat $CWD/cidfmap.gz > $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap.new fi +# Many programs expect to find this filter with the old name: +( cd $PKG/usr/lib${LIBDIRSUFFIX}/cups/filter + if [ ! -e pstoraster ]; then + ln -sf gstoraster pstoraster + fi +) + # Strip binaries: ( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null @@ -164,6 +170,17 @@ mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION ln -sf /usr/share/ghostscript/$VERSION/doc doc ) +# Version 9.02 fails to install History9.htm, but also the full unabridged +# history of Ghostscript is not required here. See the source for that. +( cd doc + cp -a \ + History*.htm \ + $PKG/usr/share/ghostscript/$VERSION/doc + rm -f $PKG/usr/share/ghostscript/$VERSION/doc/History{1,2,3,4,5,6,7,8}.htm + chown root:root $PKG/usr/share/ghostscript/$VERSION/doc/History*htm + chmod 644 $PKG/usr/share/ghostscript/$VERSION/doc/History*htm +) + cd $TMP cp -a ${PKGNAM}-${VERSION}/examples/cjk $PKG/usr/share/ghostscript/${VERSION}/examples/ diff --git a/source/ap/ghostscript/ghostscript.rev11948.diff b/source/ap/ghostscript/ghostscript.rev11948.diff deleted file mode 100644 index cc45c154..00000000 --- a/source/ap/ghostscript/ghostscript.rev11948.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- ./base/gximag3x.c.orig 2010-08-10 11:20:19.000000000 -0500 -+++ ./base/gximag3x.c 2010-12-28 13:24:54.000000000 -0600 -@@ -241,7 +241,9 @@ - const gs_image3x_mask_t *pixm = - (i == 0 ? &pim->Opacity : &pim->Shape); - -- *(gs_data_image_t *)&mask[i].image = pixm->MaskDict; -+ /* Use memcpy because direct assignment breaks ANSI aliasing */ -+ /* rules and causes SEGV with gcc 4.5.1 */ -+ memcpy(&mask[i].image, &pixm->MaskDict, sizeof(pixm->MaskDict)); - mask[i].image.type = type1; - mask[i].image.BitsPerComponent = pixm->MaskDict.BitsPerComponent; - } diff --git a/source/ap/ntfsprogs/ntfsprogs.SlackBuild b/source/ap/htop/htop.SlackBuild index 5c83bd21..b27481e9 100755 --- a/source/ap/ntfsprogs/ntfsprogs.SlackBuild +++ b/source/ap/htop/htop.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2011 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -20,9 +20,10 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -PKGNAM=ntfsprogs -VERSION=${VERSION:-2.0.0} -BUILD=${BUILD:-2} + +PKGNAM=htop +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -52,17 +53,15 @@ fi CWD=$(pwd) TMP=${TMP:-/tmp} -PKG=$TMP/package-${PKGNAM} +PKG=$TMP/package-$PKGNAM rm -rf $PKG mkdir -p $TMP $PKG cd $TMP -rm -rf ${PKGNAM}-${VERSION} -tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1 -cd ${PKGNAM}-$VERSION || exit 1 - -# Make sure ownerships and permissions are sane: +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1 +cd $PKGNAM-$VERSION chown -R root:root . find . \ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ @@ -70,29 +69,19 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -# Configure: CFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ - --libdir=/usr/lib${LIBDIRSUFFIX} \ - --bindir=/bin \ --sysconfdir=/etc \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ --mandir=/usr/man \ --docdir=/usr/doc/$PKGNAM-$VERSION \ - --disable-gnome-vfs \ - --disable-ntfsmount \ --disable-static \ --build=$ARCH-slackware-linux -# Build and install: make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG || exit 1 -mkdir -p $PKG/lib${LIBDIRSUFFIX} -mv $PKG/usr/lib${LIBDIRSUFFIX}/libntfs.so.* $PKG/lib${LIBDIRSUFFIX} -( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf ../../lib${LIBDIRSUFFIX}/libntfs* . ) - -# Strip binaries: find $PKG | xargs file | grep -e "executable" -e "shared object" \ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null @@ -105,30 +94,29 @@ if [ -d $PKG/usr/man ]; then ln -s $( readlink $eachpage ).gz $eachpage.gz rm $eachpage done - gzip -9 *.* + gzip -9 *.? ) done ) fi -# Compress info files, if any: -if [ -d $PKG/usr/info ]; then - ( cd $PKG/usr/info - rm -f dir - gzip -9 * - ) -fi - -# Add a documentation directory: -mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +# Install documentation: +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION cp -a \ - AUTHORS COPYING* CREDITS INSTALL NEWS README TODO* doc \ - $PKG/usr/doc/${PKGNAM}-$VERSION -rm -f $PKG/usr/doc/${PKGNAM}-$VERSION/doc/Makefile* + AUTHORS COPYING* NEWS README* TODO \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cd $PKG -/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/source/ap/htop/slack-desc b/source/ap/htop/slack-desc new file mode 100644 index 00000000..039b7195 --- /dev/null +++ b/source/ap/htop/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +htop: htop (ncurses-based interactive process viewer) +htop: +htop: htop is a free (GPL) ncurses-based process viewer that is similar to +htop: the well-known "top" program, but allows to scroll the list vertically +htop: and horizontally to see all processes and their full command lines. +htop: Tasks related to processes (killing, renicing) can be done without +htop: entering their PIDs. +htop: +htop: htop is developed by Hisham Muhammad. +htop: Homepage: http://htop.sf.net +htop: diff --git a/source/ap/linuxdoc-tools/ChangeLog.txt b/source/ap/linuxdoc-tools/ChangeLog.txt index 16d8783f..0c971b35 100644 --- a/source/ap/linuxdoc-tools/ChangeLog.txt +++ b/source/ap/linuxdoc-tools/ChangeLog.txt @@ -1,3 +1,28 @@ +Fri Jun 29 17:34:25 BST 2012 + Stuart Winter <mozes@slackware.com> + linuxdoc-tools 0.9.67, build 2. + * Made a compatibility symlink between + /usr/share/xml/docbook/stylesheet/docbook-xsl -> /usr/share/xml/docbook/xsl-stylesheets-<ver> + Thanks to Patrick Verner for the suggestion. + +Mon May 28 21:40:41 BST 2012 + Stuart Winter <mozes@slackware.com> + linuxdoc-tools 0.9.67, build 1 + * Removed the files that were overlapping with the 'Python' (and any other) package. + * Upgraded to linuxdoc-tools 0.9.67 + * Upgraded to gnome-doc-utils 0.20.10 + * Upgraded to xmlto-0.0.25 + * Upgraded to gtk-doc-1.18 + * Upgraded to AsciiDoc-8.6.7 + * Upgraded to DocBook XSL Stylesheets 1.76.1 + * Fix OpenJade FTBFS with Perl 5.16 installed: Copy the perl4 corelib 'getopts.pl' + into OpenJade's build directory as a build-time work-around. + +Sun May 15 03:42:16 UTC 2011 + Patrick Volkerding <volkerdi@slackware.com> + linuxdoc-tools 0.9.66, build 9 + Rebuild for perl-5.14.0. + Mon Mar 21 17:39:48 UTC 2011 Patrick Volkerding <volkerdi@slackware.com> linuxdoc-tools 0.9.66, build 8 diff --git a/source/ap/linuxdoc-tools/arm/build b/source/ap/linuxdoc-tools/arm/build index eb4f18c8..f5a418d9 100755 --- a/source/ap/linuxdoc-tools/arm/build +++ b/source/ap/linuxdoc-tools/arm/build @@ -9,9 +9,9 @@ source /usr/share/slackdev/buildkit.sh # Package metadata: export PKGNAM=linuxdoc-tools -export VERSION=${VERSION:-0.9.66} +export VERSION=${VERSION:-0.9.67} export PKGARCH=${PKGARCH:-arm} -export BUILD=${BUILD:-4} +export BUILD=${BUILD:-2} export PKGSERIES=${PKGSERIES:-ap} export SLACKPACKAGE=$PKGNAM-$VERSION-$PKGARCH-$BUILD.tgz export PKGEXT=${PKGEXT:-tgz} diff --git a/source/ap/linuxdoc-tools/linuxdoc-tools.build b/source/ap/linuxdoc-tools/linuxdoc-tools.build index fe3506cc..27f3a53c 100755 --- a/source/ap/linuxdoc-tools/linuxdoc-tools.build +++ b/source/ap/linuxdoc-tools/linuxdoc-tools.build @@ -20,21 +20,21 @@ LINUXDOCTOOLSVER=$PKGVERSION SGMLDTD3VER=3.1 SGMLDTD4VER=4.5 XMLDTDVER=4.5 -XSLSTYLESHEETSVER=1.75.2 +XSLSTYLESHEETSVER=1.76.1 DSSSLSTYLESHEETSVER=1.79 SGMLCOMMONVER=0.6.3 OPENJADEVER=1.3.3-pre1 OPENSPVER=1.5.2 -GNOMEDOCUTILSVER=0.20.4 -GTKDOCVER=1.15 +GNOMEDOCUTILSVER=0.20.10 +GTKDOCVER=1.18 SGMLSPLVER=1.03ii -XMLTOVER=0.0.23 -ASCIIDOCVER=8.6.2 +XMLTOVER=0.0.25 +ASCIIDOCVER=8.6.7 DOCBOOKUTILSVER=0.6.14 # Determine the general CFLAGS for the known architectures: case $ARCH in - arm) export SLKCFLAGS="-O2 -march=armv4t" + arm) export SLKCFLAGS="-O2 -march=armv5te" export LIBDIRSUFFIX="" export HOSTTARGET="-gnueabi" ;; @@ -71,7 +71,7 @@ find . \ -exec chmod 644 {} \; # Revert a change that breaks processing the git documentation: -xz -dc $CWD/sources/asciidoc.asciidoc7compatible.revertbrokenchange.diff.xz | patch --verbose -p1 || exit 1 +# xz -dc $CWD/sources/asciidoc.asciidoc7compatible.revertbrokenchange.diff.xz | patch --verbose -p1 || exit 1 # Configure: ./configure \ @@ -356,6 +356,15 @@ find . \ # Apply patches: sed -i "s/iostream.h/iostream/g" style/MultiLineInlineNote.cxx +# GCC 4.6 patch: +xz -dc $CWD/sources/openjade-1.3.2-gcc46.patch.xz | patch --verbose -p1 || exit 1 + +# Install the old Perl 4 'getopts' function. This has been deprecated in Perl 5.16 +# and since it seems that OpenJade isn't being actively released by upstream, we'll +# work around by supplying it to OpenJade directly. It's only a build-time fix anyway +# so it's ok to have a dirty work-around: +xz -dc $CWD/sources/openjade-1.3-getopts.pl.xz > getopts.pl + # Configure without optimisation. # OpenSP & OpenJade are sensitive to optimisations and can result # in segfaults with anything other than O2 - particularly on the ARM @@ -374,8 +383,8 @@ sed -i "s/iostream.h/iostream/g" style/MultiLineInlineNote.cxx --datadir=/usr/share/sgml/openjade-$OPENJADEVER \ || exit 1 -# Build: -make || exit 1 +# Build (setting the perl library to be the PWD so it finds the old 'getopts.pl'): +make PERL5LIB=$PWD || exit 1 # Install: mkdir -p /etc/sgml @@ -689,6 +698,7 @@ find . \ # Apply patches: for i in \ + docbook-xsl-mandir.patch \ docbook-xsl-list-item-body.patch \ docbook-xsl-marginleft.patch \ docbook-xsl-newmethods.patch \ @@ -704,6 +714,12 @@ cp -fav \ htmlhelp images javahelp lib manpages params profiling \ slides template tools website wordml xhtml \ /usr/share/xml/docbook/xsl-stylesheets-$XSLSTYLESHEETSVER +# Some Linux distributions have this here, so we install a compatibility symlink: +# (this convoluted way of doing it is for makepkg's benefit) +mkdir -vpm755 /usr/share/xml/docbook/stylesheet +( cd /usr/share/xml/docbook/stylesheet + rm -fv docbook-xsl + ln -vfs ../xsl-stylesheets-$XSLSTYLESHEETSVER docbook-xsl ) # Create config files: if [ ! -d /etc/xml ]; then install -v -m755 -d /etc/xml; fi @@ -742,9 +758,9 @@ cp -fav doc/* README* RELEASE-NOTES* NEWS* \ # Extract source: cd $TMP mkdir xmlto && cd xmlto -#tar xvf $CWD/sources/xmlto-$XMLTOVER.tar.*z* -rpm2cpio $CWD/sources/xmlto-${XMLTOVER}*.src.rpm | cpio -div || exit 1 -tar xvvf xmlto-$XMLTOVER.tar.*z* +tar xvf $CWD/sources/xmlto-$XMLTOVER.tar.*z* +#rpm2cpio $CWD/sources/xmlto-${XMLTOVER}*.src.rpm | cpio -div || exit 1 +#tar xvvf xmlto-$XMLTOVER.tar.*z* cd xmlto-$XMLTOVER || exit 1 chown -R root:root . find . \ @@ -753,9 +769,6 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -# Apply patches: -patch --verbose -p1 < ../xmlto-0.0.23-Lchapterpassivetex.patch || exit 1 - # Configure: ./configure \ --prefix=/usr \ @@ -942,13 +955,9 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -# Apply patch to fix problem with vim: -xz -dc $CWD/sources/gtk-doc.patch.xz | patch --verbose -p1 || exit 1 - # Configure: ./configure \ --prefix=/usr \ - --enable-public-id \ --disable-scrollkeeper \ || exit 1 diff --git a/source/ap/linuxdoc-tools/sources/asciidoc.asciidoc7compatible.revertbrokenchange.diff b/source/ap/linuxdoc-tools/sources/asciidoc.asciidoc7compatible.revertbrokenchange.diff deleted file mode 100644 index 2bdc7de4..00000000 --- a/source/ap/linuxdoc-tools/sources/asciidoc.asciidoc7compatible.revertbrokenchange.diff +++ /dev/null @@ -1,80 +0,0 @@ ---- a/asciidoc.py 2010-10-17 14:01:35.000000000 +0800 -+++ b/asciidoc.py 2010-10-17 14:11:07.000000000 +0800 -@@ -4260,10 +4260,12 @@ - self.include1 = {} # Holds include1::[] files for {include1:}. - self.dumping = False # True if asciidoc -c option specified. - -- def load_file(self,fname,dir=None): -+ def load_file(self, fname, dir=None, include=[]): - """ - Loads sections dictionary with sections from file fname. - Existing sections are overlaid. -+ The 'include' list contains the section names to be loaded, -+ if 'inlude' is not specified all sections are loaded. - Return False if no file was found in any of the locations. - """ - if dir: -@@ -4317,9 +4319,14 @@ - else: - sections[section] = contents - rdr.close() -+ if include: -+ for s in set(sections) - set(include): -+ del sections[s] - attrs = {} - self.load_sections(sections,attrs) -- self.loaded.append(os.path.realpath(fname)) -+ if not include: -+ # If all sections are loaded mark this file as loaded. -+ self.loaded.append(os.path.realpath(fname)) - document.update_attributes(attrs) # So they are available immediately. - return True - -@@ -5314,13 +5321,17 @@ - if o == '-c': config.dumping = True - if o == '-s': config.header_footer = False - if o == '-v': config.verbose = True -- # Check the infile exists. -- if infile != '<stdin>' and not os.path.isfile(infile): -- raise EAsciiDoc,'input file %s missing' % infile -- document.infile = infile - # Load asciidoc.conf files. - if not config.load_from_dirs('asciidoc.conf'): - raise EAsciiDoc,'configuration file asciidoc.conf missing' -+ # Check the infile exists. -+ if infile != '<stdin>': -+ if not os.path.isfile(infile): -+ raise EAsciiDoc,'input file %s missing' % infile -+ indir = os.path.dirname(infile) -+ config.load_file('asciidoc.conf', indir, -+ ['attributes','titles','specialchars']) -+ document.infile = infile - AttributeList.initialize() - # Open input file and parse document header. - reader.tabsize = config.tabsize -@@ -5343,10 +5354,9 @@ - document.load_lang() - # Load local conf files (conf files in the input file directory). - if infile != '<stdin>': -- d =os.path.dirname(infile) -- config.load_from_dirs('asciidoc.conf', [d]) -- config.load_backend([d]) -- config.load_filters([d]) -+ config.load_file('asciidoc.conf', indir) -+ config.load_backend([indir]) -+ config.load_filters([indir]) - # Load document specific configuration files. - f = os.path.splitext(infile)[0] - config.load_file(f + '.conf') ---- a/doc/asciidoc.txt 2010-10-17 14:11:34.000000000 +0800 -+++ b/doc/asciidoc.txt 2010-10-17 14:13:21.000000000 +0800 -@@ -3632,6 +3632,8 @@ - the following order: - - - `asciidoc.conf` from locations 1, 2, 3. -+- 'attributes', 'titles' and 'specialcharacters' sections from the -+ `asciidoc.conf` in location 4. - - The document header is parsed at this point. - - `<backend>.conf` and `<backend>-<doctype>.conf` from locations 1, - 2,3. - diff --git a/source/ap/linuxdoc-tools/sources/gtk-doc.patch b/source/ap/linuxdoc-tools/sources/gtk-doc.patch deleted file mode 100644 index bf32d557..00000000 --- a/source/ap/linuxdoc-tools/sources/gtk-doc.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 2bffebcf9c125f5610b8fb660d42c3c5b9dfd4f0 Mon Sep 17 00:00:00 2001 -From: Stefan Kost <ensonic@users.sf.net> -Date: Thu, 19 Aug 2010 14:45:54 +0000 -Subject: fixxref: tweak the vim invocation - -Use specific output-filename to ensure we get what we'll late use. Use "-u NONE" -instead of -u /dev/null. -Fixes #627223 ---- -diff --git a/gtkdoc-fixxref.in b/gtkdoc-fixxref.in -index 33a31b8..9f53852 100755 ---- a/gtkdoc-fixxref.in -+++ b/gtkdoc-fixxref.in -@@ -464,7 +464,7 @@ sub HighlightSourceVim { - close (NEWFILE); - - # format source -- system "echo 'let html_number_lines=0|let html_use_css=1|let use_xhtml=1|syn on|e $temp_source_file|run! syntax/2html.vim|wa!|qa!' | @HIGHLIGHT@ -n -e -u /dev/null -T xterm >/dev/null"; -+ system "echo 'let html_number_lines=0|let html_use_css=1|let use_xhtml=1|syn on|e $temp_source_file|run! syntax/2html.vim|w! $temp_source_file.html|qa!' | @HIGHLIGHT@ -n -e -u NONE -T xterm >/dev/null"; - - my $highlighted_source; - { --- -cgit v0.8.3.1 - diff --git a/source/ap/linuxdoc-tools/sources/openjade-1.3-getopts.pl b/source/ap/linuxdoc-tools/sources/openjade-1.3-getopts.pl new file mode 100644 index 00000000..5b18fe00 --- /dev/null +++ b/source/ap/linuxdoc-tools/sources/openjade-1.3-getopts.pl @@ -0,0 +1,65 @@ +;# getopts.pl - a better getopt.pl +# +# This library is no longer being maintained, and is included for backward +# compatibility with Perl 4 programs which may require it. +# +# In particular, this should not be used as an example of modern Perl +# programming techniques. +# +# Suggested alternatives: Getopt::Long or Getopt::Std +# +;# Usage: +;# do Getopts('a:bc'); # -a takes arg. -b & -c not. Sets opt_* as a +;# # side effect. + +sub Getopts { + local($argumentative) = @_; + local(@args,$_,$first,$rest); + local($errs) = 0; + + @args = split( / */, $argumentative ); + while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) { + ($first,$rest) = ($1,$2); + $pos = index($argumentative,$first); + if($pos >= 0) { + if($args[$pos+1] eq ':') { + shift(@ARGV); + if($rest eq '') { + ++$errs unless(@ARGV); + $rest = shift(@ARGV); + } + eval " + push(\@opt_$first, \$rest); + if (!defined \$opt_$first or \$opt_$first eq '') { + \$opt_$first = \$rest; + } + else { + \$opt_$first .= ' ' . \$rest; + } + "; + } + else { + eval "\$opt_$first = 1"; + if($rest eq '') { + shift(@ARGV); + } + else { + $ARGV[0] = "-$rest"; + } + } + } + else { + print STDERR "Unknown option: $first\n"; + ++$errs; + if($rest ne '') { + $ARGV[0] = "-$rest"; + } + else { + shift(@ARGV); + } + } + } + $errs == 0; +} + +1; diff --git a/source/ap/linuxdoc-tools/sources/openjade-1.3.2-gcc46.patch b/source/ap/linuxdoc-tools/sources/openjade-1.3.2-gcc46.patch new file mode 100644 index 00000000..962ac19f --- /dev/null +++ b/source/ap/linuxdoc-tools/sources/openjade-1.3.2-gcc46.patch @@ -0,0 +1,82 @@ +If a class or struct has no user-defined default constructor, C++ doesn't +allow you to default construct a const instance of it. + +https://bugs.gentoo.org/358021 +http://clang.llvm.org/compatibility.html#default_init_const +http://gcc.gnu.org/PR44499 + + +--- a/jade/TeXFOTBuilder.cxx ++++ b/jade/TeXFOTBuilder.cxx +@@ -88,6 +88,8 @@ public: + value.convertString(nic_.placement); + } + ExtensionFlowObj *copy() const { return new PageFloatFlowObj(*this); } ++ public: ++ PageFloatFlowObj() {} + private: + PageFloatNIC nic_; + StringC name_; +@@ -101,6 +103,8 @@ public: + fotb.endPageFootnote(); + } + ExtensionFlowObj *copy() const { return new PageFootnoteFlowObj(*this); } ++ public: ++ PageFootnoteFlowObj() {} + private: + }; + ////////////////////////////////////////////////////////////////////// +--- a/jade/TransformFOTBuilder.cxx ++++ b/jade/TransformFOTBuilder.cxx +@@ -41,6 +41,7 @@ public: + }; + class EntityRefFlowObj : public TransformExtensionFlowObj { + public: ++ EntityRefFlowObj() {} + void atomic(TransformFOTBuilder &fotb, const NodePtr &) const { + fotb.entityRef(name_); + } +@@ -56,6 +57,7 @@ public: + }; + class ProcessingInstructionFlowObj : public TransformExtensionFlowObj { + public: ++ ProcessingInstructionFlowObj() {} + void atomic(TransformFOTBuilder &fotb, const NodePtr &) const { + fotb.processingInstruction(data_); + } +@@ -98,6 +100,8 @@ public: + } + } + ExtensionFlowObj *copy() const { return new EmptyElementFlowObj(*this); } ++ public: ++ EmptyElementFlowObj() {} + private: + ElementNIC nic_; + }; +@@ -133,6 +137,8 @@ public: + } + } + ExtensionFlowObj *copy() const { return new ElementFlowObj(*this); } ++ public: ++ ElementFlowObj() {} + private: + ElementNIC nic_; + }; +@@ -150,6 +156,8 @@ public: + value.convertString(systemId_); + } + ExtensionFlowObj *copy() const { return new EntityFlowObj(*this); } ++ public: ++ EntityFlowObj() {} + private: + StringC systemId_; + }; +@@ -174,6 +182,8 @@ public: + } + } + ExtensionFlowObj *copy() const { return new DocumentTypeFlowObj(*this); } ++ public: ++ DocumentTypeFlowObj() {} + private: + DocumentTypeNIC nic_; + }; diff --git a/source/ap/linuxdoc-tools/sources/source.download b/source/ap/linuxdoc-tools/sources/source.download index 40e05d21..c9608b2b 100755 --- a/source/ap/linuxdoc-tools/sources/source.download +++ b/source/ap/linuxdoc-tools/sources/source.download @@ -7,24 +7,27 @@ # linuxdoc-tools: # This provides things such as sgml2txt. -wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/linuxdoc-tools-0.9.66-6.fc14.src.rpm +wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/l/linuxdoc-tools-0.9.67-1.fc18.src.rpm # OpenSP: # http://openjade.sourceforge.net/download.html # wget -c http://kent.dl.sourceforge.net/sourceforge/openjade/OpenSP-1.5.2.tar.gz # -wget -c http://download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/opensp-1.5.2-12.fc12.src.rpm - +wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/o/opensp-1.5.2-14.fc17.src.rpm # OpenJade: # http://openjade.sourceforge.net/ +# We're using a gcc 4.6 patch from Fedora's SRPM: +# ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/o/openjade-1.3.2-39.fc17.src.rpm +# And we're using the old Perl 4 core libraries (as a dirty but effective build time work-around) taken from: +# http://packages.debian.org/sid/libperl4-corelibs-perl +# http://ftp.de.debian.org/debian/pool/main/libp/libperl4-corelibs-perl/libperl4-corelibs-perl_0.003.orig.tar.gz wget -c http://downloads.sourceforge.net/openjade/openjade-1.3.3-pre1.tar.gz - # sgmltools-common. # It's broken and needs patching so we'll use Fedora's. #wget -c ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/sgml-common-0.6.3.tgz -wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/sgml-common-0.6.3-33.fc14.src.rpm +wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/s/sgml-common-0.6.3-36.fc17.src.rpm # DocBook docs: @@ -34,8 +37,7 @@ wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/ #wget -c http://www.docbook.org/sgml/4.5/docbook-4.5.zip # We use Debian's source because it's more convenient since they package all versions in one archive: wget -c http://ftp.de.debian.org/debian/pool/main/d/docbook/docbook_4.5.orig.tar.gz - - +# # http://www.linuxfromscratch.org/blfs/view/stable/pst/docbook-dsssl.html # Check versions: # http://sourceforge.net/projects/docbook/files/ @@ -43,13 +45,13 @@ wget -c ftp://ftp.linux.ee/pub/gentoo/distfiles/distfiles/docbook-dsssl-1.79.tar wget -c http://switch.dl.sourceforge.net/sourceforge/docbook/docbook-dsssl-doc-1.79.tar.bz2 # Why don't they put the patches into the distributed source...??? #wget -c ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/docbook-utils-0.6.14.tar.gz -wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/docbook-utils-0.6.14-24.fc14.src.rpm - +wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/d/docbook-utils-0.6.14-30.fc17.src.rpm +# # wget -c http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip # https://sourceforge.net/project/showfiles.php?group_id=21935&package_id=16608 -wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/docbook-style-xsl-1.75.2-6.fc14.src.rpm - +wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/d/docbook-style-xsl-1.76.1-5.fc17.src.rpm +# # We use the Fedora "docbook-style-xsl" SRPM for this rather than the original source which is why # these "docbook-xsl*" files aren't in our sources directory. #wget -c "http://downloads.sourceforge.net/project/docbook/docbook-xsl/1.75.2/docbook-xsl-1.75.2.tar.bz2?use_mirror=freefr" @@ -61,13 +63,13 @@ wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/ # I guess this mirror is out of date now. It's easier to just look at Fedora's development # directory anyway :-) # wget -c http://ftp.acc.umu.se/pub/GNOME/sources/gnome-doc-utils/0.20/gnome-doc-utils-0.20.0.tar.bz2 -wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/gnome-doc-utils-0.20.1-1.fc14.src.rpm +wget ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/g/gnome-doc-utils-0.20.10-2.fc18.src.rpm # gtk-doc: # When upgrading this, it's worth checking the Fedora SRPM. For version 1.13 # we're carrying a fix for gtk-doc-fixref. Make sure newer versions don't need # any patches! -wget -c http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.15/gtk-doc-1.15.tar.bz2 +wget -c http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.18/gtk-doc-1.18.tar.bz2 # http://git.gnome.org/browse/gtk-doc/commit/?id=2bffebcf9c125f5610b8fb660d42c3c5b9dfd4f0 # sgmlspl @@ -76,14 +78,12 @@ wget -c http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.15/gtk-doc-1.15.tar.bz2 wget -c http://ftp.debian.org/debian/pool/main/libs/libsgmls-perl/libsgmls-perl_1.03ii.orig.tar.gz wget -c http://ftp.de.debian.org/debian/pool/main/libs/libsgmls-perl/libsgmls-perl_1.03ii-32.diff.gz - # xmlto # https://fedorahosted.org/releases/x/m/xmlto # wget -c --no-check-certificate https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.23.tar.bz2 -# Fedora 14 includes a patch, so we'll take it: -wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/xmlto-0.0.23-3.fc13.src.rpm - +# Fedora includes a patch, so we'll take it: +wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/rawhide/source/SRPMS/x/xmlto-0.0.25-2.fc17.src.rpm # AsciiDoc # http://www.methods.co.nz/asciidoc/ -wget -c "http://sourceforge.net/projects/asciidoc/files/asciidoc/8.6.2/asciidoc-8.6.2.tar.gz/download" +wget -c "http://sourceforge.net/projects/asciidoc/files/asciidoc/8.6.7/asciidoc-8.6.7.tar.gz/download" diff --git a/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools b/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools index e6f23002..3ed08998 100755 --- a/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools +++ b/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools @@ -31,8 +31,8 @@ if [ -z "$ARCH" ]; then esac fi -export PKGVERSION=0.9.66 # use the version of linuxdoc-tools as the package version. -BUILD=${BUILD:-8} +export PKGVERSION=0.9.67 # use the version of linuxdoc-tools as the package version. +BUILD=${BUILD:-2} PKGEXT=${PKGEXT:-txz} export CWD=$PWD diff --git a/source/ap/lm_sensors/lm_sensors.SlackBuild b/source/ap/lm_sensors/lm_sensors.SlackBuild index 83785a56..cb1b26cc 100755 --- a/source/ap/lm_sensors/lm_sensors.SlackBuild +++ b/source/ap/lm_sensors/lm_sensors.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2006, 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -22,7 +22,7 @@ PKGNAM=lm_sensors -VERSION=${VERSION:-3.1.2} +VERSION=${VERSION:-3.3.2} BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: diff --git a/source/ap/lsscsi/lsscsi.SlackBuild b/source/ap/lsscsi/lsscsi.SlackBuild index e0ed72fe..3c034b82 100755 --- a/source/ap/lsscsi/lsscsi.SlackBuild +++ b/source/ap/lsscsi/lsscsi.SlackBuild @@ -110,9 +110,17 @@ fi # Add a documentation directory: mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION cp -a \ - AUTHORS COPYING CREDITS ChangeLog INSTALL NEWS README \ + AUTHORS COPYING CREDITS INSTALL NEWS README \ $PKG/usr/doc/${PKGNAM}-$VERSION +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + mkdir -p $PKG/install #zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh cat $CWD/slack-desc > $PKG/install/slack-desc diff --git a/source/ap/lxc/lxc.SlackBuild b/source/ap/lxc/lxc.SlackBuild index 15df88c6..7b82f89e 100755 --- a/source/ap/lxc/lxc.SlackBuild +++ b/source/ap/lxc/lxc.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2011 Patrick J. Volkerding, Sebeka, Minnesota, USA +# Copyright 2011, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -23,7 +23,7 @@ PKGNAM=lxc VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | rev | cut -f 2- -d -)} -BUILD=${BUILD:-2} +BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/ap/man-pages/man-pages.SlackBuild b/source/ap/man-pages/man-pages.SlackBuild index 8930798b..85cfc0d2 100755 --- a/source/ap/man-pages/man-pages.SlackBuild +++ b/source/ap/man-pages/man-pages.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2008-2010 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2008-2012 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -33,7 +33,7 @@ mkdir -p $TMP $PKG cd $TMP rm -rf man-pages-$VERSION -tar xf $CWD/man-pages-$VERSION.tar.bz2 +tar xf $CWD/man-pages-$VERSION.tar.xz tar xf $CWD/man-pages-posix-2003-a.tar.bz2 chown -R root:root man-pages-$VERSION man-pages-posix-2003-a chmod -R a-s,u+rw,go+r-w man-pages-$VERSION man-pages-posix-2003-a diff --git a/source/ap/mc/mc.SlackBuild b/source/ap/mc/mc.SlackBuild index 87e929ac..21d997db 100755 --- a/source/ap/mc/mc.SlackBuild +++ b/source/ap/mc/mc.SlackBuild @@ -22,7 +22,7 @@ VERSION=${VERSION:-$(echo mc-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -56,6 +56,7 @@ cd $TMP rm -rf mc-$VERSION tar xvf $CWD/mc-$VERSION.tar.xz || exit 1 cd mc-$VERSION || exit 1 + chown -R root:root . find . \ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ @@ -63,8 +64,11 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; +# Fix tmp path for saving files: +zcat $CWD/mc.save.file.diff.gz | patch -p1 --verbose || exit 1 + # Use geeqie instead of gqview as an external image viewer: -zcat $CWD/mc.ext.in.geeqie.diff.gz | patch -p1 --verbose || exit 1 +zcat $CWD/mc.image.sh.geeqie.diff.gz | patch -p1 --verbose || exit 1 if [ ! -x ./configure ]; then ./autogen.sh @@ -106,8 +110,20 @@ cp -a $CWD/profile.d/mc.* $PKG/etc/profile.d chown root:root $PKG/etc/profile.d/* chmod 755 $PKG/etc/profile.d/* -find $PKG/usr/man -type f -exec gzip -9 {} \; -for i in $(find $PKG/usr/man -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi mkdir -p $PKG/usr/doc/mc-$VERSION cp -a \ diff --git a/source/ap/mc/mc.ext.in.geeqie.diff b/source/ap/mc/mc.ext.in.geeqie.diff deleted file mode 100644 index 8cdfecca..00000000 --- a/source/ap/mc/mc.ext.in.geeqie.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- ./misc/mc.ext.in.orig 2010-11-08 05:46:13.000000000 -0600 -+++ ./misc/mc.ext.in 2010-11-11 14:34:30.000000000 -0600 -@@ -391,7 +391,7 @@ - Include=image - - include/image -- Open=if [ "$DISPLAY" = "" ]; then zgv %f; else (gqview %f &); fi -+ Open=if [ "$DISPLAY" = "" ]; then zgv %f; else (geeqie %f &); fi - View=%view{ascii} identify %f - #View=%view{ascii} asciiview %f - diff --git a/source/ap/mc/mc.image.sh.geeqie.diff b/source/ap/mc/mc.image.sh.geeqie.diff new file mode 100644 index 00000000..413807e9 --- /dev/null +++ b/source/ap/mc/mc.image.sh.geeqie.diff @@ -0,0 +1,11 @@ +--- ./misc/ext.d/image.sh.orig 2012-07-18 04:30:23.000000000 -0500 ++++ ./misc/ext.d/image.sh 2012-09-08 14:39:11.998159169 -0500 +@@ -36,7 +36,7 @@ + if [ "$DISPLAY" = "" ]; then + zgv "${MC_EXT_FILENAME}" + else +- (gqview "${MC_EXT_FILENAME}" &) ++ (geeqie "${MC_EXT_FILENAME}" &) + fi + ;; + esac diff --git a/source/ap/mc/mc.save.file.diff b/source/ap/mc/mc.save.file.diff new file mode 100644 index 00000000..f54748c1 --- /dev/null +++ b/source/ap/mc/mc.save.file.diff @@ -0,0 +1,37 @@ +diff --git a/src/editor/editcmd.c b/src/editor/editcmd.c +index 2261aaa..536ac7e 100644 +--- a/src/editor/editcmd.c ++++ b/src/editor/editcmd.c +@@ -222,7 +222,8 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath) + if (savedir == NULL) + savedir = g_strdup ("."); + +- saveprefix = mc_build_filename (savedir, "cooledit", NULL); ++ /* Token-related function never return leading slash, so we need add it manually */ ++ saveprefix = mc_build_filename ("/", savedir, "cooledit", NULL); + g_free (savedir); + fd = mc_mkstemps (&savename_vpath, saveprefix, NULL); + g_free (saveprefix); +@@ -365,13 +366,21 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath) + + if (this_save_mode == EDIT_DO_BACKUP) + { ++ char *tmp_store_filename; ++ vfs_path_element_t *last_vpath_element; + vfs_path_t *tmp_vpath; + gboolean ok; + + #ifdef HAVE_ASSERT_H + assert (option_backup_ext != NULL); + #endif +- tmp_vpath = vfs_path_append_new (real_filename_vpath, option_backup_ext, (char *) NULL); ++ /* add backup extention to the path */ ++ tmp_vpath = vfs_path_clone (real_filename_vpath); ++ last_vpath_element = (vfs_path_element_t *) vfs_path_get_by_index (tmp_vpath, -1); ++ tmp_store_filename = last_vpath_element->path; ++ last_vpath_element->path = g_strdup_printf ("%s%s", tmp_store_filename, option_backup_ext); ++ g_free (tmp_store_filename); ++ + ok = (mc_rename (real_filename_vpath, tmp_vpath) != -1); + vfs_path_free (tmp_vpath); + if (!ok) diff --git a/source/ap/moc/moc.SlackBuild b/source/ap/moc/moc.SlackBuild index 48ae54b9..35f6fc5f 100755 --- a/source/ap/moc/moc.SlackBuild +++ b/source/ap/moc/moc.SlackBuild @@ -23,7 +23,7 @@ PKGNAM=moc VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | rev | cut -f 2- -d -)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/ap/mysql/README.mysql-embedded b/source/ap/mysql/README.mysql-embedded new file mode 100644 index 00000000..21b519e9 --- /dev/null +++ b/source/ap/mysql/README.mysql-embedded @@ -0,0 +1,7 @@ +The mysql-embedded.SlackBuild produces a package containing +a static libmysqld.a library (and some support files) that +is required in order to build applications that embed a +mysql server (such as amarok). If you need to build such +applications, first you'll need to use this SlackBuild to +prepare a mysql package that contains embedded support and +install it on your system. diff --git a/source/ap/mysql/doinst.sh b/source/ap/mysql/doinst.sh index 22f77474..a5d835fa 100644 --- a/source/ap/mysql/doinst.sh +++ b/source/ap/mysql/doinst.sh @@ -19,4 +19,5 @@ if [ -e etc/rc.d/rc.mysqld ]; then fi config etc/rc.d/rc.mysqld.new +config etc/mysqlaccess.conf.new diff --git a/source/ap/mysql/mirror-url b/source/ap/mysql/mirror-url new file mode 100644 index 00000000..33ff56b0 --- /dev/null +++ b/source/ap/mysql/mirror-url @@ -0,0 +1 @@ +http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.25a.tar.gz diff --git a/source/ap/mysql/mysql-embedded.SlackBuild b/source/ap/mysql/mysql-embedded.SlackBuild new file mode 100755 index 00000000..f5f178a9 --- /dev/null +++ b/source/ap/mysql/mysql-embedded.SlackBuild @@ -0,0 +1,221 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Build and install MySQL on Slackware +# by: David Cantrell <david@slackware.com> +# Currently maintained by: Patrick Volkerding <volkerdi@slackware.com> + + +VERSION=${VERSION:-$(echo mysql-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i486 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-mysql + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf mysql-$VERSION +tar xvf $CWD/mysql-$VERSION.tar.?z* || exit 1 +cd mysql-$VERSION + +if ls $CWD/*.diff.gz 1> /dev/null 2> /dev/null ; then + for patch in $CWD/*.diff.gz ; do + zcat $patch | patch -p1 --verbose || exit 1 + done +fi + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +mkdir build +cd build +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS -felide-constructors -fno-exceptions -fno-rtti" \ +CXX=gcc \ +cmake \ + -DBUILD_CONFIG=mysql_release \ + -DFEATURE_SET="community" \ + -DINSTALL_LAYOUT="RPM" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DINSTALL_LIBDIR="lib${LIBDIRSUFFIX}" \ + -DINSTALL_SBINDIR=libexec \ + -DINSTALL_INCLUDEDIR=include/mysql \ + -DINSTALL_MYSQLSHAREDIR=share/mysql \ + -DINSTALL_SQLBENCHDIR= \ + -DINSTALL_MYSQLTESTDIR=mysql-test \ + -DINSTALL_INFODIR=info \ + -DINSTALL_MANDIR=man \ + -DINSTALL_PLUGINDIR="lib${LIBDIRSUFFIX}/mysql/plugin" \ + -DINSTALL_SCRIPTDIR=bin \ + -DINSTALL_SUPPORTFILESDIR=share/mysql \ + -DINSTALL_MYSQLDATADIR="/var/lib/mysql" \ + -DMYSQL_DATADIR="/var/lib/mysql" \ + -DMYSQL_UNIX_ADDR="/var/run/mysql/mysql.sock" \ + -DWITH_EXTRA_CHARSETS=complex \ + -DWITH_INNOBASE_STORAGE_ENGINE=1 \ + -DENABLED_LOCAL_INFILE=ON \ + -DWITH_EMBEDDED_SERVER=ON \ + -DWITH_READLINE=ON \ + -DWITH_SSL=system \ + -DWITH_ZLIB=system \ + .. + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG + +# Install sample configuration files: +mkdir -p $PKG/etc/mysql +cp support-files/my-*.cnf $PKG/etc/mysql + +# Move mysqlaccess.conf to a more proper place +mv $PKG/usr/bin/mysqlaccess.conf $PKG/etc/mysqlaccess.conf.new +chmod 644 $PKG/etc/mysqlaccess.conf.new + +# Leave build directory: +cd .. + +# install additional headers needed for building external engine plugins: +mkdir -p $PKG/usr/include/mysql/private/atomic + +install -m 644 regex/my_regex.h $PKG/usr/include/mysql/private/ + +for i in sql include; do + for j in $i/*.h; do + install -m 644 $j $PKG/usr/include/mysql/private/ + done +done + +for i in include/atomic/*.h; do + install -m 644 $i $PKG/usr/include/mysql/private/atomic/ +done + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Install docs +mkdir -p $PKG/usr/doc/mysql-$VERSION/Docs +cp -a \ + BUILD* COPYING* EXCEPTIONS* INSTALL-SOURCE README* VERSION \ + $PKG/usr/doc/mysql-$VERSION +( cd Docs + # Seems most of the Docs/* are gone, but we'll leave the cp stuff + # in case it returns. + cp -a INFO_SRC INSTALL-BINARY *.html *.txt Flags \ + $PKG/usr/doc/mysql-$VERSION/Docs ) +## Too large to justify since the .html version is right there: +#rm $PKG/usr/doc/mysql-$VERSION/Docs/manual.txt +find $PKG/usr/doc/mysql-$VERSION -type f -exec chmod 0644 {} \; + +# This is the directory where databases are stored: +mkdir -p $PKG/var/lib/mysql +chown mysql.mysql $PKG/var/lib/mysql +chmod 0750 $PKG/var/lib/mysql + +# This is where the socket is stored: +mkdir -p $PKG/var/run/mysql +chown mysql.mysql $PKG/var/run/mysql +chmod 0755 $PKG/var/run/mysql + +# Do not package the test suite: +rm -rf $PKG/usr/mysql-test + +# More unpackaged things: +rm -f $PKG/usr/info/dir +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmysqlclient.a +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmysqlclient_r.* +( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf libmysqlclient.so libmysqlclient_r.so ) + +# Add init script: +mkdir -p $PKG/etc/rc.d +# This is intentionally chmod 644. +zcat $CWD/rc.mysqld.gz > $PKG/etc/rc.d/rc.mysqld.new + +# Install script: +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# Compress info files, if any: +if [ -d $PKG/usr/info ]; then + ( cd $PKG/usr/info + rm -f dir + gzip -9 * + ) +fi + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +# Build package: +cd $PKG +/sbin/makepkg -l y -c n $TMP/mysql-$VERSION-$ARCH-${BUILD}_withembedded.txz diff --git a/source/ap/mysql/mysql-embedded.build b/source/ap/mysql/mysql-embedded.build deleted file mode 100755 index 004bb30d..00000000 --- a/source/ap/mysql/mysql-embedded.build +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/sh -# Build and install MySQL on Slackware -# by: David Cantrell <david@slackware.com> -# Currently maintained by: Patrick Volkerding <volkerdi@slackware.com> - -VERSION=${VERSION:-$(echo mysql-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} - -# Automatically determine the architecture we're building on: -if [ -z "$ARCH" ]; then - case "$( uname -m )" in - i?86) export ARCH=i486 ;; - arm*) export ARCH=arm ;; - # Unless $ARCH is already set, use uname -m for all other archs: - *) export ARCH=$( uname -m ) ;; - esac -fi - -CWD=$(pwd) -TMP=${TMP:-/tmp} -PKG=$TMP/package-mysql - -if [ "$ARCH" = "i486" ]; then - SLKCFLAGS="-O2 -march=i486 -mtune=i686" - LIBDIRSUFFIX="" -elif [ "$ARCH" = "s390" ]; then - SLKCFLAGS="-O2" - LIBDIRSUFFIX="" -elif [ "$ARCH" = "x86_64" ]; then - SLKCFLAGS="-O2 -fPIC" - LIBDIRSUFFIX="64" -else - SLKCFLAGS="-O2" - LIBDIRSUFFIX="" -fi - -rm -rf $PKG -mkdir -p $TMP $PKG -cd $TMP -rm -rf mysql-$VERSION -tar xvf $CWD/mysql-$VERSION.tar.?z* || exit 1 -cd mysql-$VERSION - -if ls $CWD/*.diff.gz 1> /dev/null 2> /dev/null ; then - for patch in $CWD/*.diff.gz ; do - zcat $patch | patch -p1 --verbose || exit 1 - done -fi - -CFLAGS="$SLKCFLAGS -fPIC" CXXFLAGS="$SLKCFLAGS -fPIC" \ - ./configure --prefix=/usr --libdir=/usr/lib${LIBDIRSUFFIX} \ - --datadir=/usr/share --sysconfdir=/etc/mysql \ - --libexecdir=/usr/sbin --localstatedir=/var/lib/mysql \ - --without-docs --without-man --without-server \ - --with-embedded-server \ - --without-readline --disable-shared --with-charset=utf8 \ - --without-debug --with-pthread --without-ssl --without-query-cache \ - --without-geometry --with-pic - -make -j6 || make || exit 1 - -cp libmysqld/libmysqld.a /usr/lib${LIBDIRSUFFIX}/mysql/ - diff --git a/source/ap/mysql/mysql.SlackBuild b/source/ap/mysql/mysql.SlackBuild index ce149a15..6690c0f5 100755 --- a/source/ap/mysql/mysql.SlackBuild +++ b/source/ap/mysql/mysql.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA +# Copyright 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -77,82 +77,104 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; +mkdir build +cd build CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS -felide-constructors -fno-exceptions -fno-rtti" \ CXX=gcc \ -./configure \ - --prefix=/usr \ - --libdir=/usr/lib${LIBDIRSUFFIX} \ - --with-mysqld-user=mysql \ - --with-unix-socket-path=/var/run/mysql/mysql.sock \ - --localstatedir=/var/lib/mysql \ - --mandir=/usr/man \ - --infodir=/usr/info \ - --enable-assembler \ - --without-debug \ - --enable-thread-safe-client \ - --with-extra-charsets=complex \ - --with-ssl=/usr \ - --enable-largefile \ - --with-innodb \ - --with-readline \ - --build=$ARCH-slackware-linux -# -# --without-readline +cmake \ + -DBUILD_CONFIG=mysql_release \ + -DFEATURE_SET="community" \ + -DINSTALL_LAYOUT="RPM" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DINSTALL_LIBDIR="lib${LIBDIRSUFFIX}" \ + -DINSTALL_SBINDIR=libexec \ + -DINSTALL_INCLUDEDIR=include/mysql \ + -DINSTALL_MYSQLSHAREDIR=share/mysql \ + -DINSTALL_SQLBENCHDIR= \ + -DINSTALL_MYSQLTESTDIR=mysql-test \ + -DINSTALL_INFODIR=info \ + -DINSTALL_MANDIR=man \ + -DINSTALL_PLUGINDIR="lib${LIBDIRSUFFIX}/mysql/plugin" \ + -DINSTALL_SCRIPTDIR=bin \ + -DINSTALL_SUPPORTFILESDIR=share/mysql \ + -DINSTALL_MYSQLDATADIR="/var/lib/mysql" \ + -DMYSQL_DATADIR="/var/lib/mysql" \ + -DMYSQL_UNIX_ADDR="/var/run/mysql/mysql.sock" \ + -DWITH_EXTRA_CHARSETS=complex \ + -DWITH_INNOBASE_STORAGE_ENGINE=1 \ + -DENABLED_LOCAL_INFILE=ON \ + -DWITH_EMBEDDED_SERVER=OFF \ + -DWITH_READLINE=ON \ + -DWITH_SSL=system \ + -DWITH_ZLIB=system \ + .. make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG -# install additional headers needed for building external engine plugins -for i in sql include regex; do +# Install sample configuration files: +mkdir -p $PKG/etc/mysql +cp support-files/my-*.cnf $PKG/etc/mysql + +# Move mysqlaccess.conf to a more proper place +mv $PKG/usr/bin/mysqlaccess.conf $PKG/etc/mysqlaccess.conf.new +chmod 644 $PKG/etc/mysqlaccess.conf.new + +# Leave build directory: +cd .. + +# install additional headers needed for building external engine plugins: +mkdir -p $PKG/usr/include/mysql/private/atomic + +install -m 644 regex/my_regex.h $PKG/usr/include/mysql/private/ + +for i in sql include; do for j in $i/*.h; do - install -m 644 $j $PKG/usr/include/mysql/ + install -m 644 $j $PKG/usr/include/mysql/private/ done done -mkdir -p $PKG/usr/include/mysql/atomic for i in include/atomic/*.h; do - install -m 644 $i $PKG/usr/include/mysql/atomic/ + install -m 644 $i $PKG/usr/include/mysql/private/atomic/ done -# The ./configure option to omit this has gone away, so we'll omit it -# the old-fashioned way. It's all in the source tarball if you need it. -rm -rf $PKG/usr/sql-bench - find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null -# Install support files -mkdir -p $PKG/etc -cp support-files/my-{huge,large,medium,small}.cnf $PKG/etc - # Install docs mkdir -p $PKG/usr/doc/mysql-$VERSION/Docs cp -a \ - COPYING* EXCEPTIONS* INSTALL-SOURCE README* \ + BUILD* COPYING* EXCEPTIONS* INSTALL-SOURCE README* VERSION \ $PKG/usr/doc/mysql-$VERSION ( cd Docs # Seems most of the Docs/* are gone, but we'll leave the cp stuff # in case it returns. - cp -a INSTALL-BINARY *.html *.txt Flags \ + cp -a INFO_SRC INSTALL-BINARY *.html *.txt Flags \ $PKG/usr/doc/mysql-$VERSION/Docs ) ## Too large to justify since the .html version is right there: #rm $PKG/usr/doc/mysql-$VERSION/Docs/manual.txt find $PKG/usr/doc/mysql-$VERSION -type f -exec chmod 0644 {} \; -# This is the directory where databases are stored +# This is the directory where databases are stored: mkdir -p $PKG/var/lib/mysql chown mysql.mysql $PKG/var/lib/mysql chmod 0750 $PKG/var/lib/mysql -# This is where the socket is stored +# This is where the socket is stored: mkdir -p $PKG/var/run/mysql chown mysql.mysql $PKG/var/run/mysql chmod 0755 $PKG/var/run/mysql -# Do not include the test suite: +# Do not package the test suite: rm -rf $PKG/usr/mysql-test +# More unpackaged things: +rm -f $PKG/usr/info/dir +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmysqlclient.a +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmysqlclient_r.* +( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf libmysqlclient.so libmysqlclient_r.so ) + # Add init script: mkdir -p $PKG/etc/rc.d # This is intentionally chmod 644. @@ -163,29 +185,6 @@ mkdir -p $PKG/install zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh cat $CWD/slack-desc > $PKG/install/slack-desc -# Add some handy library symlinks: -if [ -r $PKG/usr/lib${LIBDIRSUFFIX}/mysql/libmysqlclient.so.16 ]; then - ( cd $PKG/usr/lib${LIBDIRSUFFIX} - rm -f libmysqlclient.so libmysqlclient.so.16 - ln -sf mysql/libmysqlclient.so . - ln -sf mysql/libmysqlclient.so.16 . - ) -else - exit 1 -fi -if [ -r $PKG/usr/lib${LIBDIRSUFFIX}/mysql/libmysqlclient_r.so.16 ]; then - ( cd $PKG/usr/lib${LIBDIRSUFFIX} - rm -f libmysqlclient_r.so libmysqlclient_r.so.16 - ln -sf mysql/libmysqlclient_r.so . - ln -sf mysql/libmysqlclient_r.so.16 . - ) -else - exit 1 -fi - -# Packaging standards: -rm -f $PKG/usr/info/dir - # Compress and link manpages, if any: if [ -d $PKG/usr/man ]; then ( cd $PKG/usr/man @@ -220,4 +219,3 @@ fi # Build package: cd $PKG /sbin/makepkg -l y -c n $TMP/mysql-$VERSION-$ARCH-$BUILD.txz - diff --git a/source/ap/nano/doinst.sh b/source/ap/nano/doinst.sh new file mode 100644 index 00000000..3cd3405f --- /dev/null +++ b/source/ap/nano/doinst.sh @@ -0,0 +1,13 @@ +#!/bin/sh +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} +config etc/nanorc.new diff --git a/source/ap/nano/nano.SlackBuild b/source/ap/nano/nano.SlackBuild index c6e3c3ad..0f9e114c 100755 --- a/source/ap/nano/nano.SlackBuild +++ b/source/ap/nano/nano.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2006, 2007, 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -23,7 +23,7 @@ PKGNAM=nano VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} NUMJOBS=${NUMJOBS:-" -j7 "} @@ -39,12 +39,24 @@ fi if [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" + ARCHQUADLET="" elif [ "$ARCH" = "s390" ]; then SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + ARCHQUADLET="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" + ARCHQUADLET="" +elif [ "$ARCH" = "arm" ]; then + SLKCFLAGS="-O2 -march=armv5te" + LIBDIRSUFFIX="" + ARCHQUADLET="-gnueabi" else SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + ARCHQUADLET="" fi CWD=$(pwd) @@ -80,7 +92,8 @@ CFLAGS="$SLKCFLAGS" \ --enable-nanorc \ --enable-all \ --enable-utf8 \ - --build=$ARCH-slackware-linux + --disable-wrapping-as-root \ + --build=$ARCH-slackware-linux$ARCHQUADLET || exit 1 # Build and install: make $NUMJOBS || make || exit 1 @@ -113,6 +126,13 @@ if [ -d $PKG/usr/info ]; then ) fi +# Install a default /etc/nanorc file. This is the standard sample +# file from the doc directory that loads the colour configurations +# from /usr/share/nano. +mkdir -vpm755 $PKG/etc +sed 's?^# include?include?g' doc/nanorc.sample > $PKG/etc/nanorc.new +chmod 644 $PKG/etc/nanorc.new + # Add a documentation directory: mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION cp -a \ @@ -128,8 +148,10 @@ if [ -r ChangeLog ]; then touch -r ChangeLog $DOCSDIR/ChangeLog fi +# Place the package description and installation script: mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz diff --git a/source/ap/ntfsprogs/slack-desc b/source/ap/ntfsprogs/slack-desc deleted file mode 100644 index 4ed38c92..00000000 --- a/source/ap/ntfsprogs/slack-desc +++ /dev/null @@ -1,19 +0,0 @@ -# HOW TO EDIT THIS FILE: -# The "handy ruler" below makes it easier to edit a package description. Line -# up the first '|' above the ':' following the base package name, and the '|' -# on the right side marks the last column you can put a character in. You must -# make exactly 11 lines for the formatting to be correct. It's also -# customary to leave one space after the ':'. - - |-----handy-ruler------------------------------------------------------| -ntfsprogs: ntfsprogs (utilities for working with NTFS volumes) -ntfsprogs: -ntfsprogs: The ntfsprogs includes utilities for doing all required tasks to NTFS -ntfsprogs: partitions. In general, just run a utility without any command line -ntfsprogs: options to display the version number and usage syntax. The following -ntfsprogs: utilities are implemented (so far): ntfsfix, mkntfs, ntfslabel, -ntfsprogs: ntfsundelete, ntfsresize, ntfsclone, ntfscluster, ntfsinfo, ntfsls, -ntfsprogs: ntfscat, ntfscp, and ntfsmount. -ntfsprogs: -ntfsprogs: The Linux-NTFS home page is: http://www.linux-ntfs.org/ -ntfsprogs: diff --git a/source/ap/powertop/powertop.SlackBuild b/source/ap/powertop/powertop.SlackBuild index 7767580b..f4f4beae 100755 --- a/source/ap/powertop/powertop.SlackBuild +++ b/source/ap/powertop/powertop.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2010, 2012 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -20,10 +20,14 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# Modified by Willy Sudiarto Raharjo +# Changelog +# May, 11 : Bumped to 2.0, Fix compilation process, Added patch to fix complaints about a file +# May, 18 : Rebuilt, removed non-existence directory for man pages PKGNAM=powertop VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -35,6 +39,8 @@ if [ -z "$ARCH" ]; then esac fi +NUMJOBS=${NUMJOBS:-" -j7 "} + CWD=$(pwd) TMP=${TMP:-/tmp} PKG=$TMP/package-${PKGNAM} @@ -68,21 +74,45 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; +LDFLAGS=" -lresolv -lz " \ +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --docdir=/usr/doc/$PRGNAM-$VERSION \ + --build=$ARCH-slackware-linux + # Build and install: -make || exit 1 +make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG || exit 1 -# Move man pages: -mv $PKG/usr/share/man $PKG/usr - # Strip binaries: find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + # Add a documentation directory: mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION cp -a \ - COPYING* README* \ + COPYING* README* TODO \ $PKG/usr/doc/${PKGNAM}-$VERSION # If there's a ChangeLog, installing at least part of the recent history diff --git a/source/ap/rpm/rpm.SlackBuild b/source/ap/rpm/rpm.SlackBuild index 2f930c37..2891472b 100755 --- a/source/ap/rpm/rpm.SlackBuild +++ b/source/ap/rpm/rpm.SlackBuild @@ -55,10 +55,7 @@ elif [ "$ARCH" = "armel" ]; then LIBDIRSUFFIX="" fi -NSS_INC="/usr/include/seamonkey/nss" -NSPR_INC="/usr/include/seamonkey/nspr" -DB_INC="/usr/include/db44" -NSS_LIBS="/usr/lib${LIBDIRSUFFIX}/seamonkey" +DB_INC="/usr/include/db48" CWD=$(pwd) TMP=${TMP:-/tmp} @@ -78,11 +75,11 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -# We have to tell it where to find Seamonkey's NSS. +# We have to tell it where to find NSS and NSPR # Also, --enable-sqlite3 needs "-ldl" in LDFLAGS # And --enable-broken-chown fits, as ours follows symlinks. -CFLAGS="$SLKCFLAGS -I$NSS_INC -I$NSPR_INC -I$DB_INC" \ -LDFLAGS="-L${NSS_LIBS} -ldl" \ +CFLAGS="$SLKCFLAGS -I${DB_INC} $(pkg-config --cflags nspr nss)" \ +LDFLAGS="-ldl" \ ./configure \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ diff --git a/source/ap/screen/screen.SlackBuild b/source/ap/screen/screen.SlackBuild index 3464bc4a..29ad8c69 100755 --- a/source/ap/screen/screen.SlackBuild +++ b/source/ap/screen/screen.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA +# Copyright 2008, 2009, 2010, 2011 Patrick J. Volkerding, Sebeka, Minnesota, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -21,7 +21,7 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. VERSION=${VERSION:-4.0.3} -BUILD=${BUILD:-2} +BUILD=${BUILD:-3} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -51,10 +51,13 @@ rm -rf $PKG mkdir -p $TMP $PKG cd $TMP rm -rf screen-$VERSION -tar xjvf $CWD/screen-$VERSION.tar.bz2 +tar xvf $CWD/screen-$VERSION.tar.?z* || exit 1 cd screen-$VERSION || exit 1 +# Increase the size of the termname buffer from 20 to 63: +zcat $CWD/screen.d_termname.envterm.buffersizeincrease.diff.gz | patch -p1 --verbose || exit 1 + chown -R root:root . find . \ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ @@ -72,7 +75,7 @@ CFLAGS="$SLKCFLAGS" \ --enable-locale \ --enable-colors256 \ --enable-rxvt_osc \ - $ARCH-slackware-linux + --build=$ARCH-slackware-linux # Substitutions: perl -pi -e 's|.*#undef HAVE_BRAILLE.*|#define HAVE_BRAILLE 1|' config.h diff --git a/source/ap/screen/screen.d_termname.envterm.buffersizeincrease.diff b/source/ap/screen/screen.d_termname.envterm.buffersizeincrease.diff new file mode 100644 index 00000000..26765d6c --- /dev/null +++ b/source/ap/screen/screen.d_termname.envterm.buffersizeincrease.diff @@ -0,0 +1,22 @@ +--- ./display.h.orig 2003-07-01 09:01:42.000000000 -0500 ++++ ./display.h 2011-07-18 16:01:03.691998366 -0500 +@@ -85,7 +85,7 @@ + struct win *d_other; /* pointer to other window */ + int d_nonblock; /* -1 don't block if obufmax reached */ + /* >0: block after nonblock secs */ +- char d_termname[20 + 1]; /* $TERM */ ++ char d_termname[63 + 1]; /* $TERM */ + char *d_tentry; /* buffer for tgetstr */ + char d_tcinited; /* termcap inited flag */ + int d_width, d_height; /* width/height of the screen */ +--- ./screen.h.orig 2003-08-22 07:28:43.000000000 -0500 ++++ ./screen.h 2011-07-18 16:01:09.388004936 -0500 +@@ -202,7 +202,7 @@ + char preselect[20]; + int esc; /* his new escape character unless -1 */ + int meta_esc; /* his new meta esc character unless -1 */ +- char envterm[20 + 1]; /* terminal type */ ++ char envterm[63 + 1]; /* terminal type */ + int encoding; /* encoding of display */ + } + attach; diff --git a/source/ap/soma/slack-desc b/source/ap/soma/slack-desc new file mode 100644 index 00000000..bc1725a6 --- /dev/null +++ b/source/ap/soma/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +soma: Soma - a command line/dialog internet radio player +soma: +soma: Soma is a frontend for mplayer to play radio playlists pls,m3u and +soma: ram. More will be added as it progresses. +soma: +soma: Homepage: http://www.dawoodfall.net/slackbuilds/noversion/soma +soma: +soma: +soma: +soma: +soma: diff --git a/source/ap/soma/soma.SlackBuild b/source/ap/soma/soma.SlackBuild new file mode 100755 index 00000000..c7cc38ae --- /dev/null +++ b/source/ap/soma/soma.SlackBuild @@ -0,0 +1,67 @@ +#!/bin/sh + +# Slackware build script for soma +# Copyright 2010-2011 David Woodfall <dave@dawoodfall.net> +# Copyright 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=soma +VERSION=${VERSION:-2.8.5} +ARCH=noarch +BUILD=${BUILD:-1} +TAG=${TAG:-} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM +OUTPUT=${OUTPUT:-/tmp} + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.gz +cd $PKGNAM-$VERSION +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +mkdir -p $PKG/usr/bin $PKG/etc/soma $PKG/install $PKG/usr/doc/$PKGNAM-$VERSION + +install -m 755 soma $PKG/usr/bin/soma +install --m 644 options.conf $PKG/etc/soma +install --m 644 stations.conf $PKG/etc/soma +install --m 644 dialogrc $PKG/etc/soma + +cp -a \ + README \ + $PKG/usr/doc/$PKGNAM-$VERSION + +#cat $CWD/$PKGNAM.SlackBuild > $PKG/usr/doc/$PKGNAM-$VERSION/$PKGNAM.SlackBuild +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PKGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz} + diff --git a/source/ap/soma/soma.info b/source/ap/soma/soma.info new file mode 100644 index 00000000..0255d3d6 --- /dev/null +++ b/source/ap/soma/soma.info @@ -0,0 +1,10 @@ +PRGNAM="soma" +VERSION="2.8.5" +HOMEPAGE="http://www.dawoodfall.net/files/slackbuilds/noversion/soma/" +DOWNLOAD="http://www.dawoodfall.net/files/slackbuilds/noversion/soma/soma-2.8.5.tar.gz" +MD5SUM="193112a1dc8de8781b83d3a1bceedee6" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +MAINTAINER="David Woodfall" +EMAIL="dave@dawoodfall.net" +APPROVED="" diff --git a/source/ap/soma/soma.png b/source/ap/soma/soma.png Binary files differnew file mode 100644 index 00000000..1e545a93 --- /dev/null +++ b/source/ap/soma/soma.png diff --git a/source/ap/soma/stations.conf b/source/ap/soma/stations.conf new file mode 100644 index 00000000..4a2c4308 --- /dev/null +++ b/source/ap/soma/stations.conf @@ -0,0 +1,38 @@ +Groove Salad,http://somafm.com/groovesalad130.pls +Lush,http://somafm.com/lush.pls +Suburbs of Goa,http://somafm.com/suburbsofgoa.pls +Drone Zone,http://somafm.com/dronezone.pls +Indie Pop Rocks,http://somafm.com/indiepop.pls +Digitalis,http://somafm.com/digitalis.pls +PopTron,http://somafm.com/poptron.pls +Covers,http://somafm.com/covers.pls +Secret Agent,http://somafm.com/secretagent.pls +Boot Liquor,http://somafm.com/bootliquor.pls +Illinois Street Lounge,http://somafm.com/illstreet.pls +Cliqhop IDM,http://somafm.com/cliqhop.pls +Sonic Universe,http://somafm.com/sonicuniverse.pls +Beat Blender,http://somafm.com/beatblender.pls +Tag's Trip,http://somafm.com/tags.pls +Space Station Soma,http://somafm.com/spacestation.pls +Mission Control,http://somafm.com/missioncontrol.pls +Doomed,http://somafm.com/doomed.pls +BBC Radio 1,http://www.bbc.co.uk/radio/listen/live/r1.asx +BBC Radio 2,http://www.bbc.co.uk/radio/listen/live/r2.asx +BBC Radio 3,http://www.bbc.co.uk/radio/listen/live/r3.asx +BBC Radio 4,http://www.bbc.co.uk/radio/listen/live/r4.asx +BBC Radio 7,http://www.bbc.co.uk/radio/listen/live/r7.asx +BBC World Service,http://www.bbc.co.uk/worldservice/meta/tx/nb/live/eneuk.asx +BBC WS News,http://www.bbc.co.uk/worldservice/meta/tx/nb/live/ennws.asx +Classic FM,http://mediaweb.musicradio.com/V1/Playlist.asx?StreamID=2 +InterGalacticFM1,http://radio.intergalacticfm.com/1.m3u +InterGalacticFM2,http://radio.intergalacticfm.com/2.m3u +InterGalacticFM3,http://radio.intergalacticfm.com/3.m3u +InterGalacticFM4,http://radio.intergalacticfm.com/4.m3u +DarkWave Gothic,http://yp.shoutcast.com/sbin/tunein-station.pls?id=392221 +Meridian FM,http://www.meridianfm.com/listen2meridianfm.m3uj +kpfa,http://www.kpfa.org/streams/kpfa_64k.m3u +wcbn,http://floyd.wcbn.org/wcbn-hi.m3u +Pyrolitical,http://broadcast.pyrolitical.com:8000/Pyrolitical_Radio.m3u +Dissident,http://radio.indybay.org:8000/dissidentisland.m3u +GFMONLINE,http://www.gfmradio.com/GFMONLINE.wvx +Celtic Music Radio,http://www.celticmusicradio.net/celtic_live.m3u diff --git a/source/ap/sqlite/sqlite.SlackBuild b/source/ap/sqlite/sqlite.SlackBuild index 61f259b0..bbb03bd3 100755 --- a/source/ap/sqlite/sqlite.SlackBuild +++ b/source/ap/sqlite/sqlite.SlackBuild @@ -3,7 +3,7 @@ # Slackware build script for sqlite # Copyright 2006 Martin Lefebvre <dadexter@gmail.com> -# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2008, 2009, 2010, 2012 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -25,7 +25,7 @@ PKGNAM=sqlite VERSION=${VERSION:-$(echo $PKGNAM-src-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -OLD_STYLE=$(echo $VERSION | tr 0 . | cut -f 1-3 -d .) +OLD_STYLE=$(printf %d $(echo $VERSION | cut -b 1)).$(printf %d $(echo $VERSION | cut -b 2,3)).$(printf %d $(echo $VERSION | cut -b 4,5)) BUILD=${BUILD:-1} NUMJOBS=${NUMJOBS:-" -j7 "} @@ -59,7 +59,7 @@ else fi # Enable some features: -SLKCFLAGS="$SLKCFLAGS -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_DISABLE_DIRSYNC=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_STAT2=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -DSQLITE_SECURE_DELETE=1" +SLKCFLAGS="$SLKCFLAGS -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_DISABLE_DIRSYNC=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_STAT2=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -DSQLITE_SECURE_DELETE=1" rm -rf $PKG mkdir -p $TMP $PKG diff --git a/source/ap/sudo/sudo.SlackBuild b/source/ap/sudo/sudo.SlackBuild index c3b85360..8081e917 100755 --- a/source/ap/sudo/sudo.SlackBuild +++ b/source/ap/sudo/sudo.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2008, 2009, 2010, 2011 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2008, 2009, 2010, 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -22,7 +22,7 @@ PKGNAM=sudo -VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: @@ -56,7 +56,7 @@ fi cd $TMP rm -rf sudo-$VERSION -tar xvf $CWD/sudo-$VERSION.tar.gz || exit 1 +tar xvf $CWD/sudo-$VERSION.tar.?z* || exit 1 cd sudo-$VERSION chown -R root:root . @@ -99,8 +99,8 @@ mv $PKG/etc/sudoers $PKG/etc/sudoers.new rm -r $PKG/usr/doc/sudo-$VERSION mkdir -p $PKG/usr/doc/sudo-$VERSION cp -a \ - BUGS HISTORY INSTALL LICENSE PORTING README* \ - RUNSON TODO TROUBLESHOOTING UPGRADE WHATSNEW \ + INSTALL NEWS README* \ + doc/{CONTRIBUTORS,HISTORY,LICENSE,TROUBLESHOOTING,UPGRADE} \ $PKG/usr/doc/sudo-$VERSION chmod 644 $PKG/usr/doc/sudo-$VERSION/* diff --git a/source/ap/vbetool/slack-desc b/source/ap/vbetool/slack-desc index c4396691..b10d5fa4 100644 --- a/source/ap/vbetool/slack-desc +++ b/source/ap/vbetool/slack-desc @@ -11,7 +11,7 @@ vbetool: vbetool: vbetool is a small application that executes code from the BIOS of vbetool: your video card. vbetool: -vbetool: This is mostly useful for reinitialising the hardware, for instance +vbetool: This is mostly useful for reinitializing the hardware, for instance vbetool: after ACPI suspend/resuming. vbetool: vbetool: Homepage: http://www.codon.org.uk/~mjg59/vbetool/ diff --git a/source/ap/vim/patches/7.3.155 b/source/ap/vim/patches/7.3.155 new file mode 100644 index 00000000..806efca2 --- /dev/null +++ b/source/ap/vim/patches/7.3.155 @@ -0,0 +1,286 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.155 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.155 +Problem: Crash when using map(), filter() and remove() on v:. (ZyX) + Also for extend(). (Yukihiro Nakadaira) +Solution: Mark v: as locked. Also correct locking error messages. +Files: src/eval.c + + +*** ../vim-7.3.154/src/eval.c 2011-04-01 16:07:41.000000000 +0200 +--- src/eval.c 2011-04-11 13:28:34.000000000 +0200 +*************** +*** 853,858 **** +--- 853,859 ---- + + init_var_dict(&globvardict, &globvars_var); + init_var_dict(&vimvardict, &vimvars_var); ++ vimvardict.dv_lock = VAR_FIXED; + hash_init(&compat_hashtab); + hash_init(&func_hashtab); + +*************** +*** 8545,8551 **** + if (argvars[0].v_type == VAR_LIST) + { + if ((l = argvars[0].vval.v_list) != NULL +! && !tv_check_lock(l->lv_lock, (char_u *)"add()") + && list_append_tv(l, &argvars[1]) == OK) + copy_tv(&argvars[0], rettv); + } +--- 8546,8552 ---- + if (argvars[0].v_type == VAR_LIST) + { + if ((l = argvars[0].vval.v_list) != NULL +! && !tv_check_lock(l->lv_lock, (char_u *)_("add() argument")) + && list_append_tv(l, &argvars[1]) == OK) + copy_tv(&argvars[0], rettv); + } +*************** +*** 9946,9951 **** +--- 9947,9954 ---- + typval_T *argvars; + typval_T *rettv; + { ++ char *arg_errmsg = N_("extend() argument"); ++ + if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_LIST) + { + list_T *l1, *l2; +*************** +*** 9955,9961 **** + + l1 = argvars[0].vval.v_list; + l2 = argvars[1].vval.v_list; +! if (l1 != NULL && !tv_check_lock(l1->lv_lock, (char_u *)"extend()") + && l2 != NULL) + { + if (argvars[2].v_type != VAR_UNKNOWN) +--- 9958,9964 ---- + + l1 = argvars[0].vval.v_list; + l2 = argvars[1].vval.v_list; +! if (l1 != NULL && !tv_check_lock(l1->lv_lock, (char_u *)_(arg_errmsg)) + && l2 != NULL) + { + if (argvars[2].v_type != VAR_UNKNOWN) +*************** +*** 9994,10000 **** + + d1 = argvars[0].vval.v_dict; + d2 = argvars[1].vval.v_dict; +! if (d1 != NULL && !tv_check_lock(d1->dv_lock, (char_u *)"extend()") + && d2 != NULL) + { + /* Check the third argument. */ +--- 9997,10003 ---- + + d1 = argvars[0].vval.v_dict; + d2 = argvars[1].vval.v_dict; +! if (d1 != NULL && !tv_check_lock(d1->dv_lock, (char_u *)_(arg_errmsg)) + && d2 != NULL) + { + /* Check the third argument. */ +*************** +*** 10236,10255 **** + typval_T save_key; + int rem; + int todo; +! char_u *ermsg = map ? (char_u *)"map()" : (char_u *)"filter()"; + int save_did_emsg; + int idx = 0; + + if (argvars[0].v_type == VAR_LIST) + { + if ((l = argvars[0].vval.v_list) == NULL +! || (map && tv_check_lock(l->lv_lock, ermsg))) + return; + } + else if (argvars[0].v_type == VAR_DICT) + { + if ((d = argvars[0].vval.v_dict) == NULL +! || (map && tv_check_lock(d->dv_lock, ermsg))) + return; + } + else +--- 10239,10260 ---- + typval_T save_key; + int rem; + int todo; +! char_u *ermsg = (char_u *)(map ? "map()" : "filter()"); +! char *arg_errmsg = (map ? N_("map() argument") +! : N_("filter() argument")); + int save_did_emsg; + int idx = 0; + + if (argvars[0].v_type == VAR_LIST) + { + if ((l = argvars[0].vval.v_list) == NULL +! || tv_check_lock(l->lv_lock, (char_u *)_(arg_errmsg))) + return; + } + else if (argvars[0].v_type == VAR_DICT) + { + if ((d = argvars[0].vval.v_dict) == NULL +! || tv_check_lock(d->dv_lock, (char_u *)_(arg_errmsg))) + return; + } + else +*************** +*** 10286,10292 **** + { + --todo; + di = HI2DI(hi); +! if (tv_check_lock(di->di_tv.v_lock, ermsg)) + break; + vimvars[VV_KEY].vv_str = vim_strsave(di->di_key); + if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL +--- 10291,10298 ---- + { + --todo; + di = HI2DI(hi); +! if (tv_check_lock(di->di_tv.v_lock, +! (char_u *)_(arg_errmsg))) + break; + vimvars[VV_KEY].vv_str = vim_strsave(di->di_key); + if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL +*************** +*** 10305,10311 **** + + for (li = l->lv_first; li != NULL; li = nli) + { +! if (tv_check_lock(li->li_tv.v_lock, ermsg)) + break; + nli = li->li_next; + vimvars[VV_KEY].vv_nr = idx; +--- 10311,10317 ---- + + for (li = l->lv_first; li != NULL; li = nli) + { +! if (tv_check_lock(li->li_tv.v_lock, (char_u *)_(arg_errmsg))) + break; + nli = li->li_next; + vimvars[VV_KEY].vv_nr = idx; +*************** +*** 12910,12916 **** + if (argvars[0].v_type != VAR_LIST) + EMSG2(_(e_listarg), "insert()"); + else if ((l = argvars[0].vval.v_list) != NULL +! && !tv_check_lock(l->lv_lock, (char_u *)"insert()")) + { + if (argvars[2].v_type != VAR_UNKNOWN) + before = get_tv_number_chk(&argvars[2], &error); +--- 12916,12922 ---- + if (argvars[0].v_type != VAR_LIST) + EMSG2(_(e_listarg), "insert()"); + else if ((l = argvars[0].vval.v_list) != NULL +! && !tv_check_lock(l->lv_lock, (char_u *)_("insert() argument"))) + { + if (argvars[2].v_type != VAR_UNKNOWN) + before = get_tv_number_chk(&argvars[2], &error); +*************** +*** 14775,14787 **** + char_u *key; + dict_T *d; + dictitem_T *di; + + if (argvars[0].v_type == VAR_DICT) + { + if (argvars[2].v_type != VAR_UNKNOWN) + EMSG2(_(e_toomanyarg), "remove()"); + else if ((d = argvars[0].vval.v_dict) != NULL +! && !tv_check_lock(d->dv_lock, (char_u *)"remove() argument")) + { + key = get_tv_string_chk(&argvars[1]); + if (key != NULL) +--- 14781,14794 ---- + char_u *key; + dict_T *d; + dictitem_T *di; ++ char *arg_errmsg = N_("remove() argument"); + + if (argvars[0].v_type == VAR_DICT) + { + if (argvars[2].v_type != VAR_UNKNOWN) + EMSG2(_(e_toomanyarg), "remove()"); + else if ((d = argvars[0].vval.v_dict) != NULL +! && !tv_check_lock(d->dv_lock, (char_u *)_(arg_errmsg))) + { + key = get_tv_string_chk(&argvars[1]); + if (key != NULL) +*************** +*** 14801,14807 **** + else if (argvars[0].v_type != VAR_LIST) + EMSG2(_(e_listdictarg), "remove()"); + else if ((l = argvars[0].vval.v_list) != NULL +! && !tv_check_lock(l->lv_lock, (char_u *)"remove() argument")) + { + int error = FALSE; + +--- 14808,14814 ---- + else if (argvars[0].v_type != VAR_LIST) + EMSG2(_(e_listdictarg), "remove()"); + else if ((l = argvars[0].vval.v_list) != NULL +! && !tv_check_lock(l->lv_lock, (char_u *)_(arg_errmsg))) + { + int error = FALSE; + +*************** +*** 15135,15141 **** + if (argvars[0].v_type != VAR_LIST) + EMSG2(_(e_listarg), "reverse()"); + else if ((l = argvars[0].vval.v_list) != NULL +! && !tv_check_lock(l->lv_lock, (char_u *)"reverse()")) + { + li = l->lv_last; + l->lv_first = l->lv_last = NULL; +--- 15142,15148 ---- + if (argvars[0].v_type != VAR_LIST) + EMSG2(_(e_listarg), "reverse()"); + else if ((l = argvars[0].vval.v_list) != NULL +! && !tv_check_lock(l->lv_lock, (char_u *)_("reverse() argument"))) + { + li = l->lv_last; + l->lv_first = l->lv_last = NULL; +*************** +*** 16432,16438 **** + else + { + l = argvars[0].vval.v_list; +! if (l == NULL || tv_check_lock(l->lv_lock, (char_u *)"sort()")) + return; + rettv->vval.v_list = l; + rettv->v_type = VAR_LIST; +--- 16439,16446 ---- + else + { + l = argvars[0].vval.v_list; +! if (l == NULL || tv_check_lock(l->lv_lock, +! (char_u *)_("sort() argument"))) + return; + rettv->vval.v_list = l; + rettv->v_type = VAR_LIST; +*** ../vim-7.3.154/src/version.c 2011-04-02 15:12:45.000000000 +0200 +--- src/version.c 2011-04-11 13:13:38.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 155, + /**/ + +-- +I used to be indecisive, now I'm not sure. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.156 b/source/ap/vim/patches/7.3.156 new file mode 100644 index 00000000..ec873242 --- /dev/null +++ b/source/ap/vim/patches/7.3.156 @@ -0,0 +1,89 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.156 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.156 +Problem: Tty names possibly left unterminated. +Solution: Use vim_strncpy() instead of strncpy(). +Files: src/pty.c + + +*** ../vim-7.3.155/src/pty.c 2010-08-15 21:57:28.000000000 +0200 +--- src/pty.c 2011-04-11 14:02:49.000000000 +0200 +*************** +*** 209,216 **** + #ifdef _SEQUENT_ + fvhangup(s); + #endif +! strncpy(PtyName, m, sizeof(PtyName)); +! strncpy(TtyName, s, sizeof(TtyName)); + initmaster(f); + *ttyn = TtyName; + return f; +--- 209,216 ---- + #ifdef _SEQUENT_ + fvhangup(s); + #endif +! vim_strncpy((char_u *)PtyName, (char_u *)m, sizeof(PtyName) - 1); +! vim_strncpy((char_u *)TtyName, (char_u *)s, sizeof(TtyName) - 1); + initmaster(f); + *ttyn = TtyName; + return f; +*************** +*** 301,307 **** + return -1; + } + signal(SIGCHLD, sigcld); +! strncpy(TtyName, m, sizeof(TtyName)); + initmaster(f); + *ttyn = TtyName; + return f; +--- 301,307 ---- + return -1; + } + signal(SIGCHLD, sigcld); +! vim_strncpy((char_u *)TtyName, (char_u *)m, sizeof(TtyName) - 1); + initmaster(f); + *ttyn = TtyName; + return f; +*************** +*** 326,332 **** + /* a dumb looking loop replaced by mycrofts code: */ + if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_EXTRA)) < 0) + return -1; +! strncpy(TtyName, ttyname(f), sizeof(TtyName)); + if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK)) + { + close(f); +--- 326,332 ---- + /* a dumb looking loop replaced by mycrofts code: */ + if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_EXTRA)) < 0) + return -1; +! vim_strncpy((char_u *)TtyName, (char_u *)ttyname(f), sizeof(TtyName) - 1); + if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK)) + { + close(f); +*** ../vim-7.3.155/src/version.c 2011-04-11 13:46:07.000000000 +0200 +--- src/version.c 2011-04-11 14:23:38.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 156, + /**/ + +-- +I think that you'll agree that engineers are very effective in their social +interactions. It's the "normal" people who are nuts. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.157 b/source/ap/vim/patches/7.3.157 new file mode 100644 index 00000000..403c9486 --- /dev/null +++ b/source/ap/vim/patches/7.3.157 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.157 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.157 +Problem: Superfluous assignment. +Solution: Remove assignment. +Files: src/misc1.c + + +*** ../vim-7.3.156/src/misc1.c 2011-03-22 13:07:19.000000000 +0100 +--- src/misc1.c 2011-04-11 14:11:17.000000000 +0200 +*************** +*** 6773,6780 **** + { + curwin->w_cursor.lnum = our_paren_pos.lnum; + curwin->w_cursor.col = col; +! if ((trypos = find_match_paren(ind_maxparen, +! ind_maxcomment)) != NULL) + amount += ind_unclosed2; + else + amount += ind_unclosed; +--- 6775,6781 ---- + { + curwin->w_cursor.lnum = our_paren_pos.lnum; + curwin->w_cursor.col = col; +! if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL) + amount += ind_unclosed2; + else + amount += ind_unclosed; +*** ../vim-7.3.156/src/version.c 2011-04-11 14:24:33.000000000 +0200 +--- src/version.c 2011-04-11 14:25:36.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 157, + /**/ + +-- +A radioactive cat has eighteen half-lives. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.158 b/source/ap/vim/patches/7.3.158 new file mode 100644 index 00000000..8fba3508 --- /dev/null +++ b/source/ap/vim/patches/7.3.158 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.158 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.158 +Problem: Might use uninitialized memory in C indenting. +Solution: Init arrays to empty. +Files: src/misc1.c + + +*** ../vim-7.3.157/src/misc1.c 2011-04-11 14:26:15.000000000 +0200 +--- src/misc1.c 2011-04-11 14:11:17.000000000 +0200 +*************** +*** 6433,6438 **** +--- 6433,6440 ---- + /* find how indented the line beginning the comment is */ + getvcol(curwin, trypos, &col, NULL, NULL); + amount = col; ++ *lead_start = NUL; ++ *lead_middle = NUL; + + p = curbuf->b_p_com; + while (*p != NUL) +*** ../vim-7.3.157/src/version.c 2011-04-11 14:26:15.000000000 +0200 +--- src/version.c 2011-04-11 14:27:05.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 158, + /**/ + +-- +It's totally unfair to suggest - as many have - that engineers are socially +inept. Engineers simply have different objectives when it comes to social +interaction. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.159 b/source/ap/vim/patches/7.3.159 new file mode 100644 index 00000000..7029ac86 --- /dev/null +++ b/source/ap/vim/patches/7.3.159 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.159 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.159 +Problem: Using uninitialized pointer when out of memory. +Solution: Check for NULL return value. +Files: src/mbyte.c + + +*** ../vim-7.3.158/src/mbyte.c 2010-10-27 13:37:39.000000000 +0200 +--- src/mbyte.c 2011-04-11 14:17:39.000000000 +0200 +*************** +*** 4129,4135 **** + done = to - (char *)result; + } + +! if (resultlenp != NULL) + *resultlenp = (int)(to - (char *)result); + return result; + } +--- 4129,4135 ---- + done = to - (char *)result; + } + +! if (resultlenp != NULL && result != NULL) + *resultlenp = (int)(to - (char *)result); + return result; + } +*** ../vim-7.3.158/src/version.c 2011-04-11 14:27:34.000000000 +0200 +--- src/version.c 2011-04-11 14:28:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 159, + /**/ + +-- +I learned the customs and mannerisms of engineers by observing them, much the +way Jane Goodall learned about the great apes, but without the hassle of +grooming. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.160 b/source/ap/vim/patches/7.3.160 new file mode 100644 index 00000000..bf3a069f --- /dev/null +++ b/source/ap/vim/patches/7.3.160 @@ -0,0 +1,482 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.160 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.160 +Problem: Unsafe string copying. +Solution: Use vim_strncpy() instead of strcpy(). Use vim_strcat() instead + of strcat(). +Files: src/buffer.c, src/ex_docmd.c, src/hardcopy.c, src/menu.c, + src/misc1.c, src/misc2.c, src/proto/misc2.pro, src/netbeans.c, + src/os_unix.c, src/spell.c, src/syntax.c, src/tag.c + +*** ../vim-7.3.159/src/buffer.c 2011-02-15 14:24:42.000000000 +0100 +--- src/buffer.c 2011-04-11 16:08:38.000000000 +0200 +*************** +*** 3176,3182 **** + /* format: "fname + (path) (1 of 2) - VIM" */ + + if (curbuf->b_fname == NULL) +! STRCPY(buf, _("[No Name]")); + else + { + p = transstr(gettail(curbuf->b_fname)); +--- 3176,3182 ---- + /* 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)); +*************** +*** 3232,3238 **** + if (serverName != NULL) + { + STRCAT(buf, " - "); +! STRCAT(buf, serverName); + } + else + #endif +--- 3232,3238 ---- + if (serverName != NULL) + { + STRCAT(buf, " - "); +! vim_strcat(buf, serverName, IOSIZE); + } + else + #endif +*** ../vim-7.3.159/src/ex_docmd.c 2011-03-03 15:54:45.000000000 +0100 +--- src/ex_docmd.c 2011-04-11 15:43:48.000000000 +0200 +*************** +*** 5096,5102 **** + char_u buff[IOSIZE]; + + if (n == 1) +! STRCPY(buff, _("1 more file to edit. Quit anyway?")); + else + vim_snprintf((char *)buff, IOSIZE, + _("%d more files to edit. Quit anyway?"), n); +--- 5096,5104 ---- + char_u buff[IOSIZE]; + + if (n == 1) +! vim_strncpy(buff, +! (char_u *)_("1 more file to edit. Quit anyway?"), +! IOSIZE - 1); + else + vim_snprintf((char *)buff, IOSIZE, + _("%d more files to edit. Quit anyway?"), n); +*** ../vim-7.3.159/src/hardcopy.c 2010-08-15 21:57:25.000000000 +0200 +--- src/hardcopy.c 2011-04-11 15:30:09.000000000 +0200 +*************** +*** 1761,1772 **** + { + char_u buffer[MAXPATHL + 1]; + +! STRCPY(resource->name, name); + /* Look for named resource file in runtimepath */ + STRCPY(buffer, "print"); + add_pathsep(buffer); +! STRCAT(buffer, name); +! STRCAT(buffer, ".ps"); + resource->filename[0] = NUL; + return (do_in_runtimepath(buffer, FALSE, prt_resource_name, + resource->filename) +--- 1761,1772 ---- + { + char_u buffer[MAXPATHL + 1]; + +! vim_strncpy(resource->name, (char_u *)name, 63); + /* Look for named resource file in runtimepath */ + STRCPY(buffer, "print"); + add_pathsep(buffer); +! vim_strcat(buffer, (char_u *)name, MAXPATHL); +! vim_strcat(buffer, (char_u *)".ps", MAXPATHL); + resource->filename[0] = NUL; + return (do_in_runtimepath(buffer, FALSE, prt_resource_name, + resource->filename) +*** ../vim-7.3.159/src/menu.c 2011-01-04 17:49:25.000000000 +0100 +--- src/menu.c 2011-04-11 15:17:21.000000000 +0200 +*************** +*** 1394,1400 **** + int idx; + { + static vimmenu_T *menu = NULL; +! static char_u tbuffer[256]; /*hack*/ + char_u *str; + #ifdef FEAT_MULTI_LANG + static int should_advance = FALSE; +--- 1394,1401 ---- + int idx; + { + static vimmenu_T *menu = NULL; +! #define TBUFFER_LEN 256 +! static char_u tbuffer[TBUFFER_LEN]; /*hack*/ + char_u *str; + #ifdef FEAT_MULTI_LANG + static int should_advance = FALSE; +*************** +*** 1428,1438 **** + { + #ifdef FEAT_MULTI_LANG + if (should_advance) +! STRCPY(tbuffer, menu->en_dname); + else + { + #endif +! STRCPY(tbuffer, menu->dname); + #ifdef FEAT_MULTI_LANG + if (menu->en_dname == NULL) + should_advance = TRUE; +--- 1429,1439 ---- + { + #ifdef FEAT_MULTI_LANG + if (should_advance) +! vim_strncpy(tbuffer, menu->en_dname, TBUFFER_LEN - 2); + else + { + #endif +! vim_strncpy(tbuffer, menu->dname, TBUFFER_LEN - 2); + #ifdef FEAT_MULTI_LANG + if (menu->en_dname == NULL) + should_advance = TRUE; +*** ../vim-7.3.159/src/misc1.c 2011-04-11 14:27:34.000000000 +0200 +--- src/misc1.c 2011-04-11 16:03:22.000000000 +0200 +*************** +*** 3332,3350 **** + if (pn == 1) + { + if (n > 0) +! STRCPY(msg_buf, _("1 more line")); + else +! STRCPY(msg_buf, _("1 line less")); + } + else + { + if (n > 0) +! sprintf((char *)msg_buf, _("%ld more lines"), pn); + else +! sprintf((char *)msg_buf, _("%ld fewer lines"), pn); + } + if (got_int) +! STRCAT(msg_buf, _(" (Interrupted)")); + if (msg(msg_buf)) + { + set_keep_msg(msg_buf, 0); +--- 3332,3354 ---- + if (pn == 1) + { + if (n > 0) +! vim_strncpy(msg_buf, (char_u *)_("1 more line"), +! MSG_BUF_LEN - 1); + else +! vim_strncpy(msg_buf, (char_u *)_("1 line less"), +! MSG_BUF_LEN - 1); + } + else + { + if (n > 0) +! vim_snprintf((char *)msg_buf, MSG_BUF_LEN, +! _("%ld more lines"), pn); + else +! vim_snprintf((char *)msg_buf, MSG_BUF_LEN, +! _("%ld fewer lines"), pn); + } + if (got_int) +! vim_strcat(msg_buf, (char_u *)_(" (Interrupted)"), MSG_BUF_LEN); + if (msg(msg_buf)) + { + set_keep_msg(msg_buf, 0); +*** ../vim-7.3.159/src/misc2.c 2010-12-08 13:11:15.000000000 +0100 +--- src/misc2.c 2011-04-11 15:30:20.000000000 +0200 +*************** +*** 1647,1652 **** +--- 1647,1674 ---- + } + + /* ++ * Like strcat(), but make sure the result fits in "tosize" bytes and is ++ * always NUL terminated. ++ */ ++ void ++ vim_strcat(to, from, tosize) ++ char_u *to; ++ char_u *from; ++ size_t tosize; ++ { ++ size_t tolen = STRLEN(to); ++ size_t fromlen = STRLEN(from); ++ ++ if (tolen + fromlen + 1 > tosize) ++ { ++ mch_memmove(to + tolen, from, tosize - tolen - 1); ++ to[tosize - 1] = NUL; ++ } ++ else ++ STRCPY(to + tolen, from); ++ } ++ ++ /* + * Isolate one part of a string option where parts are separated with + * "sep_chars". + * The part is copied into "buf[maxlen]". +*** ../vim-7.3.159/src/proto/misc2.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/misc2.pro 2011-04-11 15:29:55.000000000 +0200 +*************** +*** 40,45 **** +--- 40,46 ---- + void copy_chars __ARGS((char_u *ptr, size_t count, int c)); + void del_trailing_spaces __ARGS((char_u *ptr)); + void vim_strncpy __ARGS((char_u *to, char_u *from, size_t len)); ++ void vim_strcat __ARGS((char_u *to, char_u *from, size_t tosize)); + int copy_option_part __ARGS((char_u **option, char_u *buf, int maxlen, char *sep_chars)); + void vim_free __ARGS((void *x)); + int vim_stricmp __ARGS((char *s1, char *s2)); +*** ../vim-7.3.159/src/netbeans.c 2011-04-01 15:33:54.000000000 +0200 +--- src/netbeans.c 2011-04-11 16:02:51.000000000 +0200 +*************** +*** 3914,3927 **** + } + else + { +! char_u ebuf[BUFSIZ]; + +! STRCPY(ebuf, (char_u *)_("E505: ")); +! STRCAT(ebuf, IObuff); +! STRCAT(ebuf, (char_u *)_("is read-only (add ! to override)")); +! STRCPY(IObuff, ebuf); +! nbdebug((" %s\n", ebuf )); +! emsg(IObuff); + } + } + +--- 3914,3925 ---- + } + else + { +! char_u msgbuf[IOSIZE]; + +! vim_snprintf((char *)msgbuf, IOSIZE, +! _("E505: %s is read-only (add ! to override)"), IObuff); +! nbdebug((" %s\n", msgbuf)); +! emsg(msgbuf); + } + } + +*** ../vim-7.3.159/src/os_unix.c 2011-02-15 17:39:14.000000000 +0100 +--- src/os_unix.c 2011-04-11 16:39:11.000000000 +0200 +*************** +*** 5725,5730 **** +--- 5725,5731 ---- + if (shell_style == STYLE_PRINT && !did_find_nul) + { + /* If there is a NUL, set did_find_nul, else set check_spaces */ ++ buffer[len] = NUL; + if (len && (int)STRLEN(buffer) < (int)len - 1) + did_find_nul = TRUE; + else +*************** +*** 6594,6600 **** + xterm_hints.x = 2; + return TRUE; + } +! if (mouse_code == NULL) + { + xterm_trace = 0; + return FALSE; +--- 6595,6601 ---- + xterm_hints.x = 2; + return TRUE; + } +! if (mouse_code == NULL || STRLEN(mouse_code) > 45) + { + xterm_trace = 0; + return FALSE; +*** ../vim-7.3.159/src/spell.c 2011-02-01 13:59:44.000000000 +0100 +--- src/spell.c 2011-04-11 15:50:40.000000000 +0200 +*************** +*** 6957,6963 **** + if (ae->ae_add == NULL) + *newword = NUL; + else +! STRCPY(newword, ae->ae_add); + p = word; + if (ae->ae_chop != NULL) + { +--- 6957,6963 ---- + if (ae->ae_add == NULL) + *newword = NUL; + else +! vim_strncpy(newword, ae->ae_add, MAXWLEN - 1); + p = word; + if (ae->ae_chop != NULL) + { +*************** +*** 6978,6984 **** + else + { + /* suffix: chop/add at the end of the word */ +! STRCPY(newword, word); + if (ae->ae_chop != NULL) + { + /* Remove chop string. */ +--- 6978,6984 ---- + else + { + /* suffix: chop/add at the end of the word */ +! vim_strncpy(newword, word, MAXWLEN - 1); + if (ae->ae_chop != NULL) + { + /* Remove chop string. */ +*************** +*** 8654,8660 **** + * Write the .sug file. + * Make the file name by changing ".spl" to ".sug". + */ +! STRCPY(fname, wfname); + len = (int)STRLEN(fname); + fname[len - 2] = 'u'; + fname[len - 1] = 'g'; +--- 8654,8660 ---- + * Write the .sug file. + * Make the file name by changing ".spl" to ".sug". + */ +! vim_strncpy(fname, wfname, MAXPATHL - 1); + len = (int)STRLEN(fname); + fname[len - 2] = 'u'; + fname[len - 1] = 'g'; +*************** +*** 10261,10267 **** + + /* The suggested word may replace only part of the bad word, add + * the not replaced part. */ +! STRCPY(wcopy, stp->st_word); + if (sug.su_badlen > stp->st_orglen) + vim_strncpy(wcopy + stp->st_wordlen, + sug.su_badptr + stp->st_orglen, +--- 10261,10267 ---- + + /* The suggested word may replace only part of the bad word, add + * the not replaced part. */ +! vim_strncpy(wcopy, stp->st_word, MAXWLEN); + if (sug.su_badlen > stp->st_orglen) + vim_strncpy(wcopy + stp->st_wordlen, + sug.su_badptr + stp->st_orglen, +*************** +*** 13162,13168 **** + pbad = badsound2; + } + +! if (lendiff > 0) + { + /* Add part of the bad word to the good word, so that we soundfold + * what replaces the bad word. */ +--- 13162,13168 ---- + pbad = badsound2; + } + +! if (lendiff > 0 && stp->st_wordlen + lendiff < MAXWLEN) + { + /* Add part of the bad word to the good word, so that we soundfold + * what replaces the bad word. */ +*************** +*** 13875,13881 **** + for (i = gap->ga_len - 1; i >= 0; --i) + { + /* Need to append what follows to check for "the the". */ +! STRCPY(longword, stp[i].st_word); + len = stp[i].st_wordlen; + vim_strncpy(longword + len, su->su_badptr + stp[i].st_orglen, + MAXWLEN - len); +--- 13875,13881 ---- + for (i = gap->ga_len - 1; i >= 0; --i) + { + /* Need to append what follows to check for "the the". */ +! vim_strncpy(longword, stp[i].st_word, MAXWLEN); + len = stp[i].st_wordlen; + vim_strncpy(longword + len, su->su_badptr + stp[i].st_orglen, + MAXWLEN - len); +*************** +*** 14221,14227 **** + *t = NUL; + } + else +! STRCPY(word, s); + + smp = (salitem_T *)slang->sl_sal.ga_data; + +--- 14221,14227 ---- + *t = NUL; + } + else +! vim_strncpy(word, s, MAXWLEN - 1); + + smp = (salitem_T *)slang->sl_sal.ga_data; + +*** ../vim-7.3.159/src/syntax.c 2011-04-02 15:12:45.000000000 +0200 +--- src/syntax.c 2011-04-11 15:44:30.000000000 +0200 +*************** +*** 8576,8583 **** + if (iarg & hl_attr_table[i]) + { + if (buf[0] != NUL) +! STRCAT(buf, ","); +! STRCAT(buf, hl_name_table[i]); + iarg &= ~hl_attr_table[i]; /* don't want "inverse" */ + } + } +--- 8576,8583 ---- + if (iarg & hl_attr_table[i]) + { + if (buf[0] != NUL) +! vim_strcat(buf, (char_u *)",", 100); +! vim_strcat(buf, (char_u *)hl_name_table[i], 100); + iarg &= ~hl_attr_table[i]; /* don't want "inverse" */ + } + } +*** ../vim-7.3.159/src/tag.c 2011-02-25 15:13:43.000000000 +0100 +--- src/tag.c 2011-04-11 15:34:59.000000000 +0200 +*************** +*** 806,812 **** + p = tag_full_fname(&tagp); + if (p == NULL) + continue; +! STRCPY(fname, p); + vim_free(p); + + /* +--- 806,812 ---- + p = tag_full_fname(&tagp); + if (p == NULL) + continue; +! vim_strncpy(fname, p, MAXPATHL); + vim_free(p); + + /* +*** ../vim-7.3.159/src/version.c 2011-04-11 14:29:13.000000000 +0200 +--- src/version.c 2011-04-11 16:50:53.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 160, + /**/ + +-- +If someone questions your market projections, simply point out that your +target market is "People who are nuts" and "People who will buy any damn +thing". Nobody is going to tell you there aren't enough of those people +to go around. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.161 b/source/ap/vim/patches/7.3.161 new file mode 100644 index 00000000..61223ec2 --- /dev/null +++ b/source/ap/vim/patches/7.3.161 @@ -0,0 +1,1645 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.161 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.161 +Problem: Items on the stack may be too big. +Solution: Make items static or allocate them. +Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/fileio.c, src/hardcopy.c, src/quickfix.c, src/main.c, + src/netbeans.c, src/spell.c, src/tag.c, src/vim.h, src/xxd/xxd.c + + +*** ../vim-7.3.160/src/eval.c 2011-04-11 13:46:07.000000000 +0200 +--- src/eval.c 2011-04-11 21:05:50.000000000 +0200 +*************** +*** 11100,11117 **** + typval_T *argvars UNUSED; + typval_T *rettv; + { +! char_u cwd[MAXPATHL]; + + rettv->v_type = VAR_STRING; +! if (mch_dirname(cwd, MAXPATHL) == FAIL) +! rettv->vval.v_string = NULL; +! else + { +! rettv->vval.v_string = vim_strsave(cwd); + #ifdef BACKSLASH_IN_FILENAME +! if (rettv->vval.v_string != NULL) +! slash_adjust(rettv->vval.v_string); + #endif + } + } + +--- 11100,11121 ---- + typval_T *argvars UNUSED; + typval_T *rettv; + { +! char_u *cwd; + + rettv->v_type = VAR_STRING; +! rettv->vval.v_string = NULL; +! cwd = alloc(MAXPATHL); +! if (cwd != NULL) + { +! if (mch_dirname(cwd, MAXPATHL) != FAIL) +! { +! rettv->vval.v_string = vim_strsave(cwd); + #ifdef BACKSLASH_IN_FILENAME +! if (rettv->vval.v_string != NULL) +! slash_adjust(rettv->vval.v_string); + #endif ++ } ++ vim_free(cwd); + } + } + +*************** +*** 14938,14943 **** +--- 14942,14950 ---- + typval_T *rettv; + { + char_u *p; ++ #ifdef HAVE_READLINK ++ char_u *buf = NULL; ++ #endif + + p = get_tv_string(&argvars[0]); + #ifdef FEAT_SHORTCUT +*************** +*** 14953,14959 **** + #else + # ifdef HAVE_READLINK + { +- char_u buf[MAXPATHL + 1]; + char_u *cpy; + int len; + char_u *remain = NULL; +--- 14960,14965 ---- +*************** +*** 14981,14986 **** +--- 14987,14996 ---- + q[-1] = NUL; + } + ++ buf = alloc(MAXPATHL + 1); ++ if (buf == NULL) ++ goto fail; ++ + for (;;) + { + for (;;) +*************** +*** 15124,15129 **** +--- 15134,15140 ---- + + #ifdef HAVE_READLINK + fail: ++ vim_free(buf); + #endif + rettv->v_type = VAR_STRING; + } +*************** +*** 17604,17621 **** + typval_T *argvars UNUSED; + typval_T *rettv; + { +! char_u fname[MAXPATHL + 1]; + tagname_T tn; + int first; + + if (rettv_list_alloc(rettv) == FAIL) + return; + + for (first = TRUE; ; first = FALSE) + if (get_tagfname(&tn, first, fname) == FAIL + || list_append_string(rettv->vval.v_list, fname, -1) == FAIL) + break; + tagname_free(&tn); + } + + /* +--- 17615,17636 ---- + typval_T *argvars UNUSED; + typval_T *rettv; + { +! char_u *fname; + tagname_T tn; + int first; + + if (rettv_list_alloc(rettv) == FAIL) + return; ++ fname = alloc(MAXPATHL); ++ if (fname == NULL) ++ return; + + for (first = TRUE; ; first = FALSE) + if (get_tagfname(&tn, first, fname) == FAIL + || list_append_string(rettv->vval.v_list, fname, -1) == FAIL) + break; + tagname_free(&tn); ++ vim_free(fname); + } + + /* +*** ../vim-7.3.160/src/ex_cmds.c 2011-02-01 13:48:47.000000000 +0100 +--- src/ex_cmds.c 2011-04-11 20:51:34.000000000 +0200 +*************** +*** 2777,2783 **** + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + if (p_confirm || cmdmod.confirm) + { +! char_u buff[IOSIZE]; + + dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname); + if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES) +--- 2777,2783 ---- + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + if (p_confirm || cmdmod.confirm) + { +! char_u buff[DIALOG_MSG_SIZE]; + + dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname); + if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES) +*************** +*** 2795,2801 **** + /* For ":w! filename" check that no swap file exists for "filename". */ + if (other && !emsg_silent) + { +! char_u dir[MAXPATHL]; + char_u *p; + int r; + char_u *swapname; +--- 2795,2801 ---- + /* For ":w! filename" check that no swap file exists for "filename". */ + if (other && !emsg_silent) + { +! char_u *dir; + char_u *p; + int r; + char_u *swapname; +*************** +*** 2806,2825 **** + * Use 'shortname' of the current buffer, since there is no buffer + * for the written file. */ + if (*p_dir == NUL) + STRCPY(dir, "."); + else + { + p = p_dir; + copy_option_part(&p, dir, MAXPATHL, ","); + } + swapname = makeswapname(fname, ffname, curbuf, dir); + r = vim_fexists(swapname); + if (r) + { + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + if (p_confirm || cmdmod.confirm) + { +! char_u buff[IOSIZE]; + + dialog_msg(buff, + _("Swap file \"%s\" exists, overwrite anyway?"), +--- 2806,2834 ---- + * Use 'shortname' of the current buffer, since there is no buffer + * for the written file. */ + if (*p_dir == NUL) ++ { ++ dir = alloc(5); ++ if (dir == NULL) ++ return FAIL; + STRCPY(dir, "."); ++ } + else + { ++ dir = alloc(MAXPATHL); ++ if (dir == NULL) ++ return FAIL; + p = p_dir; + copy_option_part(&p, dir, MAXPATHL, ","); + } + swapname = makeswapname(fname, ffname, curbuf, dir); ++ vim_free(dir); + r = vim_fexists(swapname); + if (r) + { + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + if (p_confirm || cmdmod.confirm) + { +! char_u buff[DIALOG_MSG_SIZE]; + + dialog_msg(buff, + _("Swap file \"%s\" exists, overwrite anyway?"), +*************** +*** 2969,2975 **** + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL) + { +! char_u buff[IOSIZE]; + + if (buf->b_p_ro) + dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"), +--- 2978,2984 ---- + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL) + { +! char_u buff[DIALOG_MSG_SIZE]; + + if (buf->b_p_ro) + dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"), +*** ../vim-7.3.160/src/ex_cmds2.c 2011-02-25 14:46:06.000000000 +0100 +--- src/ex_cmds2.c 2011-04-11 20:51:40.000000000 +0200 +*************** +*** 1492,1498 **** + buf_T *buf; + int checkall; /* may abandon all changed buffers */ + { +! char_u buff[IOSIZE]; + int ret; + buf_T *buf2; + +--- 1492,1498 ---- + buf_T *buf; + int checkall; /* may abandon all changed buffers */ + { +! char_u buff[DIALOG_MSG_SIZE]; + int ret; + buf_T *buf2; + +*** ../vim-7.3.160/src/ex_docmd.c 2011-04-11 16:56:29.000000000 +0200 +--- src/ex_docmd.c 2011-04-11 21:20:35.000000000 +0200 +*************** +*** 5093,5106 **** + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL) + { +! char_u buff[IOSIZE]; + + if (n == 1) + vim_strncpy(buff, + (char_u *)_("1 more file to edit. Quit anyway?"), +! IOSIZE - 1); + else +! vim_snprintf((char *)buff, IOSIZE, + _("%d more files to edit. Quit anyway?"), n); + if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 1) == VIM_YES) + return OK; +--- 5093,5106 ---- + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL) + { +! char_u buff[DIALOG_MSG_SIZE]; + + if (n == 1) + vim_strncpy(buff, + (char_u *)_("1 more file to edit. Quit anyway?"), +! DIALOG_MSG_SIZE - 1); + else +! vim_snprintf((char *)buff, DIALOG_MSG_SIZE, + _("%d more files to edit. Quit anyway?"), n); + if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 1) == VIM_YES) + return OK; +*************** +*** 8926,8960 **** + failed = TRUE; + if (eap->cmdidx == CMD_mksession) + { +! char_u dirnow[MAXPATHL]; /* current directory */ + +! /* +! * Change to session file's dir. +! */ +! if (mch_dirname(dirnow, MAXPATHL) == FAIL +! || mch_chdir((char *)dirnow) != 0) +! *dirnow = NUL; +! if (*dirnow != NUL && (ssop_flags & SSOP_SESDIR)) +! { +! if (vim_chdirfile(fname) == OK) +! shorten_fnames(TRUE); +! } +! else if (*dirnow != NUL +! && (ssop_flags & SSOP_CURDIR) && globaldir != NULL) + { +! if (mch_chdir((char *)globaldir) == 0) +! shorten_fnames(TRUE); +! } + +! failed |= (makeopens(fd, dirnow) == FAIL); + +! /* restore original dir */ +! if (*dirnow != NUL && ((ssop_flags & SSOP_SESDIR) + || ((ssop_flags & SSOP_CURDIR) && globaldir != NULL))) +! { +! if (mch_chdir((char *)dirnow) != 0) +! EMSG(_(e_prev_dir)); +! shorten_fnames(TRUE); + } + } + else +--- 8926,8967 ---- + failed = TRUE; + if (eap->cmdidx == CMD_mksession) + { +! char_u *dirnow; /* current directory */ + +! dirnow = alloc(MAXPATHL); +! if (dirnow == NULL) +! failed = TRUE; +! else + { +! /* +! * Change to session file's dir. +! */ +! if (mch_dirname(dirnow, MAXPATHL) == FAIL +! || mch_chdir((char *)dirnow) != 0) +! *dirnow = NUL; +! if (*dirnow != NUL && (ssop_flags & SSOP_SESDIR)) +! { +! if (vim_chdirfile(fname) == OK) +! shorten_fnames(TRUE); +! } +! else if (*dirnow != NUL +! && (ssop_flags & SSOP_CURDIR) && globaldir != NULL) +! { +! if (mch_chdir((char *)globaldir) == 0) +! shorten_fnames(TRUE); +! } + +! failed |= (makeopens(fd, dirnow) == FAIL); + +! /* restore original dir */ +! if (*dirnow != NUL && ((ssop_flags & SSOP_SESDIR) + || ((ssop_flags & SSOP_CURDIR) && globaldir != NULL))) +! { +! if (mch_chdir((char *)dirnow) != 0) +! EMSG(_(e_prev_dir)); +! shorten_fnames(TRUE); +! } +! vim_free(dirnow); + } + } + else +*************** +*** 8985,8994 **** + else if (eap->cmdidx == CMD_mksession) + { + /* successful session write - set this_session var */ +! char_u tbuf[MAXPATHL]; + +! if (vim_FullName(fname, tbuf, MAXPATHL, FALSE) == OK) +! set_vim_var_string(VV_THIS_SESSION, tbuf, -1); + } + #endif + #ifdef MKSESSION_NL +--- 8992,9006 ---- + else if (eap->cmdidx == CMD_mksession) + { + /* successful session write - set this_session var */ +! char_u *tbuf; + +! tbuf = alloc(MAXPATHL); +! if (tbuf != NULL) +! { +! if (vim_FullName(fname, tbuf, MAXPATHL, FALSE) == OK) +! set_vim_var_string(VV_THIS_SESSION, tbuf, -1); +! vim_free(tbuf); +! } + } + #endif + #ifdef MKSESSION_NL +*************** +*** 10677,10683 **** + unsigned *flagp; + { + int i; +! char_u buf[MAXPATHL]; + char_u *s; + + if (gap->ga_len == 0) +--- 10689,10695 ---- + unsigned *flagp; + { + int i; +! char_u *buf = NULL; + char_u *s; + + if (gap->ga_len == 0) +*************** +*** 10692,10702 **** + { + if (fullname) + { +! (void)vim_FullName(s, buf, MAXPATHL, FALSE); +! s = buf; + } + if (fputs(" ", fd) < 0 || ses_put_fname(fd, s, flagp) == FAIL) + return FAIL; + } + } + return put_eol(fd); +--- 10704,10722 ---- + { + if (fullname) + { +! buf = alloc(MAXPATHL); +! if (buf != NULL) +! { +! (void)vim_FullName(s, buf, MAXPATHL, FALSE); +! s = buf; +! } + } + if (fputs(" ", fd) < 0 || ses_put_fname(fd, s, flagp) == FAIL) ++ { ++ vim_free(buf); + return FAIL; ++ } ++ vim_free(buf); + } + } + return put_eol(fd); +*************** +*** 10925,10931 **** + + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO) + /* +! * Make a dialog message in "buff[IOSIZE]". + * "format" must contain "%s". + */ + void +--- 10945,10951 ---- + + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO) + /* +! * Make a dialog message in "buff[DIALOG_MSG_SIZE]". + * "format" must contain "%s". + */ + void +*************** +*** 10936,10942 **** + { + if (fname == NULL) + fname = (char_u *)_("Untitled"); +! vim_snprintf((char *)buff, IOSIZE, format, fname); + } + #endif + +--- 10956,10962 ---- + { + if (fname == NULL) + fname = (char_u *)_("Untitled"); +! vim_snprintf((char *)buff, DIALOG_MSG_SIZE, format, fname); + } + #endif + +*** ../vim-7.3.160/src/fileio.c 2011-02-25 16:52:13.000000000 +0100 +--- src/fileio.c 2011-04-11 18:35:10.000000000 +0200 +*************** +*** 6023,6037 **** + shorten_fname1(full_path) + char_u *full_path; + { +! char_u dirname[MAXPATHL]; + char_u *p = full_path; + + if (mch_dirname(dirname, MAXPATHL) == OK) + { + p = shorten_fname(full_path, dirname); + if (p == NULL || *p == NUL) + p = full_path; + } + return p; + } + #endif +--- 6023,6041 ---- + shorten_fname1(full_path) + char_u *full_path; + { +! char_u *dirname; + char_u *p = full_path; + ++ dirname = alloc(MAXPATHL); ++ if (dirname == NULL) ++ return full_path; + if (mch_dirname(dirname, MAXPATHL) == OK) + { + p = shorten_fname(full_path, dirname); + if (p == NULL || *p == NUL) + p = full_path; + } ++ vim_free(dirname); + return p; + } + #endif +*** ../vim-7.3.160/src/hardcopy.c 2011-04-11 16:56:29.000000000 +0200 +--- src/hardcopy.c 2011-04-11 18:23:38.000000000 +0200 +*************** +*** 1759,1765 **** + char *name; + struct prt_ps_resource_S *resource; + { +! char_u buffer[MAXPATHL + 1]; + + vim_strncpy(resource->name, (char_u *)name, 63); + /* Look for named resource file in runtimepath */ +--- 1759,1770 ---- + char *name; + struct prt_ps_resource_S *resource; + { +! char_u *buffer; +! int retval; +! +! buffer = alloc(MAXPATHL + 1); +! if (buffer == NULL) +! return FALSE; + + vim_strncpy(resource->name, (char_u *)name, 63); + /* Look for named resource file in runtimepath */ +*************** +*** 1768,1776 **** + vim_strcat(buffer, (char_u *)name, MAXPATHL); + vim_strcat(buffer, (char_u *)".ps", MAXPATHL); + resource->filename[0] = NUL; +! return (do_in_runtimepath(buffer, FALSE, prt_resource_name, + resource->filename) + && resource->filename[0] != NUL); + } + + /* PS CR and LF characters have platform independent values */ +--- 1773,1783 ---- + vim_strcat(buffer, (char_u *)name, MAXPATHL); + vim_strcat(buffer, (char_u *)".ps", MAXPATHL); + resource->filename[0] = NUL; +! retval = (do_in_runtimepath(buffer, FALSE, prt_resource_name, + resource->filename) + && resource->filename[0] != NUL); ++ vim_free(buffer); ++ return retval; + } + + /* PS CR and LF characters have platform independent values */ +*************** +*** 2848,2862 **** + double right; + double top; + double bottom; +! struct prt_ps_resource_S res_prolog; +! struct prt_ps_resource_S res_encoding; + char buffer[256]; + char_u *p_encoding; + char_u *p; + #ifdef FEAT_MBYTE +! struct prt_ps_resource_S res_cidfont; +! struct prt_ps_resource_S res_cmap; + #endif + + /* + * PS DSC Header comments - no PS code! +--- 2855,2887 ---- + double right; + double top; + double bottom; +! struct prt_ps_resource_S *res_prolog; +! struct prt_ps_resource_S *res_encoding; + char buffer[256]; + char_u *p_encoding; + char_u *p; + #ifdef FEAT_MBYTE +! struct prt_ps_resource_S *res_cidfont; +! struct prt_ps_resource_S *res_cmap; + #endif ++ int retval = FALSE; ++ ++ res_prolog = (struct prt_ps_resource_S *) ++ alloc(sizeof(struct prt_ps_resource_S)); ++ res_encoding = (struct prt_ps_resource_S *) ++ alloc(sizeof(struct prt_ps_resource_S)); ++ #ifdef FEAT_MBYTE ++ res_cidfont = (struct prt_ps_resource_S *) ++ alloc(sizeof(struct prt_ps_resource_S)); ++ res_cmap = (struct prt_ps_resource_S *) ++ alloc(sizeof(struct prt_ps_resource_S)); ++ #endif ++ if (res_prolog == NULL || res_encoding == NULL ++ #ifdef FEAT_MBYTE ++ || res_cidfont == NULL || res_cmap == NULL ++ #endif ++ ) ++ goto theend; + + /* + * PS DSC Header comments - no PS code! +*************** +*** 2932,2958 **** + #endif + + /* Search for external resources VIM supplies */ +! if (!prt_find_resource("prolog", &res_prolog)) + { + EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\"")); + return FALSE; + } +! if (!prt_open_resource(&res_prolog)) + return FALSE; +! if (!prt_check_resource(&res_prolog, PRT_PROLOG_VERSION)) + return FALSE; + #ifdef FEAT_MBYTE + if (prt_out_mbyte) + { + /* Look for required version of multi-byte printing procset */ +! if (!prt_find_resource("cidfont", &res_cidfont)) + { + EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\"")); + return FALSE; + } +! if (!prt_open_resource(&res_cidfont)) + return FALSE; +! if (!prt_check_resource(&res_cidfont, PRT_CID_PROLOG_VERSION)) + return FALSE; + } + #endif +--- 2957,2983 ---- + #endif + + /* Search for external resources VIM supplies */ +! if (!prt_find_resource("prolog", res_prolog)) + { + EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\"")); + return FALSE; + } +! if (!prt_open_resource(res_prolog)) + return FALSE; +! if (!prt_check_resource(res_prolog, PRT_PROLOG_VERSION)) + return FALSE; + #ifdef FEAT_MBYTE + if (prt_out_mbyte) + { + /* Look for required version of multi-byte printing procset */ +! if (!prt_find_resource("cidfont", res_cidfont)) + { + EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\"")); + return FALSE; + } +! if (!prt_open_resource(res_cidfont)) + return FALSE; +! if (!prt_check_resource(res_cidfont, PRT_CID_PROLOG_VERSION)) + return FALSE; + } + #endif +*************** +*** 2968,2974 **** + #endif + p_encoding = enc_skip(p_penc); + if (*p_encoding == NUL +! || !prt_find_resource((char *)p_encoding, &res_encoding)) + { + /* 'printencoding' not set or not supported - find alternate */ + #ifdef FEAT_MBYTE +--- 2993,2999 ---- + #endif + p_encoding = enc_skip(p_penc); + if (*p_encoding == NUL +! || !prt_find_resource((char *)p_encoding, res_encoding)) + { + /* 'printencoding' not set or not supported - find alternate */ + #ifdef FEAT_MBYTE +*************** +*** 2977,2989 **** + p_encoding = enc_skip(p_enc); + props = enc_canon_props(p_encoding); + if (!(props & ENC_8BIT) +! || !prt_find_resource((char *)p_encoding, &res_encoding)) + /* 8-bit 'encoding' is not supported */ + #endif + { + /* Use latin1 as default printing encoding */ + p_encoding = (char_u *)"latin1"; +! if (!prt_find_resource((char *)p_encoding, &res_encoding)) + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + p_encoding); +--- 3002,3014 ---- + p_encoding = enc_skip(p_enc); + props = enc_canon_props(p_encoding); + if (!(props & ENC_8BIT) +! || !prt_find_resource((char *)p_encoding, res_encoding)) + /* 8-bit 'encoding' is not supported */ + #endif + { + /* Use latin1 as default printing encoding */ + p_encoding = (char_u *)"latin1"; +! if (!prt_find_resource((char *)p_encoding, res_encoding)) + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + p_encoding); +*************** +*** 2991,2997 **** + } + } + } +! if (!prt_open_resource(&res_encoding)) + return FALSE; + /* For the moment there are no checks on encoding resource files to + * perform */ +--- 3016,3022 ---- + } + } + } +! if (!prt_open_resource(res_encoding)) + return FALSE; + /* For the moment there are no checks on encoding resource files to + * perform */ +*************** +*** 3005,3017 **** + if (prt_use_courier) + { + /* Include ASCII range encoding vector */ +! if (!prt_find_resource(prt_ascii_encoding, &res_encoding)) + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + prt_ascii_encoding); + return FALSE; + } +! if (!prt_open_resource(&res_encoding)) + return FALSE; + /* For the moment there are no checks on encoding resource files to + * perform */ +--- 3030,3042 ---- + if (prt_use_courier) + { + /* Include ASCII range encoding vector */ +! if (!prt_find_resource(prt_ascii_encoding, res_encoding)) + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + prt_ascii_encoding); + return FALSE; + } +! if (!prt_open_resource(res_encoding)) + return FALSE; + /* For the moment there are no checks on encoding resource files to + * perform */ +*************** +*** 3034,3077 **** + if (prt_out_mbyte && prt_custom_cmap) + { + /* Find user supplied CMap */ +! if (!prt_find_resource(prt_cmap, &res_cmap)) + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + prt_cmap); + return FALSE; + } +! if (!prt_open_resource(&res_cmap)) + return FALSE; + } + #endif + + /* List resources supplied */ +! STRCPY(buffer, res_prolog.title); + STRCAT(buffer, " "); +! STRCAT(buffer, res_prolog.version); + prt_dsc_resources("DocumentSuppliedResources", "procset", buffer); + #ifdef FEAT_MBYTE + if (prt_out_mbyte) + { +! STRCPY(buffer, res_cidfont.title); + STRCAT(buffer, " "); +! STRCAT(buffer, res_cidfont.version); + prt_dsc_resources(NULL, "procset", buffer); + + if (prt_custom_cmap) + { +! STRCPY(buffer, res_cmap.title); + STRCAT(buffer, " "); +! STRCAT(buffer, res_cmap.version); + prt_dsc_resources(NULL, "cmap", buffer); + } + } + if (!prt_out_mbyte || prt_use_courier) + #endif + { +! STRCPY(buffer, res_encoding.title); + STRCAT(buffer, " "); +! STRCAT(buffer, res_encoding.version); + prt_dsc_resources(NULL, "encoding", buffer); + } + prt_dsc_requirements(prt_duplex, prt_tumble, prt_collate, +--- 3059,3102 ---- + if (prt_out_mbyte && prt_custom_cmap) + { + /* Find user supplied CMap */ +! if (!prt_find_resource(prt_cmap, res_cmap)) + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + prt_cmap); + return FALSE; + } +! if (!prt_open_resource(res_cmap)) + return FALSE; + } + #endif + + /* List resources supplied */ +! STRCPY(buffer, res_prolog->title); + STRCAT(buffer, " "); +! STRCAT(buffer, res_prolog->version); + prt_dsc_resources("DocumentSuppliedResources", "procset", buffer); + #ifdef FEAT_MBYTE + if (prt_out_mbyte) + { +! STRCPY(buffer, res_cidfont->title); + STRCAT(buffer, " "); +! STRCAT(buffer, res_cidfont->version); + prt_dsc_resources(NULL, "procset", buffer); + + if (prt_custom_cmap) + { +! STRCPY(buffer, res_cmap->title); + STRCAT(buffer, " "); +! STRCAT(buffer, res_cmap->version); + prt_dsc_resources(NULL, "cmap", buffer); + } + } + if (!prt_out_mbyte || prt_use_courier) + #endif + { +! STRCPY(buffer, res_encoding->title); + STRCAT(buffer, " "); +! STRCAT(buffer, res_encoding->version); + prt_dsc_resources(NULL, "encoding", buffer); + } + prt_dsc_requirements(prt_duplex, prt_tumble, prt_collate, +*************** +*** 3114,3128 **** + prt_dsc_noarg("BeginProlog"); + + /* Add required procsets - NOTE: order is important! */ +! if (!prt_add_resource(&res_prolog)) + return FALSE; + #ifdef FEAT_MBYTE + if (prt_out_mbyte) + { + /* Add CID font procset, and any user supplied CMap */ +! if (!prt_add_resource(&res_cidfont)) + return FALSE; +! if (prt_custom_cmap && !prt_add_resource(&res_cmap)) + return FALSE; + } + #endif +--- 3139,3153 ---- + prt_dsc_noarg("BeginProlog"); + + /* Add required procsets - NOTE: order is important! */ +! if (!prt_add_resource(res_prolog)) + return FALSE; + #ifdef FEAT_MBYTE + if (prt_out_mbyte) + { + /* Add CID font procset, and any user supplied CMap */ +! if (!prt_add_resource(res_cidfont)) + return FALSE; +! if (prt_custom_cmap && !prt_add_resource(res_cmap)) + return FALSE; + } + #endif +*************** +*** 3132,3138 **** + #endif + /* There will be only one Roman font encoding to be included in the PS + * file. */ +! if (!prt_add_resource(&res_encoding)) + return FALSE; + + prt_dsc_noarg("EndProlog"); +--- 3157,3163 ---- + #endif + /* There will be only one Roman font encoding to be included in the PS + * file. */ +! if (!prt_add_resource(res_encoding)) + return FALSE; + + prt_dsc_noarg("EndProlog"); +*************** +*** 3248,3254 **** + prt_dsc_noarg("EndSetup"); + + /* Fail if any problems writing out to the PS file */ +! return !prt_file_error; + } + + void +--- 3273,3289 ---- + prt_dsc_noarg("EndSetup"); + + /* Fail if any problems writing out to the PS file */ +! retval = !prt_file_error; +! +! theend: +! vim_free(res_prolog); +! vim_free(res_encoding); +! #ifdef FEAT_MBYTE +! vim_free(res_cidfont); +! vim_free(res_cmap); +! #endif +! +! return retval; + } + + void +*** ../vim-7.3.160/src/quickfix.c 2010-12-02 15:33:10.000000000 +0100 +--- src/quickfix.c 2011-04-11 17:54:07.000000000 +0200 +*************** +*** 3049,3056 **** + int flags = 0; + colnr_T col; + long tomatch; +! char_u dirname_start[MAXPATHL]; +! char_u dirname_now[MAXPATHL]; + char_u *target_dir = NULL; + #ifdef FEAT_AUTOCMD + char_u *au_name = NULL; +--- 3049,3056 ---- + int flags = 0; + colnr_T col; + long tomatch; +! char_u *dirname_start = NULL; +! char_u *dirname_now = NULL; + char_u *target_dir = NULL; + #ifdef FEAT_AUTOCMD + char_u *au_name = NULL; +*************** +*** 3128,3133 **** +--- 3128,3138 ---- + goto theend; + } + ++ dirname_start = alloc(MAXPATHL); ++ dirname_now = alloc(MAXPATHL); ++ if (dirname_start == NULL || dirname_now == NULL) ++ goto theend; ++ + /* Remember the current directory, because a BufRead autocommand that does + * ":lcd %:p:h" changes the meaning of short path names. */ + mch_dirname(dirname_start, MAXPATHL); +*************** +*** 3364,3369 **** +--- 3369,3376 ---- + } + + theend: ++ vim_free(dirname_now); ++ vim_free(dirname_start); + vim_free(target_dir); + vim_free(regmatch.regprog); + } +*** ../vim-7.3.160/src/main.c 2011-03-22 18:10:34.000000000 +0100 +--- src/main.c 2011-04-11 18:06:06.000000000 +0200 +*************** +*** 3814,3820 **** + int i; + char_u *inicmd = NULL; + char_u *p; +! char_u cwd[MAXPATHL]; + + if (filec > 0 && filev[0][0] == '+') + { +--- 3814,3820 ---- + int i; + char_u *inicmd = NULL; + char_u *p; +! char_u *cwd; + + if (filec > 0 && filev[0][0] == '+') + { +*************** +*** 3827,3841 **** + mainerr_arg_missing((char_u *)filev[-1]); + + /* Temporarily cd to the current directory to handle relative file names. */ + if (mch_dirname(cwd, MAXPATHL) != OK) + return NULL; +! if ((p = vim_strsave_escaped_ext(cwd, + #ifdef BACKSLASH_IN_FILENAME + "", /* rem_backslash() will tell what chars to escape */ + #else + PATH_ESC_CHARS, + #endif +! '\\', TRUE)) == NULL) + return NULL; + ga_init2(&ga, 1, 100); + ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd "); +--- 3827,3849 ---- + mainerr_arg_missing((char_u *)filev[-1]); + + /* Temporarily cd to the current directory to handle relative file names. */ ++ cwd = alloc(MAXPATHL); ++ if (cwd == NULL) ++ return NULL; + if (mch_dirname(cwd, MAXPATHL) != OK) ++ { ++ vim_free(cwd); + return NULL; +! } +! p = vim_strsave_escaped_ext(cwd, + #ifdef BACKSLASH_IN_FILENAME + "", /* rem_backslash() will tell what chars to escape */ + #else + PATH_ESC_CHARS, + #endif +! '\\', TRUE); +! vim_free(cwd); +! if (p == NULL) + return NULL; + ga_init2(&ga, 1, 100); + ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd "); +*** ../vim-7.3.160/src/netbeans.c 2011-04-11 16:56:29.000000000 +0200 +--- src/netbeans.c 2011-04-11 18:27:08.000000000 +0200 +*************** +*** 2891,2897 **** + char_u *text; + linenr_T lnum; + int col; +! char buf[MAXPATHL * 2 + 25]; + char_u *p; + + /* Don't do anything when 'ballooneval' is off, messages scrolled the +--- 2891,2897 ---- + char_u *text; + linenr_T lnum; + int col; +! char *buf; + char_u *p; + + /* Don't do anything when 'ballooneval' is off, messages scrolled the +*************** +*** 2905,2919 **** + * length. */ + if (text != NULL && text[0] != NUL && STRLEN(text) < MAXPATHL) + { +! p = nb_quote(text); +! if (p != NULL) + { +! vim_snprintf(buf, sizeof(buf), +! "0:balloonText=%d \"%s\"\n", r_cmdno, p); +! vim_free(p); + } +- nbdebug(("EVT: %s", buf)); +- nb_send(buf, "netbeans_beval_cb"); + } + vim_free(text); + } +--- 2905,2924 ---- + * length. */ + if (text != NULL && text[0] != NUL && STRLEN(text) < MAXPATHL) + { +! buf = (char *)alloc(MAXPATHL * 2 + 25); +! if (buf != NULL) + { +! p = nb_quote(text); +! if (p != NULL) +! { +! vim_snprintf(buf, MAXPATHL * 2 + 25, +! "0:balloonText=%d \"%s\"\n", r_cmdno, p); +! vim_free(p); +! } +! nbdebug(("EVT: %s", buf)); +! nb_send(buf, "netbeans_beval_cb"); +! vim_free(buf); + } + } + vim_free(text); + } +*** ../vim-7.3.160/src/spell.c 2011-04-11 16:56:29.000000000 +0200 +--- src/spell.c 2011-04-11 18:00:49.000000000 +0200 +*************** +*** 8590,8596 **** + spellinfo_T *spin; + char_u *wfname; + { +! char_u fname[MAXPATHL]; + int len; + slang_T *slang; + int free_slang = FALSE; +--- 8590,8596 ---- + spellinfo_T *spin; + char_u *wfname; + { +! char_u *fname = NULL; + int len; + slang_T *slang; + int free_slang = FALSE; +*************** +*** 8654,8659 **** +--- 8654,8662 ---- + * Write the .sug file. + * Make the file name by changing ".spl" to ".sug". + */ ++ fname = alloc(MAXPATHL); ++ if (fname == NULL) ++ goto theend; + vim_strncpy(fname, wfname, MAXPATHL - 1); + len = (int)STRLEN(fname); + fname[len - 2] = 'u'; +*************** +*** 8661,8666 **** +--- 8664,8670 ---- + sug_write(spin, fname); + + theend: ++ vim_free(fname); + if (free_slang) + slang_free(slang); + free_blocks(spin->si_blocks); +*************** +*** 9106,9113 **** + int overwrite; /* overwrite existing output file */ + int added_word; /* invoked through "zg" */ + { +! char_u fname[MAXPATHL]; +! char_u wfname[MAXPATHL]; + char_u **innames; + int incount; + afffile_T *(afile[8]); +--- 9110,9117 ---- + int overwrite; /* overwrite existing output file */ + int added_word; /* invoked through "zg" */ + { +! char_u *fname = NULL; +! char_u *wfname; + char_u **innames; + int incount; + afffile_T *(afile[8]); +*************** +*** 9135,9140 **** +--- 9139,9148 ---- + innames = &fnames[1]; + incount = fcount - 1; + ++ wfname = alloc(MAXPATHL); ++ if (wfname == NULL) ++ return; ++ + if (fcount >= 1) + { + len = (int)STRLEN(fnames[0]); +*************** +*** 9144,9167 **** + * "path/en.latin1.add.spl". */ + innames = &fnames[0]; + incount = 1; +! vim_snprintf((char *)wfname, sizeof(wfname), "%s.spl", fnames[0]); + } + else if (fcount == 1) + { + /* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */ + innames = &fnames[0]; + incount = 1; +! vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL, + fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc()); + } + else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0) + { + /* Name ends in ".spl", use as the file name. */ +! vim_strncpy(wfname, fnames[0], sizeof(wfname) - 1); + } + else + /* Name should be language, make the file name from it. */ +! vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL, + fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc()); + + /* Check for .ascii.spl. */ +--- 9152,9175 ---- + * "path/en.latin1.add.spl". */ + innames = &fnames[0]; + incount = 1; +! vim_snprintf((char *)wfname, MAXPATHL, "%s.spl", fnames[0]); + } + else if (fcount == 1) + { + /* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */ + innames = &fnames[0]; + incount = 1; +! vim_snprintf((char *)wfname, MAXPATHL, SPL_FNAME_TMPL, + fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc()); + } + else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0) + { + /* Name ends in ".spl", use as the file name. */ +! vim_strncpy(wfname, fnames[0], MAXPATHL - 1); + } + else + /* Name should be language, make the file name from it. */ +! vim_snprintf((char *)wfname, MAXPATHL, SPL_FNAME_TMPL, + fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc()); + + /* Check for .ascii.spl. */ +*************** +*** 9186,9199 **** + if (!overwrite && mch_stat((char *)wfname, &st) >= 0) + { + EMSG(_(e_exists)); +! return; + } + if (mch_isdir(wfname)) + { + EMSG2(_(e_isadir2), wfname); +! return; + } + + /* + * Init the aff and dic pointers. + * Get the region names if there are more than 2 arguments. +--- 9194,9211 ---- + if (!overwrite && mch_stat((char *)wfname, &st) >= 0) + { + EMSG(_(e_exists)); +! goto theend; + } + if (mch_isdir(wfname)) + { + EMSG2(_(e_isadir2), wfname); +! goto theend; + } + ++ fname = alloc(MAXPATHL); ++ if (fname == NULL) ++ goto theend; ++ + /* + * Init the aff and dic pointers. + * Get the region names if there are more than 2 arguments. +*************** +*** 9209,9215 **** + || innames[i][len - 3] != '_') + { + EMSG2(_("E755: Invalid region in %s"), innames[i]); +! return; + } + spin.si_region_name[i * 2] = TOLOWER_ASC(innames[i][len - 2]); + spin.si_region_name[i * 2 + 1] = +--- 9221,9227 ---- + || innames[i][len - 3] != '_') + { + EMSG2(_("E755: Invalid region in %s"), innames[i]); +! goto theend; + } + spin.si_region_name[i * 2] = TOLOWER_ASC(innames[i][len - 2]); + spin.si_region_name[i * 2 + 1] = +*************** +*** 9226,9232 **** + || spin.si_prefroot == NULL) + { + free_blocks(spin.si_blocks); +! return; + } + + /* When not producing a .add.spl file clear the character table when +--- 9238,9244 ---- + || spin.si_prefroot == NULL) + { + free_blocks(spin.si_blocks); +! goto theend; + } + + /* When not producing a .add.spl file clear the character table when +*************** +*** 9247,9253 **** + spin.si_conv.vc_type = CONV_NONE; + spin.si_region = 1 << i; + +! vim_snprintf((char *)fname, sizeof(fname), "%s.aff", innames[i]); + if (mch_stat((char *)fname, &st) >= 0) + { + /* Read the .aff file. Will init "spin->si_conv" based on the +--- 9259,9265 ---- + spin.si_conv.vc_type = CONV_NONE; + spin.si_region = 1 << i; + +! vim_snprintf((char *)fname, MAXPATHL, "%s.aff", innames[i]); + if (mch_stat((char *)fname, &st) >= 0) + { + /* Read the .aff file. Will init "spin->si_conv" based on the +*************** +*** 9258,9264 **** + else + { + /* Read the .dic file and store the words in the trees. */ +! vim_snprintf((char *)fname, sizeof(fname), "%s.dic", + innames[i]); + if (spell_read_dic(&spin, fname, afile[i]) == FAIL) + error = TRUE; +--- 9270,9276 ---- + else + { + /* Read the .dic file and store the words in the trees. */ +! vim_snprintf((char *)fname, MAXPATHL, "%s.dic", + innames[i]); + if (spell_read_dic(&spin, fname, afile[i]) == FAIL) + error = TRUE; +*************** +*** 9340,9345 **** +--- 9352,9361 ---- + spell_make_sugfile(&spin, wfname); + + } ++ ++ theend: ++ vim_free(fname); ++ vim_free(wfname); + } + + /* +*************** +*** 9392,9398 **** + buf_T *buf = NULL; + int new_spf = FALSE; + char_u *fname; +! char_u fnamebuf[MAXPATHL]; + char_u line[MAXWLEN * 2]; + long fpos, fpos_next = 0; + int i; +--- 9408,9414 ---- + buf_T *buf = NULL; + int new_spf = FALSE; + char_u *fname; +! char_u *fnamebuf = NULL; + char_u line[MAXWLEN * 2]; + long fpos, fpos_next = 0; + int i; +*************** +*** 9422,9427 **** +--- 9438,9446 ---- + EMSG2(_(e_notset), "spellfile"); + return; + } ++ fnamebuf = alloc(MAXPATHL); ++ if (fnamebuf == NULL) ++ return; + + for (spf = curwin->w_s->b_p_spf, i = 1; *spf != NUL; ++i) + { +*************** +*** 9431,9436 **** +--- 9450,9456 ---- + if (*spf == NUL) + { + EMSGN(_("E765: 'spellfile' does not have %ld entries"), idx); ++ vim_free(fnamebuf); + return; + } + } +*************** +*** 9442,9447 **** +--- 9462,9468 ---- + if (buf != NULL && bufIsChanged(buf)) + { + EMSG(_(e_bufloaded)); ++ vim_free(fnamebuf); + return; + } + +*************** +*** 9536,9541 **** +--- 9557,9563 ---- + + redraw_all_later(SOME_VALID); + } ++ vim_free(fnamebuf); + } + + /* +*************** +*** 9544,9550 **** + static void + init_spellfile() + { +! char_u buf[MAXPATHL]; + int l; + char_u *fname; + char_u *rtp; +--- 9566,9572 ---- + static void + init_spellfile() + { +! char_u *buf; + int l; + char_u *fname; + char_u *rtp; +*************** +*** 9554,9559 **** +--- 9576,9585 ---- + + if (*curwin->w_s->b_p_spl != NUL && curwin->w_s->b_langp.ga_len > 0) + { ++ buf = alloc(MAXPATHL); ++ if (buf == NULL) ++ return; ++ + /* Find the end of the language name. Exclude the region. If there + * is a path separator remember the start of the tail. */ + for (lend = curwin->w_s->b_p_spl; *lend != NUL +*************** +*** 9597,9603 **** + "/%.*s", (int)(lend - lstart), lstart); + } + l = (int)STRLEN(buf); +! fname = LANGP_ENTRY(curwin->w_s->b_langp, 0)->lp_slang->sl_fname; + vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add", + fname != NULL + && strstr((char *)gettail(fname), ".ascii.") != NULL +--- 9623,9630 ---- + "/%.*s", (int)(lend - lstart), lstart); + } + l = (int)STRLEN(buf); +! fname = LANGP_ENTRY(curwin->w_s->b_langp, 0) +! ->lp_slang->sl_fname; + vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add", + fname != NULL + && strstr((char *)gettail(fname), ".ascii.") != NULL +*************** +*** 9607,9612 **** +--- 9634,9641 ---- + } + aspath = FALSE; + } ++ ++ vim_free(buf); + } + } + +*** ../vim-7.3.160/src/tag.c 2011-04-11 16:56:29.000000000 +0200 +--- src/tag.c 2011-04-11 20:54:36.000000000 +0200 +*************** +*** 775,791 **** + { + list_T *list; + char_u tag_name[128 + 1]; +! char_u fname[MAXPATHL + 1]; +! char_u cmd[CMDBUFFSIZE + 1]; + + /* + * Add the matching tags to the location list for the current + * window. + */ + + list = list_alloc(); +! if (list == NULL) + goto end_do_tag; + + for (i = 0; i < num_matches; ++i) + { +--- 775,799 ---- + { + list_T *list; + char_u tag_name[128 + 1]; +! char_u *fname; +! char_u *cmd; + + /* + * Add the matching tags to the location list for the current + * window. + */ + ++ fname = alloc(MAXPATHL + 1); ++ cmd = alloc(CMDBUFFSIZE + 1); + list = list_alloc(); +! if (list == NULL || fname == NULL || cmd == NULL) +! { +! vim_free(cmd); +! vim_free(fname); +! if (list != NULL) +! list_free(list, TRUE); + goto end_do_tag; ++ } + + for (i = 0; i < num_matches; ++i) + { +*************** +*** 911,916 **** +--- 919,926 ---- + set_errorlist(curwin, list, ' ', IObuff); + + list_free(list, TRUE); ++ vim_free(fname); ++ vim_free(cmd); + + cur_match = 0; /* Jump to the first tag */ + } +*************** +*** 3777,3784 **** + char_u *start; /* start of the value */ + char_u *end; /* after the value; can be NULL */ + { +! char_u buf[MAXPATHL]; + int len = 0; + + /* check that the field name doesn't exist yet */ + if (dict_find(dict, (char_u *)field_name, -1) != NULL) +--- 3787,3795 ---- + char_u *start; /* start of the value */ + char_u *end; /* after the value; can be NULL */ + { +! char_u *buf; + int len = 0; ++ int retval; + + /* check that the field name doesn't exist yet */ + if (dict_find(dict, (char_u *)field_name, -1) != NULL) +*************** +*** 3791,3796 **** +--- 3802,3810 ---- + } + return FAIL; + } ++ buf = alloc(MAXPATHL); ++ if (buf == NULL) ++ return FAIL; + if (start != NULL) + { + if (end == NULL) +*************** +*** 3800,3811 **** + --end; + } + len = (int)(end - start); +! if (len > (int)sizeof(buf) - 1) +! len = sizeof(buf) - 1; + vim_strncpy(buf, start, len); + } + buf[len] = NUL; +! return dict_add_nr_str(dict, field_name, 0L, buf); + } + + /* +--- 3814,3827 ---- + --end; + } + len = (int)(end - start); +! if (len > MAXPATHL - 1) +! len = MAXPATHL - 1; + vim_strncpy(buf, start, len); + } + buf[len] = NUL; +! retval = dict_add_nr_str(dict, field_name, 0L, buf); +! vim_free(buf); +! return retval; + } + + /* +*** ../vim-7.3.160/src/vim.h 2010-12-30 12:30:26.000000000 +0100 +--- src/vim.h 2011-04-11 20:50:54.000000000 +0200 +*************** +*** 1435,1440 **** +--- 1435,1442 ---- + + #define IOSIZE (1024+1) /* file i/o and sprintf buffer size */ + ++ #define DIALOG_MSG_SIZE 1000 /* buffer size for dialog_msg() */ ++ + #ifdef FEAT_MBYTE + # define MSG_BUF_LEN 480 /* length of buffer for small messages */ + # define MSG_BUF_CLEN (MSG_BUF_LEN / 6) /* cell length (worst case: utf-8 +*** ../vim-7.3.160/src/xxd/xxd.c 2011-04-02 14:44:50.000000000 +0200 +--- src/xxd/xxd.c 2011-04-11 16:40:48.000000000 +0200 +*************** +*** 476,482 **** + int octspergrp = -1; /* number of octets grouped in output */ + int grplen; /* total chars per octet group */ + long length = -1, n = 0, seekoff = 0; +! char l[LLEN+1]; + char *pp; + + #ifdef AMIGA +--- 476,482 ---- + int octspergrp = -1; /* number of octets grouped in output */ + int grplen; /* total chars per octet group */ + long length = -1, n = 0, seekoff = 0; +! static char l[LLEN+1]; /* static because it may be too big for stack */ + char *pp; + + #ifdef AMIGA +*** ../vim-7.3.160/src/version.c 2011-04-11 16:56:29.000000000 +0200 +--- src/version.c 2011-04-11 21:15:33.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 161, + /**/ + +-- +The process for understanding customers primarily involves sitting around with +other marketing people and talking about what you would to if you were dumb +enough to be a customer. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.162 b/source/ap/vim/patches/7.3.162 new file mode 100644 index 00000000..3f0173af --- /dev/null +++ b/source/ap/vim/patches/7.3.162 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.162 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.162 +Problem: No error message when assigning to a list with an index out of + range. (Yukihiro Nakadaira) +Solution: Add the error message. +Files: src/eval.c + + +*** ../vim-7.3.161/src/eval.c 2011-04-11 21:35:03.000000000 +0200 +--- src/eval.c 2011-04-21 13:40:38.000000000 +0200 +*************** +*** 2794,2799 **** +--- 2794,2801 ---- + { + if (lp->ll_range && !lp->ll_empty2) + clear_tv(&var2); ++ if (!quiet) ++ EMSGN(_(e_listidx), lp->ll_n1); + return NULL; + } + +*************** +*** 2811,2817 **** +--- 2813,2823 ---- + { + ni = list_find(lp->ll_list, lp->ll_n2); + if (ni == NULL) ++ { ++ if (!quiet) ++ EMSGN(_(e_listidx), lp->ll_n2); + return NULL; ++ } + lp->ll_n2 = list_idx_of_item(lp->ll_list, ni); + } + +*************** +*** 2819,2825 **** +--- 2825,2835 ---- + if (lp->ll_n1 < 0) + lp->ll_n1 = list_idx_of_item(lp->ll_list, lp->ll_li); + if (lp->ll_n2 < lp->ll_n1) ++ { ++ if (!quiet) ++ EMSGN(_(e_listidx), lp->ll_n2); + return NULL; ++ } + } + + lp->ll_tv = &lp->ll_li->li_tv; +*** ../vim-7.3.161/src/version.c 2011-04-11 21:35:03.000000000 +0200 +--- src/version.c 2011-04-21 13:44:46.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 162, + /**/ + +-- +Far back in the mists of ancient time, in the great and glorious days of the +former Galactic Empire, life was wild, rich and largely tax free. +Mighty starships plied their way between exotic suns, seeking adventure and +reward among the furthest reaches of Galactic space. In those days, spirits +were brave, the stakes were high, men were real men, women were real women +and small furry creatures from Alpha Centauri were real small furry creatures +from Alpha Centauri. And all dared to brave unknown terrors, to do mighty +deeds, to boldly split infinitives that no man had split before -- and thus +was the Empire forged. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.163 b/source/ap/vim/patches/7.3.163 new file mode 100644 index 00000000..b5f1cb4a --- /dev/null +++ b/source/ap/vim/patches/7.3.163 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.163 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.163 +Problem: For the default of 'shellpipe' "mksh" and "pdksh" are not + recognized. +Solution: Recognize these shell names. +Files: src/option.c + + +*** ../vim-7.3.162/src/option.c 2011-03-22 14:35:01.000000000 +0100 +--- src/option.c 2011-04-15 20:49:54.000000000 +0200 +*************** +*** 3846,3851 **** +--- 3846,3853 ---- + # ifndef OS2 /* Always use bourne shell style redirection if we reach this */ + if ( fnamecmp(p, "sh") == 0 + || fnamecmp(p, "ksh") == 0 ++ || fnamecmp(p, "mksh") == 0 ++ || fnamecmp(p, "pdksh") == 0 + || fnamecmp(p, "zsh") == 0 + || fnamecmp(p, "zsh-beta") == 0 + || fnamecmp(p, "bash") == 0 +*************** +*** 3853,3858 **** +--- 3855,3862 ---- + || fnamecmp(p, "cmd") == 0 + || fnamecmp(p, "sh.exe") == 0 + || fnamecmp(p, "ksh.exe") == 0 ++ || fnamecmp(p, "mksh.exe") == 0 ++ || fnamecmp(p, "pdksh.exe") == 0 + || fnamecmp(p, "zsh.exe") == 0 + || fnamecmp(p, "zsh-beta.exe") == 0 + || fnamecmp(p, "bash.exe") == 0 +*** ../vim-7.3.162/src/version.c 2011-04-21 14:27:21.000000000 +0200 +--- src/version.c 2011-04-28 12:56:03.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 163, + /**/ + +-- +If you put 7 of the most talented OSS developers in a room for a week +and asked them to fix a bug in a spreadsheet program, in 1 week +you'd have 2 new mail readers and a text-based web browser. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.164 b/source/ap/vim/patches/7.3.164 new file mode 100644 index 00000000..9049f1b5 --- /dev/null +++ b/source/ap/vim/patches/7.3.164 @@ -0,0 +1,181 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.164 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.164 +Problem: C-indenting: a preprocessor statement confuses detection of a + function delcaration. +Solution: Ignore preprocessor lines. (Lech Lorens) Also recognize the style + to put a comma before the argument name. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.163/src/misc1.c 2011-04-11 16:56:29.000000000 +0200 +--- src/misc1.c 2011-04-28 12:49:55.000000000 +0200 +*************** +*** 5396,5403 **** + cin_ispreproc(s) + char_u *s; + { +! s = skipwhite(s); +! if (*s == '#') + return TRUE; + return FALSE; + } +--- 5396,5402 ---- + cin_ispreproc(s) + char_u *s; + { +! if (*skipwhite(s) == '#') + return TRUE; + return FALSE; + } +*************** +*** 5513,5518 **** +--- 5512,5521 ---- + else + s = *sp; + ++ /* Ignore line starting with #. */ ++ if (cin_ispreproc(s)) ++ return FALSE; ++ + while (*s && *s != '(' && *s != ';' && *s != '\'' && *s != '"') + { + if (cin_iscomment(s)) /* ignore comments */ +*************** +*** 5538,5550 **** + retval = TRUE; + goto done; + } +! if (*s == ',' && cin_nocode(s + 1)) + { +! /* ',' at the end: continue looking in the next line */ + if (lnum >= curbuf->b_ml.ml_line_count) + break; +! +! s = ml_get(++lnum); + } + else if (cin_iscomment(s)) /* ignore comments */ + s = cin_skipcomment(s); +--- 5541,5569 ---- + retval = TRUE; + goto done; + } +! if ((*s == ',' && cin_nocode(s + 1)) || s[1] == NUL || cin_nocode(s)) + { +! int comma = (*s == ','); +! +! /* ',' at the end: continue looking in the next line. +! * At the end: check for ',' in the next line, for this style: +! * func(arg1 +! * , arg2) */ +! for (;;) +! { +! if (lnum >= curbuf->b_ml.ml_line_count) +! break; +! s = ml_get(++lnum); +! if (!cin_ispreproc(s)) +! break; +! } + if (lnum >= curbuf->b_ml.ml_line_count) + break; +! /* Require a comma at end of the line or a comma or ')' at the +! * start of next line. */ +! s = skipwhite(s); +! if (!comma && *s != ',' && *s != ')') +! break; + } + else if (cin_iscomment(s)) /* ignore comments */ + s = cin_skipcomment(s); +*** ../vim-7.3.163/src/testdir/test3.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test3.in 2011-04-28 12:15:12.000000000 +0200 +*************** +*** 1315,1320 **** +--- 1315,1349 ---- + } + + STARTTEST ++ :set cino=(0,ts ++ 2kdd=][ ++ ENDTEST ++ ++ void func(int a ++ #if defined(FOO) ++ , int b ++ , int c ++ #endif ++ ) ++ { ++ } ++ ++ STARTTEST ++ :set cino=(0 ++ 2kdd=][ ++ ENDTEST ++ ++ void ++ func(int a ++ #if defined(FOO) ++ , int b ++ , int c ++ #endif ++ ) ++ { ++ } ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/start of AUTO/,$wq! test.out + ENDTEST +*** ../vim-7.3.163/src/testdir/test3.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test3.ok 2011-04-28 12:54:04.000000000 +0200 +*************** +*** 1183,1185 **** +--- 1183,1206 ---- + foo; + } + ++ ++ void func(int a ++ #if defined(FOO) ++ , int b ++ , int c ++ #endif ++ ) ++ { ++ } ++ ++ ++ void ++ func(int a ++ #if defined(FOO) ++ , int b ++ , int c ++ #endif ++ ) ++ { ++ } ++ +*** ../vim-7.3.163/src/version.c 2011-04-28 12:56:57.000000000 +0200 +--- src/version.c 2011-04-28 12:59:55.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 164, + /**/ + +-- +Due knot trussed yore spell chequer two fined awl miss steaks. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.165 b/source/ap/vim/patches/7.3.165 new file mode 100644 index 00000000..2725259e --- /dev/null +++ b/source/ap/vim/patches/7.3.165 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.165 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.165 +Problem: ":find" completion does not escape spaces in a directory name. + (Isz) +Solution: Add backslashes for EXPAND_FILES_IN_PATH. (Carlo Teubner) +Files: src/ex_getln.c + + +*** ../vim-7.3.164/src/ex_getln.c 2010-12-02 16:01:23.000000000 +0100 +--- src/ex_getln.c 2011-04-28 12:52:12.000000000 +0200 +*************** +*** 3702,3707 **** +--- 3702,3708 ---- + if (options & WILD_ESCAPE) + { + if (xp->xp_context == EXPAND_FILES ++ || xp->xp_context == EXPAND_FILES_IN_PATH + || xp->xp_context == EXPAND_SHELLCMD + || xp->xp_context == EXPAND_BUFFERS + || xp->xp_context == EXPAND_DIRECTORIES) +*** ../vim-7.3.164/src/version.c 2011-04-28 13:01:59.000000000 +0200 +--- src/version.c 2011-04-28 17:17:53.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 165, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +38. You wake up at 3 a.m. to go to the bathroom and stop and check your e-mail + on the way back to bed. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.166 b/source/ap/vim/patches/7.3.166 new file mode 100644 index 00000000..93c6ed35 --- /dev/null +++ b/source/ap/vim/patches/7.3.166 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.166 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.166 +Problem: Buffer on the stack may be too big +Solution: Allocate the space. +Files: src/option.c + + +*** ../vim-7.3.165/src/option.c 2011-04-28 12:56:57.000000000 +0200 +--- src/option.c 2011-04-15 20:49:54.000000000 +0200 +*************** +*** 9185,9191 **** + int expand; + { + char_u *s; +! char_u buf[MAXPATHL]; + + if (fprintf(fd, "%s %s=", cmd, name) < 0) + return FAIL; +--- 9185,9191 ---- + int expand; + { + char_u *s; +! char_u *buf; + + if (fprintf(fd, "%s %s=", cmd, name) < 0) + return FAIL; +*************** +*** 9203,9211 **** +--- 9203,9218 ---- + } + else if (expand) + { ++ buf = alloc(MAXPATHL); ++ if (buf == NULL) ++ return FAIL; + home_replace(NULL, *valuep, buf, MAXPATHL, FALSE); + if (put_escstr(fd, buf, 2) == FAIL) ++ { ++ vim_free(buf); + return FAIL; ++ } ++ vim_free(buf); + } + else if (put_escstr(fd, *valuep, 2) == FAIL) + return FAIL; +*** ../vim-7.3.165/src/version.c 2011-04-28 17:21:49.000000000 +0200 +--- src/version.c 2011-04-28 17:23:24.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 166, + /**/ + +-- +He who laughs last, thinks slowest. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.167 b/source/ap/vim/patches/7.3.167 new file mode 100644 index 00000000..4a6de89f --- /dev/null +++ b/source/ap/vim/patches/7.3.167 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.167 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.167 +Problem: When using the internal grep QuickFixCmdPost is not triggered. + (Yukihiro Nakadaira) +Solution: Change the place where autocommands are triggered. +Files: src/quickfix.c + + +*** ../vim-7.3.166/src/quickfix.c 2011-04-11 21:35:03.000000000 +0200 +--- src/quickfix.c 2011-04-28 13:28:03.000000000 +0200 +*************** +*** 2742,2747 **** +--- 2742,2754 ---- + #ifdef FEAT_AUTOCMD + char_u *au_name = NULL; + ++ /* Redirect ":grep" to ":vimgrep" if 'grepprg' is "internal". */ ++ if (grep_internal(eap->cmdidx)) ++ { ++ ex_vimgrep(eap); ++ return; ++ } ++ + switch (eap->cmdidx) + { + case CMD_make: au_name = (char_u *)"make"; break; +*************** +*** 2763,2775 **** + } + #endif + +- /* Redirect ":grep" to ":vimgrep" if 'grepprg' is "internal". */ +- if (grep_internal(eap->cmdidx)) +- { +- ex_vimgrep(eap); +- return; +- } +- + if (eap->cmdidx == CMD_lmake || eap->cmdidx == CMD_lgrep + || eap->cmdidx == CMD_lgrepadd) + wp = curwin; +--- 2770,2775 ---- +*************** +*** 3057,3066 **** + + switch (eap->cmdidx) + { +! case CMD_vimgrep: au_name = (char_u *)"vimgrep"; break; +! case CMD_lvimgrep: au_name = (char_u *)"lvimgrep"; break; +! case CMD_vimgrepadd: au_name = (char_u *)"vimgrepadd"; break; + case CMD_lvimgrepadd: au_name = (char_u *)"lvimgrepadd"; break; + default: break; + } + if (au_name != NULL) +--- 3057,3070 ---- + + switch (eap->cmdidx) + { +! case CMD_vimgrep: au_name = (char_u *)"vimgrep"; break; +! case CMD_lvimgrep: au_name = (char_u *)"lvimgrep"; break; +! case CMD_vimgrepadd: au_name = (char_u *)"vimgrepadd"; break; + case CMD_lvimgrepadd: au_name = (char_u *)"lvimgrepadd"; break; ++ case CMD_grep: au_name = (char_u *)"grep"; break; ++ case CMD_lgrep: au_name = (char_u *)"lgrep"; break; ++ case CMD_grepadd: au_name = (char_u *)"grepadd"; break; ++ case CMD_lgrepadd: au_name = (char_u *)"lgrepadd"; break; + default: break; + } + if (au_name != NULL) +*** ../vim-7.3.166/src/version.c 2011-04-28 17:24:54.000000000 +0200 +--- src/version.c 2011-04-28 17:26:17.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 167, + /**/ + +-- +Micro$oft: where do you want to go today? + Linux: where do you want to go tomorrow? + FreeBSD: are you guys coming, or what? + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.168 b/source/ap/vim/patches/7.3.168 new file mode 100644 index 00000000..3d6fe947 --- /dev/null +++ b/source/ap/vim/patches/7.3.168 @@ -0,0 +1,82 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.168 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.168 +Problem: When the second argument of input() contains a CR the text up to + that is used without asking the user. (Yasuhiro Matsumoto) +Solution: Change CR, NL and ESC in the text to a space. +Files: src/getchar.c + + +*** ../vim-7.3.167/src/getchar.c 2011-03-22 13:07:19.000000000 +0100 +--- src/getchar.c 2011-04-28 14:50:26.000000000 +0200 +*************** +*** 635,645 **** +--- 635,648 ---- + /* + * Stuff "s" into the stuff buffer, leaving special key codes unmodified and + * escaping other K_SPECIAL and CSI bytes. ++ * Change CR, LF and ESC into a space. + */ + void + stuffReadbuffSpec(s) + char_u *s; + { ++ int c; ++ + while (*s != NUL) + { + if (*s == K_SPECIAL && s[1] != NUL && s[2] != NUL) +*************** +*** 649,659 **** + s += 3; + } + else + #ifdef FEAT_MBYTE +! stuffcharReadbuff(mb_ptr2char_adv(&s)); + #else +! stuffcharReadbuff(*s++); + #endif + } + } + #endif +--- 652,667 ---- + s += 3; + } + else ++ { + #ifdef FEAT_MBYTE +! c = mb_ptr2char_adv(&s); + #else +! c = *s++; + #endif ++ if (c == CAR || c == NL || c == ESC) ++ c = ' '; ++ stuffcharReadbuff(c); ++ } + } + } + #endif +*** ../vim-7.3.167/src/version.c 2011-04-28 17:27:05.000000000 +0200 +--- src/version.c 2011-04-28 17:28:36.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 168, + /**/ + +-- +Everyone has a photographic memory. Some don't have film. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.169 b/source/ap/vim/patches/7.3.169 new file mode 100644 index 00000000..056ca99f --- /dev/null +++ b/source/ap/vim/patches/7.3.169 @@ -0,0 +1,130 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.169 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.169 +Problem: Freeing memory already freed, warning from static code analyzer. +Solution: Initialize pointers to NULL, correct use of "mustfree". (partly by + Dominique Pelle) +Files: src/mis1.c + + +*** ../vim-7.3.168/src/misc1.c 2011-04-28 13:01:59.000000000 +0200 +--- src/misc1.c 2011-04-28 17:42:00.000000000 +0200 +*************** +*** 3505,3511 **** + if (enc_utf8 && var != NULL) + { + int len; +! char_u *pp; + + /* Convert from active codepage to UTF-8. Other conversions are + * not done, because they would fail for non-ASCII characters. */ +--- 3505,3511 ---- + if (enc_utf8 && var != NULL) + { + int len; +! char_u *pp = NULL; + + /* Convert from active codepage to UTF-8. Other conversions are + * not done, because they would fail for non-ASCII characters. */ +*************** +*** 3872,3882 **** + * Vim's version of getenv(). + * Special handling of $HOME, $VIM and $VIMRUNTIME. + * Also does ACP to 'enc' conversion for Win32. + */ + char_u * + vim_getenv(name, mustfree) + char_u *name; +! int *mustfree; /* set to TRUE when returned is allocated */ + { + char_u *p; + char_u *pend; +--- 3872,3884 ---- + * Vim's version of getenv(). + * Special handling of $HOME, $VIM and $VIMRUNTIME. + * Also does ACP to 'enc' conversion for Win32. ++ * "mustfree" is set to TRUE when returned is allocated, it must be ++ * initialized to FALSE by the caller. + */ + char_u * + vim_getenv(name, mustfree) + char_u *name; +! int *mustfree; + { + char_u *p; + char_u *pend; +*************** +*** 3898,3904 **** + if (enc_utf8) + { + int len; +! char_u *pp; + + /* Convert from active codepage to UTF-8. Other conversions are + * not done, because they would fail for non-ASCII characters. */ +--- 3900,3906 ---- + if (enc_utf8) + { + int len; +! char_u *pp = NULL; + + /* Convert from active codepage to UTF-8. Other conversions are + * not done, because they would fail for non-ASCII characters. */ +*************** +*** 3942,3948 **** + if (enc_utf8) + { + int len; +! char_u *pp; + + /* Convert from active codepage to UTF-8. Other conversions + * are not done, because they would fail for non-ASCII +--- 3944,3950 ---- + if (enc_utf8) + { + int len; +! char_u *pp = NULL; + + /* Convert from active codepage to UTF-8. Other conversions + * are not done, because they would fail for non-ASCII +*************** +*** 3950,3956 **** + acp_to_enc(p, (int)STRLEN(p), &pp, &len); + if (pp != NULL) + { +! if (mustfree) + vim_free(p); + p = pp; + *mustfree = TRUE; +--- 3952,3958 ---- + acp_to_enc(p, (int)STRLEN(p), &pp, &len); + if (pp != NULL) + { +! if (*mustfree) + vim_free(p); + p = pp; + *mustfree = TRUE; +*** ../vim-7.3.168/src/version.c 2011-04-28 17:30:05.000000000 +0200 +--- src/version.c 2011-04-28 17:48:04.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 169, + /**/ + +-- +A day without sunshine is like, well, night. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.170 b/source/ap/vim/patches/7.3.170 new file mode 100644 index 00000000..933173ea --- /dev/null +++ b/source/ap/vim/patches/7.3.170 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.170 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.170 +Problem: VMS Makefile for testing was not updated for test77. +Solution: Add test77 to the Makefile. +Files: src/testdir/Make_vms.mms + + +*** ../vim-7.3.169/src/testdir/Make_vms.mms 2010-11-10 16:54:16.000000000 +0100 +--- src/testdir/Make_vms.mms 2011-03-03 17:04:56.000000000 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2010 Nov 10 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2011 Mar 03 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 74,80 **** + test56.out test57.out test60.out \ + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out \ +! test71.out test72.out test74.out test75.out test76.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 74,81 ---- + test56.out test57.out test60.out \ + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out \ +! test71.out test72.out test74.out test75.out test76.out \ +! test77.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.169/src/version.c 2011-04-28 17:48:39.000000000 +0200 +--- src/version.c 2011-04-28 19:04:33.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 170, + /**/ + +-- +The users that I support would double-click on a landmine to find out +what happens. -- A system administrator + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.171 b/source/ap/vim/patches/7.3.171 new file mode 100644 index 00000000..f965e0a2 --- /dev/null +++ b/source/ap/vim/patches/7.3.171 @@ -0,0 +1,142 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.171 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.171 +Problem: When the clipboard isn't supported: ":yank*" gives a confusing + error message. +Solution: Specifically mention that the register name is invalid. + (Jean-Rene David) +Files: runtime/doc/change.txt, src/ex_docmd.c, src/globals.h + + +*** ../vim-7.3.170/runtime/doc/change.txt 2010-08-15 21:57:18.000000000 +0200 +--- runtime/doc/change.txt 2011-05-05 13:48:00.000000000 +0200 +*************** +*** 916,923 **** + {Visual}["x]Y Yank the highlighted lines [into register x] (for + {Visual} see |Visual-mode|). {not in Vi} + +! *:y* *:yank* +! :[range]y[ank] [x] Yank [range] lines [into register x]. + + :[range]y[ank] [x] {count} + Yank {count} lines, starting with last line number +--- 917,926 ---- + {Visual}["x]Y Yank the highlighted lines [into register x] (for + {Visual} see |Visual-mode|). {not in Vi} + +! *:y* *:yank* *E850* +! :[range]y[ank] [x] Yank [range] lines [into register x]. Yanking to the +! "* or "+ registers is possible only in GUI versions or +! when the |+xterm_clipboard| feature is included. + + :[range]y[ank] [x] {count} + Yank {count} lines, starting with last line number +*** ../vim-7.3.170/src/ex_docmd.c 2011-04-11 21:35:03.000000000 +0200 +--- src/ex_docmd.c 2011-05-05 13:48:57.000000000 +0200 +*************** +*** 2424,2448 **** + if ( (ea.argt & REGSTR) + && *ea.arg != NUL + #ifdef FEAT_USR_CMDS +- && valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put +- && USER_CMDIDX(ea.cmdidx))) + /* Do not allow register = for user commands */ + && (!USER_CMDIDX(ea.cmdidx) || *ea.arg != '=') +- #else +- && valid_yank_reg(*ea.arg, ea.cmdidx != CMD_put) + #endif + && !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg))) + { +! ea.regname = *ea.arg++; +! #ifdef FEAT_EVAL +! /* for '=' register: accept the rest of the line as an expression */ +! if (ea.arg[-1] == '=' && ea.arg[0] != NUL) + { +! set_expr_line(vim_strsave(ea.arg)); +! ea.arg += STRLEN(ea.arg); + } + #endif +! ea.arg = skipwhite(ea.arg); + } + + /* +--- 2424,2462 ---- + if ( (ea.argt & REGSTR) + && *ea.arg != NUL + #ifdef FEAT_USR_CMDS + /* Do not allow register = for user commands */ + && (!USER_CMDIDX(ea.cmdidx) || *ea.arg != '=') + #endif + && !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg))) + { +! #ifndef FEAT_CLIPBOARD +! /* check these explicitly for a more specific error message */ +! if (*ea.arg == '*' || *ea.arg == '+') + { +! errormsg = (char_u *)_(e_invalidreg); +! goto doend; + } + #endif +! if ( +! #ifdef FEAT_USR_CMDS +! valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put +! && USER_CMDIDX(ea.cmdidx))) +! #else +! valid_yank_reg(*ea.arg, ea.cmdidx != CMD_put) +! #endif +! ) +! { +! ea.regname = *ea.arg++; +! #ifdef FEAT_EVAL +! /* for '=' register: accept the rest of the line as an expression */ +! if (ea.arg[-1] == '=' && ea.arg[0] != NUL) +! { +! set_expr_line(vim_strsave(ea.arg)); +! ea.arg += STRLEN(ea.arg); +! } +! #endif +! ea.arg = skipwhite(ea.arg); +! } + } + + /* +*** ../vim-7.3.170/src/globals.h 2011-02-15 17:39:14.000000000 +0100 +--- src/globals.h 2011-05-05 13:47:44.000000000 +0200 +*************** +*** 1561,1566 **** +--- 1561,1569 ---- + (defined(FEAT_INS_EXPAND) && defined(FEAT_COMPL_FUNC)) + EXTERN char_u e_notset[] INIT(= N_("E764: Option '%s' is not set")); + #endif ++ #ifndef FEAT_CLIPBOARD ++ EXTERN char_u e_invalidreg[] INIT(= N_("E850: Invalid register name")); ++ #endif + + #ifdef MACOS_X_UNIX + EXTERN short disallow_gui INIT(= FALSE); +*** ../vim-7.3.170/src/version.c 2011-04-28 19:05:01.000000000 +0200 +--- src/version.c 2011-05-05 14:24:39.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 171, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +53. To find out what time it is, you send yourself an e-mail and check the + "Date:" field. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.172 b/source/ap/vim/patches/7.3.172 new file mode 100644 index 00000000..66a78521 --- /dev/null +++ b/source/ap/vim/patches/7.3.172 @@ -0,0 +1,268 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.172 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.172 +Problem: MS-Windows: rename() might delete the file if the name differs but + it's actually the same file. +Solution: Use the file handle to check if it's the same file. (Yukihiro + Nakadaira) +Files: src/if_cscope.c, src/fileio.c, src/os_win32.c, + src/proto/os_win32.pro, src/vim.h + + +*** ../vim-7.3.171/src/if_cscope.c 2011-03-03 15:01:25.000000000 +0100 +--- src/if_cscope.c 2011-05-05 16:16:38.000000000 +0200 +*************** +*** 1412,1428 **** + { + short i, j; + #ifndef UNIX +- HANDLE hFile; + BY_HANDLE_FILE_INFORMATION bhfi; + +- vim_memset(&bhfi, 0, sizeof(bhfi)); + /* On windows 9x GetFileInformationByHandle doesn't work, so skip it */ + if (!mch_windows95()) + { +! hFile = CreateFile(fname, FILE_READ_ATTRIBUTES, 0, NULL, OPEN_EXISTING, +! FILE_ATTRIBUTE_NORMAL, NULL); +! if (hFile == INVALID_HANDLE_VALUE) + { + if (p_csverbose) + { + char *cant_msg = _("E625: cannot open cscope database: %s"); +--- 1412,1426 ---- + { + short i, j; + #ifndef UNIX + BY_HANDLE_FILE_INFORMATION bhfi; + + /* On windows 9x GetFileInformationByHandle doesn't work, so skip it */ + if (!mch_windows95()) + { +! switch (win32_fileinfo(fname, &bhfi)) + { ++ case FILEINFO_ENC_FAIL: /* enc_to_utf16() failed */ ++ case FILEINFO_READ_FAIL: /* CreateFile() failed */ + if (p_csverbose) + { + char *cant_msg = _("E625: cannot open cscope database: %s"); +*************** +*** 1438,1452 **** + (void)EMSG2(cant_msg, fname); + } + return -1; +! } +! if (!GetFileInformationByHandle(hFile, &bhfi)) +! { +! CloseHandle(hFile); + if (p_csverbose) + (void)EMSG(_("E626: cannot get cscope database information")); + return -1; + } +- CloseHandle(hFile); + } + #endif + +--- 1436,1447 ---- + (void)EMSG2(cant_msg, fname); + } + return -1; +! +! case FILEINFO_INFO_FAIL: /* GetFileInformationByHandle() failed */ + if (p_csverbose) + (void)EMSG(_("E626: cannot get cscope database information")); + return -1; + } + } + #endif + +*** ../vim-7.3.171/src/fileio.c 2011-04-11 21:35:03.000000000 +0200 +--- src/fileio.c 2011-05-05 16:22:22.000000000 +0200 +*************** +*** 6555,6560 **** +--- 6555,6575 ---- + use_tmp_file = TRUE; + } + #endif ++ #ifdef WIN3264 ++ { ++ BY_HANDLE_FILE_INFORMATION info1, info2; ++ ++ /* It's possible for the source and destination to be the same file. ++ * In that case go through a temp file name. This makes rename("foo", ++ * "./foo") a no-op (in a complicated way). */ ++ if (win32_fileinfo(from, &info1) == FILEINFO_OK ++ && win32_fileinfo(to, &info2) == FILEINFO_OK ++ && info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber ++ && info1.nFileIndexHigh == info2.nFileIndexHigh ++ && info1.nFileIndexLow == info2.nFileIndexLow) ++ use_tmp_file = TRUE; ++ } ++ #endif + + #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME) + if (use_tmp_file) +*** ../vim-7.3.171/src/os_win32.c 2011-02-01 13:48:47.000000000 +0100 +--- src/os_win32.c 2011-05-05 16:24:17.000000000 +0200 +*************** +*** 2645,2669 **** + int + mch_is_linked(char_u *fname) + { + HANDLE hFile; +! int res = 0; +! BY_HANDLE_FILE_INFORMATION inf; + #ifdef FEAT_MBYTE + WCHAR *wn = NULL; + + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) + wn = enc_to_utf16(fname, NULL); + if (wn != NULL) + { + hFile = CreateFileW(wn, /* file name */ + GENERIC_READ, /* access mode */ +! 0, /* share mode */ + NULL, /* security descriptor */ + OPEN_EXISTING, /* creation disposition */ +! 0, /* file attributes */ + NULL); /* handle to template file */ + if (hFile == INVALID_HANDLE_VALUE +! && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) + { + /* Retry with non-wide function (for Windows 98). */ + vim_free(wn); +--- 2645,2688 ---- + int + mch_is_linked(char_u *fname) + { ++ BY_HANDLE_FILE_INFORMATION info; ++ ++ return win32_fileinfo(fname, &info) == FILEINFO_OK ++ && info.nNumberOfLinks > 1; ++ } ++ ++ /* ++ * Get the by-handle-file-information for "fname". ++ * Returns FILEINFO_OK when OK. ++ * returns FILEINFO_ENC_FAIL when enc_to_utf16() failed. ++ * Returns FILEINFO_READ_FAIL when CreateFile() failed. ++ * Returns FILEINFO_INFO_FAIL when GetFileInformationByHandle() failed. ++ */ ++ int ++ win32_fileinfo(char_u *fname, BY_HANDLE_FILE_INFORMATION *info) ++ { + HANDLE hFile; +! int res = FILEINFO_READ_FAIL; + #ifdef FEAT_MBYTE + WCHAR *wn = NULL; + + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) ++ { + wn = enc_to_utf16(fname, NULL); ++ if (wn == NULL) ++ res = FILEINFO_ENC_FAIL; ++ } + if (wn != NULL) + { + hFile = CreateFileW(wn, /* file name */ + GENERIC_READ, /* access mode */ +! FILE_SHARE_READ | FILE_SHARE_WRITE, /* share mode */ + NULL, /* security descriptor */ + OPEN_EXISTING, /* creation disposition */ +! FILE_FLAG_BACKUP_SEMANTICS, /* file attributes */ + NULL); /* handle to template file */ + if (hFile == INVALID_HANDLE_VALUE +! && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) + { + /* Retry with non-wide function (for Windows 98). */ + vim_free(wn); +*************** +*** 2674,2690 **** + #endif + hFile = CreateFile(fname, /* file name */ + GENERIC_READ, /* access mode */ +! 0, /* share mode */ + NULL, /* security descriptor */ + OPEN_EXISTING, /* creation disposition */ +! 0, /* file attributes */ + NULL); /* handle to template file */ + + if (hFile != INVALID_HANDLE_VALUE) + { +! if (GetFileInformationByHandle(hFile, &inf) != 0 +! && inf.nNumberOfLinks > 1) +! res = 1; + CloseHandle(hFile); + } + +--- 2693,2710 ---- + #endif + hFile = CreateFile(fname, /* file name */ + GENERIC_READ, /* access mode */ +! FILE_SHARE_READ | FILE_SHARE_WRITE, /* share mode */ + NULL, /* security descriptor */ + OPEN_EXISTING, /* creation disposition */ +! FILE_FLAG_BACKUP_SEMANTICS, /* file attributes */ + NULL); /* handle to template file */ + + if (hFile != INVALID_HANDLE_VALUE) + { +! if (GetFileInformationByHandle(hFile, info) != 0) +! res = FILEINFO_OK; +! else +! res = FILEINFO_INFO_FAIL; + CloseHandle(hFile); + } + +*** ../vim-7.3.171/src/proto/os_win32.pro 2010-10-23 14:02:48.000000000 +0200 +--- src/proto/os_win32.pro 2011-05-05 16:17:42.000000000 +0200 +*************** +*** 21,26 **** +--- 21,27 ---- + void mch_hide __ARGS((char_u *name)); + int mch_isdir __ARGS((char_u *name)); + int mch_is_linked __ARGS((char_u *fname)); ++ int win32_fileinfo __ARGS((char_u *name, BY_HANDLE_FILE_INFORMATION *lpFileInfo)); + int mch_writable __ARGS((char_u *name)); + int mch_can_exe __ARGS((char_u *name)); + int mch_nodetype __ARGS((char_u *name)); +*** ../vim-7.3.171/src/vim.h 2011-04-11 21:35:03.000000000 +0200 +--- src/vim.h 2011-05-05 16:16:57.000000000 +0200 +*************** +*** 2217,2220 **** +--- 2217,2226 ---- + #define KEYLEN_PART_MAP -2 /* keylen value for incomplete mapping */ + #define KEYLEN_REMOVED 9999 /* keylen value for removed sequence */ + ++ /* Return values from win32_fileinfo(). */ ++ #define FILEINFO_OK 0 ++ #define FILEINFO_ENC_FAIL 1 /* enc_to_utf16() failed */ ++ #define FILEINFO_READ_FAIL 2 /* CreateFile() failed */ ++ #define FILEINFO_INFO_FAIL 3 /* GetFileInformationByHandle() failed */ ++ + #endif /* VIM__H */ +*** ../vim-7.3.171/src/version.c 2011-05-05 14:26:37.000000000 +0200 +--- src/version.c 2011-05-05 16:39:35.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 172, + /**/ + +-- +Q: What is a patch 22? +A: A patch you need to include to make it possible to include patches. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.173 b/source/ap/vim/patches/7.3.173 new file mode 100644 index 00000000..ac8cffb9 --- /dev/null +++ b/source/ap/vim/patches/7.3.173 @@ -0,0 +1,79 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.173 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.173 +Problem: After using setqflist() to make the quickfix list empty ":cwindow" + may open the window anyway. Also after ":vimgrep". +Solution: Correctly check whether the list is empty. (Ingo Karkat) +Files: src/quickfix.c + + +*** ../vim-7.3.172/src/quickfix.c 2011-04-28 17:27:05.000000000 +0200 +--- src/quickfix.c 2011-05-05 16:55:47.000000000 +0200 +*************** +*** 1164,1170 **** + + /* When no valid entries are present in the list, qf_ptr points to + * the first item in the list */ +! if (to_qfl->qf_nonevalid == TRUE) + to_qfl->qf_ptr = to_qfl->qf_start; + } + +--- 1164,1170 ---- + + /* When no valid entries are present in the list, qf_ptr points to + * the first item in the list */ +! if (to_qfl->qf_nonevalid) + to_qfl->qf_ptr = to_qfl->qf_start; + } + +*************** +*** 2243,2248 **** +--- 2243,2249 ---- + * it if we have errors; otherwise, leave it closed. + */ + if (qi->qf_lists[qi->qf_curlist].qf_nonevalid ++ || qi->qf_lists[qi->qf_curlist].qf_count == 0 + || qi->qf_curlist >= qi->qf_listcount) + { + if (win != NULL) +*************** +*** 3711,3717 **** + } + + if (qi->qf_lists[qi->qf_curlist].qf_index == 0) +! /* empty list or no valid entry */ + qi->qf_lists[qi->qf_curlist].qf_nonevalid = TRUE; + else + qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE; +--- 3712,3718 ---- + } + + if (qi->qf_lists[qi->qf_curlist].qf_index == 0) +! /* no valid entry */ + qi->qf_lists[qi->qf_curlist].qf_nonevalid = TRUE; + else + qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE; +*** ../vim-7.3.172/src/version.c 2011-05-05 16:41:19.000000000 +0200 +--- src/version.c 2011-05-05 17:11:57.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 173, + /**/ + +-- +"I can't complain, but sometimes I still do." (Joe Walsh) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.174 b/source/ap/vim/patches/7.3.174 new file mode 100644 index 00000000..33d60035 --- /dev/null +++ b/source/ap/vim/patches/7.3.174 @@ -0,0 +1,109 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.174 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.174 +Problem: When Exuberant ctags binary is exctags it's not found. +Solution: Add configure check for exctags. (Hong Xu) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.173/src/configure.in 2011-02-09 17:42:53.000000000 +0100 +--- src/configure.in 2011-05-05 17:18:21.000000000 +0200 +*************** +*** 2619,2625 **** + dnl On HP-UX 10.10 termcap or termlib should be used instead of + dnl curses, because curses is much slower. + dnl Newer versions of ncurses are preferred over anything, except +! dnl when tinfo has been split off, it conains all we need. + dnl Older versions of ncurses have bugs, get a new one! + dnl Digital Unix (OSF1) should use curses (Ronald Schild). + dnl On SCO Openserver should prefer termlib (Roger Cornelius). +--- 2619,2625 ---- + dnl On HP-UX 10.10 termcap or termlib should be used instead of + dnl curses, because curses is much slower. + dnl Newer versions of ncurses are preferred over anything, except +! dnl when tinfo has been split off, it contains all we need. + dnl Older versions of ncurses have bugs, get a new one! + dnl Digital Unix (OSF1) should use curses (Ronald Schild). + dnl On SCO Openserver should prefer termlib (Roger Cornelius). +*************** +*** 3370,3376 **** + AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,) + + dnl Check how we can run ctags. Default to "ctags" when nothing works. +! dnl --version for Exuberant ctags (preferred) + dnl Add --fields=+S to get function signatures for omni completion. + dnl -t for typedefs (many ctags have this) + dnl -s for static functions (Elvis ctags only?) +--- 3370,3376 ---- + AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,) + + dnl Check how we can run ctags. Default to "ctags" when nothing works. +! dnl Use --version to detect Exuberant ctags (preferred) + dnl Add --fields=+S to get function signatures for omni completion. + dnl -t for typedefs (many ctags have this) + dnl -s for static functions (Elvis ctags only?) +*************** +*** 3378,3384 **** + dnl -i+m to test for older Exuberant ctags + AC_MSG_CHECKING(how to create tags) + test -f tags && mv tags tags.save +! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then + TAGPRG="ctags -I INIT+ --fields=+S" + else + TAGPRG="ctags" +--- 3378,3386 ---- + dnl -i+m to test for older Exuberant ctags + AC_MSG_CHECKING(how to create tags) + test -f tags && mv tags tags.save +! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then +! TAGPRG="exctags -I INIT+ --fields=+S" +! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then + TAGPRG="ctags -I INIT+ --fields=+S" + else + TAGPRG="ctags" +*** ../vim-7.3.173/src/auto/configure 2011-02-09 17:42:53.000000000 +0100 +--- src/auto/configure 2011-05-05 17:19:26.000000000 +0200 +*************** +*** 12031,12037 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5 + $as_echo_n "checking how to create tags... " >&6; } + test -f tags && mv tags tags.save +! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then + TAGPRG="ctags -I INIT+ --fields=+S" + else + TAGPRG="ctags" +--- 12031,12039 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5 + $as_echo_n "checking how to create tags... " >&6; } + test -f tags && mv tags tags.save +! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then +! TAGPRG="exctags -I INIT+ --fields=+S" +! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then + TAGPRG="ctags -I INIT+ --fields=+S" + else + TAGPRG="ctags" +*** ../vim-7.3.173/src/version.c 2011-05-05 17:14:07.000000000 +0200 +--- src/version.c 2011-05-05 17:19:37.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 174, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +54. You start tilting your head sideways to smile. :-) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.175 b/source/ap/vim/patches/7.3.175 new file mode 100644 index 00000000..57fbc4a7 --- /dev/null +++ b/source/ap/vim/patches/7.3.175 @@ -0,0 +1,50 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.175 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.175 +Problem: When 'colorcolumn' is set locally to a window, ":new" opens a + window with the same highlighting but 'colorcolumn' is empty. + (Tyru) +Solution: Call check_colorcolumn() after clearing and copying options. + (Christian Brabandt) +Files: src/buffer.c + + +*** ../vim-7.3.174/src/buffer.c 2011-04-11 16:56:29.000000000 +0200 +--- src/buffer.c 2011-05-05 17:28:24.000000000 +0200 +*************** +*** 2527,2532 **** +--- 2527,2535 ---- + if (p_fdls >= 0) + curwin->w_p_fdl = p_fdls; + #endif ++ #ifdef FEAT_SYN_HL ++ check_colorcolumn(curwin); ++ #endif + } + + /* +*** ../vim-7.3.174/src/version.c 2011-05-05 17:23:58.000000000 +0200 +--- src/version.c 2011-05-05 17:30:32.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 175, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +55. You ask your doctor to implant a gig in your brain. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.176 b/source/ap/vim/patches/7.3.176 new file mode 100644 index 00000000..fcf4880d --- /dev/null +++ b/source/ap/vim/patches/7.3.176 @@ -0,0 +1,165 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.176 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.176 +Problem: Ruby linking doesn't work properly on Mac OS X. +Solution: Fix the configure check for Ruby. (Bjorn Winckler) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.175/src/configure.in 2011-05-05 17:23:58.000000000 +0200 +--- src/configure.in 2011-05-05 18:03:38.000000000 +0200 +*************** +*** 1387,1396 **** + AC_MSG_RESULT($enable_rubyinterp) + if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then + AC_MSG_CHECKING(--with-ruby-command argument) + AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)], +! RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD), + RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD)) +- AC_SUBST(vi_cv_path_ruby) + AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD) + if test "X$vi_cv_path_ruby" != "X"; then + AC_MSG_CHECKING(Ruby version) +--- 1387,1396 ---- + AC_MSG_RESULT($enable_rubyinterp) + if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then + AC_MSG_CHECKING(--with-ruby-command argument) ++ AC_SUBST(vi_cv_path_ruby) + AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)], +! RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD), + RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD)) + AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD) + if test "X$vi_cv_path_ruby" != "X"; then + AC_MSG_CHECKING(Ruby version) +*************** +*** 1412,1429 **** + RUBY_LIBS="$rubylibs" + fi + librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'` +! if test -f "$rubyhdrdir/$librubyarg"; then +! librubyarg="$rubyhdrdir/$librubyarg" +! else +! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'` +! if test -f "$rubylibdir/$librubyarg"; then +! librubyarg="$rubylibdir/$librubyarg" +! elif test "$librubyarg" = "libruby.a"; then +! dnl required on Mac OS 10.3 where libruby.a doesn't exist +! librubyarg="-lruby" +! else +! librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"` +! fi + fi + + if test "X$librubyarg" != "X"; then +--- 1412,1426 ---- + 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" +! elif test "$librubyarg" = "libruby.a"; then +! dnl required on Mac OS 10.3 where libruby.a doesn't exist +! librubyarg="-lruby" +! RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" + fi + + if test "X$librubyarg" != "X"; then +*** ../vim-7.3.175/src/auto/configure 2011-05-05 17:23:58.000000000 +0200 +--- src/auto/configure 2011-05-05 18:06:47.000000000 +0200 +*************** +*** 6218,6233 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5 + $as_echo_n "checking --with-ruby-command argument... " >&6; } + + # Check whether --with-ruby-command was given. + if test "${with_ruby_command+set}" = set; then : +! withval=$with_ruby_command; RUBY_CMD="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY_CMD" >&5 + $as_echo "$RUBY_CMD" >&6; } + else + RUBY_CMD="ruby"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to $RUBY_CMD" >&5 + $as_echo "defaulting to $RUBY_CMD" >&6; } + fi + +- + # Extract the first word of "$RUBY_CMD", so it can be a program name with args. + set dummy $RUBY_CMD; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +--- 6218,6233 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5 + $as_echo_n "checking --with-ruby-command argument... " >&6; } + ++ + # Check whether --with-ruby-command was given. + if test "${with_ruby_command+set}" = set; then : +! withval=$with_ruby_command; RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY_CMD" >&5 + $as_echo "$RUBY_CMD" >&6; } + else + RUBY_CMD="ruby"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to $RUBY_CMD" >&5 + $as_echo "defaulting to $RUBY_CMD" >&6; } + fi + + # Extract the first word of "$RUBY_CMD", so it can be a program name with args. + set dummy $RUBY_CMD; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +*************** +*** 6292,6308 **** + RUBY_LIBS="$rubylibs" + fi + librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBYARG"])'` +! if test -f "$rubyhdrdir/$librubyarg"; then +! librubyarg="$rubyhdrdir/$librubyarg" +! else +! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'` +! if test -f "$rubylibdir/$librubyarg"; then +! librubyarg="$rubylibdir/$librubyarg" +! elif test "$librubyarg" = "libruby.a"; then +! librubyarg="-lruby" +! else +! librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"` +! fi + fi + + if test "X$librubyarg" != "X"; then +--- 6292,6305 ---- + 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" +! elif test "$librubyarg" = "libruby.a"; then +! librubyarg="-lruby" +! RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" + fi + + if test "X$librubyarg" != "X"; then +*** ../vim-7.3.175/src/version.c 2011-05-05 17:32:40.000000000 +0200 +--- src/version.c 2011-05-05 18:08:52.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 176, + /**/ + +-- +"I simultaneously try to keep my head in the clouds and my feet on the +ground. Sometimes it's a stretch, though." -- Larry Wall + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.177 b/source/ap/vim/patches/7.3.177 new file mode 100644 index 00000000..895b3b13 --- /dev/null +++ b/source/ap/vim/patches/7.3.177 @@ -0,0 +1,97 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.177 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.177 +Problem: MS-Windows: mkdir() doesn't work properly when 'encoding' is + "utf-8". +Solution: Convert to utf-16. (Yukihiro Nakadaira) +Files: src/os_win32.c, src/os_win32.h, src/proto/os_win32.pro + + +*** ../vim-7.3.176/src/os_win32.c 2011-05-05 16:41:19.000000000 +0200 +--- src/os_win32.c 2011-05-05 18:24:36.000000000 +0200 +*************** +*** 2640,2645 **** +--- 2640,2669 ---- + } + + /* ++ * Create directory "name". ++ * Return 0 on success, -1 on error. ++ */ ++ int ++ mch_mkdir(char_u *name) ++ { ++ #ifdef FEAT_MBYTE ++ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) ++ { ++ WCHAR *p; ++ int retval; ++ ++ p = enc_to_utf16(name, NULL); ++ if (p == NULL) ++ return -1; ++ retval = _wmkdir(p); ++ vim_free(p); ++ return retval; ++ } ++ #endif ++ return _mkdir(name); ++ } ++ ++ /* + * Return TRUE if file "fname" has more than one link. + */ + int +*** ../vim-7.3.176/src/os_win32.h 2010-08-15 21:57:30.000000000 +0200 +--- src/os_win32.h 2011-05-05 18:25:44.000000000 +0200 +*************** +*** 191,195 **** + #ifdef __BORLANDC__ + # define vim_mkdir(x, y) mkdir(x) + #else +! # define vim_mkdir(x, y) _mkdir(x) + #endif +--- 191,195 ---- + #ifdef __BORLANDC__ + # define vim_mkdir(x, y) mkdir(x) + #else +! # define vim_mkdir(x, y) mch_mkdir(x) + #endif +*** ../vim-7.3.176/src/proto/os_win32.pro 2011-05-05 16:41:19.000000000 +0200 +--- src/proto/os_win32.pro 2011-05-05 18:26:20.000000000 +0200 +*************** +*** 20,25 **** +--- 20,26 ---- + int mch_setperm __ARGS((char_u *name, long perm)); + void mch_hide __ARGS((char_u *name)); + int mch_isdir __ARGS((char_u *name)); ++ int mch_mkdir __ARGS((char_u *name)); + int mch_is_linked __ARGS((char_u *fname)); + int win32_fileinfo __ARGS((char_u *name, BY_HANDLE_FILE_INFORMATION *lpFileInfo)); + int mch_writable __ARGS((char_u *name)); +*** ../vim-7.3.176/src/version.c 2011-05-05 18:10:11.000000000 +0200 +--- src/version.c 2011-05-05 18:27:56.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 177, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +56. You leave the modem speaker on after connecting because you think it + sounds like the ocean wind...the perfect soundtrack for "surfing the net". + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.178 b/source/ap/vim/patches/7.3.178 new file mode 100644 index 00000000..9b6ca7c3 --- /dev/null +++ b/source/ap/vim/patches/7.3.178 @@ -0,0 +1,163 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.178 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.178 +Problem: C-indent doesn't handle code right after { correctly. +Solution: Fix detecting unterminated line. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.177/src/misc1.c 2011-04-28 17:48:39.000000000 +0200 +--- src/misc1.c 2011-05-10 11:35:09.000000000 +0200 +*************** +*** 4983,4989 **** + } + + /* +! * Return TRUE if there there is no code at *s. White space and comments are + * not considered code. + */ + static int +--- 4983,4989 ---- + } + + /* +! * Return TRUE if there is no code at *s. White space and comments are + * not considered code. + */ + static int +*************** +*** 5458,5465 **** + } + + /* +! * Recognize a line that starts with '{' or '}', or ends with ';', '{' or '}'. + * Don't consider "} else" a terminated line. + * Return the character terminating the line (ending char's have precedence if + * both apply in order to determine initializations). + */ +--- 5458,5468 ---- + } + + /* +! * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or +! * '}'. + * Don't consider "} else" a terminated line. ++ * Don't consider a line where there are unmatched opening braces before '}', ++ * ';' or ',' a terminated line. + * Return the character terminating the line (ending char's have precedence if + * both apply in order to determine initializations). + */ +*************** +*** 5470,5475 **** +--- 5473,5479 ---- + int incl_comma; /* recognize a trailing comma */ + { + char_u found_start = 0; ++ unsigned n_open = 0; + + s = cin_skipcomment(s); + +*************** +*** 5480,5489 **** + { + /* skip over comments, "" strings and 'c'haracters */ + s = skip_string(cin_skipcomment(s)); +! if ((*s == ';' || (incl_open && *s == '{') || *s == '}' +! || (incl_comma && *s == ',')) + && cin_nocode(s + 1)) + return *s; + + if (*s) + s++; +--- 5484,5502 ---- + { + /* skip over comments, "" strings and 'c'haracters */ + s = skip_string(cin_skipcomment(s)); +! if (*s == '}' && n_open > 0) +! --n_open; +! if (n_open == 0 +! && (*s == ';' || *s == '}' || (incl_comma && *s == ',')) + && cin_nocode(s + 1)) + return *s; ++ else if (*s == '{') ++ { ++ if (incl_open && cin_nocode(s + 1)) ++ return *s; ++ else ++ ++n_open; ++ } + + if (*s) + s++; +*** ../vim-7.3.177/src/testdir/test3.in 2011-04-28 13:01:59.000000000 +0200 +--- src/testdir/test3.in 2011-05-10 11:34:13.000000000 +0200 +*************** +*** 1344,1349 **** +--- 1344,1365 ---- + } + + STARTTEST ++ :set cino& ++ 2kdd=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if(x==y) ++ if(y==z) ++ foo=1; ++ else { bar=1; ++ baz=2; ++ } ++ printf("Foo!\n"); ++ } ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/start of AUTO/,$wq! test.out + ENDTEST +*** ../vim-7.3.177/src/testdir/test3.ok 2011-04-28 13:01:59.000000000 +0200 +--- src/testdir/test3.ok 2011-05-10 11:34:13.000000000 +0200 +*************** +*** 1204,1206 **** +--- 1204,1218 ---- + { + } + ++ ++ void func(void) ++ { ++ if(x==y) ++ if(y==z) ++ foo=1; ++ else { bar=1; ++ baz=2; ++ } ++ printf("Foo!\n"); ++ } ++ +*** ../vim-7.3.177/src/version.c 2011-05-05 18:31:54.000000000 +0200 +--- src/version.c 2011-05-10 11:37:43.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 178, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +69. Yahoo welcomes you with your own start page + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.179 b/source/ap/vim/patches/7.3.179 new file mode 100644 index 00000000..f175b264 --- /dev/null +++ b/source/ap/vim/patches/7.3.179 @@ -0,0 +1,95 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.179 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.179 +Problem: C-indent doesn't handle colon in string correctly. +Solution: Skip the string. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.178/src/misc1.c 2011-05-10 11:39:13.000000000 +0200 +--- src/misc1.c 2011-05-10 11:50:14.000000000 +0200 +*************** +*** 5801,5807 **** + continue; + } + +! if (s[0] == ':') + { + if (s[1] == ':') + { +--- 5801,5809 ---- + continue; + } + +! if (s[0] == '"') +! s = skip_string(s) + 1; +! else if (s[0] == ':') + { + if (s[1] == ':') + { +*** ../vim-7.3.178/src/testdir/test3.in 2011-05-10 11:39:13.000000000 +0200 +--- src/testdir/test3.in 2011-05-10 11:53:02.000000000 +0200 +*************** +*** 1360,1365 **** +--- 1360,1378 ---- + } + + STARTTEST ++ :set cino& ++ 2kdd=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ cout << "a" ++ << "b" ++ << ") :" ++ << "c"; ++ } ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/start of AUTO/,$wq! test.out + ENDTEST +*** ../vim-7.3.178/src/testdir/test3.ok 2011-05-10 11:39:13.000000000 +0200 +--- src/testdir/test3.ok 2011-05-10 11:50:14.000000000 +0200 +*************** +*** 1216,1218 **** +--- 1216,1227 ---- + printf("Foo!\n"); + } + ++ ++ void func(void) ++ { ++ cout << "a" ++ << "b" ++ << ") :" ++ << "c"; ++ } ++ +*** ../vim-7.3.178/src/version.c 2011-05-10 11:39:13.000000000 +0200 +--- src/version.c 2011-05-10 11:53:36.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 179, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +71. You wonder how people walk + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.180 b/source/ap/vim/patches/7.3.180 new file mode 100644 index 00000000..5997bfbe --- /dev/null +++ b/source/ap/vim/patches/7.3.180 @@ -0,0 +1,295 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.180 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.180 +Problem: When both a middle part of 'comments' matches and an end part, the + middle part was used errornously. +Solution: After finding the middle part match continue looking for a better + end part match. (partly by Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.179/src/misc1.c 2011-05-10 11:56:26.000000000 +0200 +--- src/misc1.c 2011-05-10 13:24:38.000000000 +0200 +*************** +*** 1561,1566 **** +--- 1561,1569 ---- + char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ + char_u *string; /* pointer to comment string */ + char_u *list; ++ int middle_match_len = 0; ++ char_u *prev_list; ++ char_u *saved_flags; + + i = 0; + while (vim_iswhite(line[i])) /* leading white space is ignored */ +*************** +*** 1569,1575 **** + /* + * Repeat to match several nested comment strings. + */ +! while (line[i]) + { + /* + * scan through the 'comments' option for a match +--- 1572,1578 ---- + /* + * Repeat to match several nested comment strings. + */ +! while (line[i] != NUL) + { + /* + * scan through the 'comments' option for a match +*************** +*** 1577,1658 **** + found_one = FALSE; + for (list = curbuf->b_p_com; *list; ) + { +! /* +! * Get one option part into part_buf[]. Advance list to next one. +! * put string at start of string. +! */ +! if (!got_com && flags != NULL) /* remember where flags started */ +! *flags = list; + (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ","); + string = vim_strchr(part_buf, ':'); + if (string == NULL) /* missing ':', ignore this part */ + continue; + *string++ = NUL; /* isolate flags from string */ + +! /* +! * When already found a nested comment, only accept further +! * nested comments. +! */ + if (got_com && vim_strchr(part_buf, COM_NEST) == NULL) + continue; + +! /* When 'O' flag used don't use for "O" command */ + if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL) + continue; + +! /* +! * Line contents and string must match. + * When string starts with white space, must have some white space + * (but the amount does not need to match, there might be a mix of +! * TABs and spaces). +! */ + if (vim_iswhite(string[0])) + { + if (i == 0 || !vim_iswhite(line[i - 1])) +! continue; + while (vim_iswhite(string[0])) + ++string; + } + for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j) + ; + if (string[j] != NUL) +! continue; + +! /* +! * When 'b' flag used, there must be white space or an +! * end-of-line after the string in the line. +! */ + if (vim_strchr(part_buf, COM_BLANK) != NULL + && !vim_iswhite(line[i + j]) && line[i + j] != NUL) + continue; + +! /* +! * We have found a match, stop searching. +! */ +! i += j; +! got_com = TRUE; + found_one = TRUE; + break; + } + +! /* +! * No match found, stop scanning. +! */ + if (!found_one) + break; + +! /* +! * Include any trailing white space. +! */ + while (vim_iswhite(line[i])) + ++i; + +! /* +! * If this comment doesn't nest, stop here. +! */ + if (vim_strchr(part_buf, COM_NEST) == NULL) + break; + } + return (got_com ? i : 0); + } + #endif +--- 1580,1683 ---- + found_one = FALSE; + for (list = curbuf->b_p_com; *list; ) + { +! /* Get one option part into part_buf[]. Advance "list" to next +! * one. Put "string" at start of string. */ +! if (!got_com && flags != NULL) +! *flags = list; /* remember where flags started */ +! prev_list = list; + (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ","); + string = vim_strchr(part_buf, ':'); + if (string == NULL) /* missing ':', ignore this part */ + continue; + *string++ = NUL; /* isolate flags from string */ + +! /* If we found a middle match previously, use that match when this +! * is not a middle or end. */ +! if (middle_match_len != 0 +! && vim_strchr(part_buf, COM_MIDDLE) == NULL +! && vim_strchr(part_buf, COM_END) == NULL) +! break; +! +! /* When we already found a nested comment, only accept further +! * nested comments. */ + if (got_com && vim_strchr(part_buf, COM_NEST) == NULL) + continue; + +! /* When 'O' flag present and using "O" command skip this one. */ + if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL) + continue; + +! /* Line contents and string must match. + * When string starts with white space, must have some white space + * (but the amount does not need to match, there might be a mix of +! * TABs and spaces). */ + if (vim_iswhite(string[0])) + { + if (i == 0 || !vim_iswhite(line[i - 1])) +! continue; /* missing shite space */ + while (vim_iswhite(string[0])) + ++string; + } + for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j) + ; + if (string[j] != NUL) +! continue; /* string doesn't match */ + +! /* When 'b' flag used, there must be white space or an +! * end-of-line after the string in the line. */ + if (vim_strchr(part_buf, COM_BLANK) != NULL + && !vim_iswhite(line[i + j]) && line[i + j] != NUL) + continue; + +! /* We have found a match, stop searching unless this is a middle +! * comment. The middle comment can be a substring of the end +! * comment in which case it's better to return the length of the +! * end comment and its flags. Thus we keep searching with middle +! * and end matches and use an end match if it matches better. */ +! if (vim_strchr(part_buf, COM_MIDDLE) != NULL) +! { +! if (middle_match_len == 0) +! { +! middle_match_len = j; +! saved_flags = prev_list; +! } +! continue; +! } +! if (middle_match_len != 0 && j > middle_match_len) +! /* Use this match instead of the middle match, since it's a +! * longer thus better match. */ +! middle_match_len = 0; +! +! if (middle_match_len == 0) +! i += j; + found_one = TRUE; + break; + } + +! if (middle_match_len != 0) +! { +! /* Use the previously found middle match after failing to find a +! * match with an end. */ +! if (!got_com && flags != NULL) +! *flags = saved_flags; +! i += middle_match_len; +! found_one = TRUE; +! } +! +! /* No match found, stop scanning. */ + if (!found_one) + break; + +! /* Include any trailing white space. */ + while (vim_iswhite(line[i])) + ++i; + +! /* If this comment doesn't nest, stop here. */ +! got_com = TRUE; + if (vim_strchr(part_buf, COM_NEST) == NULL) + break; + } ++ + return (got_com ? i : 0); + } + #endif +*** ../vim-7.3.179/src/testdir/test3.in 2011-05-10 11:56:26.000000000 +0200 +--- src/testdir/test3.in 2011-05-10 12:05:50.000000000 +0200 +*************** +*** 1373,1378 **** +--- 1373,1390 ---- + } + + STARTTEST ++ :set com=s1:/*,m:*,ex:*/ ++ ]]3jofoo(); ++ ENDTEST ++ ++ void func(void) ++ { ++ /* ++ * This is a comment. ++ */ ++ } ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/start of AUTO/,$wq! test.out + ENDTEST +*** ../vim-7.3.179/src/testdir/test3.ok 2011-05-10 11:56:26.000000000 +0200 +--- src/testdir/test3.ok 2011-05-10 12:05:50.000000000 +0200 +*************** +*** 1225,1227 **** +--- 1225,1236 ---- + << "c"; + } + ++ ++ void func(void) ++ { ++ /* ++ * This is a comment. ++ */ ++ foo(); ++ } ++ +*** ../vim-7.3.179/src/version.c 2011-05-10 11:56:26.000000000 +0200 +--- src/version.c 2011-05-10 13:37:28.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 180, + /**/ + +-- +"Thou shalt not follow the Null Pointer, for at its end Chaos and +Madness lie." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.181 b/source/ap/vim/patches/7.3.181 new file mode 100644 index 00000000..3151d445 --- /dev/null +++ b/source/ap/vim/patches/7.3.181 @@ -0,0 +1,171 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.181 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.181 +Problem: When repeating the insert of CTRL-V or a digraph the display may + not be updated correctly. +Solution: Only call edit_unputchar() after edit_putchar(). (Lech Lorens) +Files: src/edit.c + + +*** ../vim-7.3.180/src/edit.c 2010-11-10 17:11:29.000000000 +0100 +--- src/edit.c 2011-05-10 14:16:41.000000000 +0200 +*************** +*** 1553,1564 **** +--- 1553,1568 ---- + ins_ctrl_v() + { + int c; ++ int did_putchar = FALSE; + + /* may need to redraw when no more chars available now */ + ins_redraw(FALSE); + + if (redrawing() && !char_avail()) ++ { + edit_putchar('^', TRUE); ++ did_putchar = TRUE; ++ } + AppendToRedobuff((char_u *)CTRL_V_STR); /* CTRL-V */ + + #ifdef FEAT_CMDL_INFO +*************** +*** 1566,1573 **** + #endif + + c = get_literal(); +! edit_unputchar(); /* when line fits in 'columns' the '^' is at the start +! of the next line and will not be redrawn */ + #ifdef FEAT_CMDL_INFO + clear_showcmd(); + #endif +--- 1570,1579 ---- + #endif + + c = get_literal(); +! if (did_putchar) +! /* when the line fits in 'columns' the '^' is at the start of the next +! * line and will not removed by the redraw */ +! edit_unputchar(); + #ifdef FEAT_CMDL_INFO + clear_showcmd(); + #endif +*************** +*** 9637,9642 **** +--- 9643,9649 ---- + { + int c; + int cc; ++ int did_putchar = FALSE; + + pc_status = PC_STATUS_UNSET; + if (redrawing() && !char_avail()) +*************** +*** 9645,9650 **** +--- 9652,9658 ---- + ins_redraw(FALSE); + + edit_putchar('?', TRUE); ++ did_putchar = TRUE; + #ifdef FEAT_CMDL_INFO + add_to_showcmd_c(Ctrl_K); + #endif +*************** +*** 9661,9668 **** + c = plain_vgetc(); + --no_mapping; + --allow_keys; +! edit_unputchar(); /* when line fits in 'columns' the '?' is at the start +! of the next line and will not be redrawn */ + + if (IS_SPECIAL(c) || mod_mask) /* special key */ + { +--- 9669,9678 ---- + c = plain_vgetc(); + --no_mapping; + --allow_keys; +! if (did_putchar) +! /* when the line fits in 'columns' the '?' is at the start of the next +! * line and will not be removed by the redraw */ +! edit_unputchar(); + + if (IS_SPECIAL(c) || mod_mask) /* special key */ + { +*************** +*** 9674,9679 **** +--- 9684,9690 ---- + } + if (c != ESC) + { ++ did_putchar = FALSE; + if (redrawing() && !char_avail()) + { + /* may need to redraw when no more chars available now */ +*************** +*** 9681,9691 **** + + if (char2cells(c) == 1) + { +- /* first remove the '?', otherwise it's restored when typing +- * an ESC next */ +- edit_unputchar(); + ins_redraw(FALSE); + edit_putchar(c, TRUE); + } + #ifdef FEAT_CMDL_INFO + add_to_showcmd_c(c); +--- 9692,9700 ---- + + if (char2cells(c) == 1) + { + ins_redraw(FALSE); + edit_putchar(c, TRUE); ++ did_putchar = TRUE; + } + #ifdef FEAT_CMDL_INFO + add_to_showcmd_c(c); +*************** +*** 9696,9703 **** + cc = plain_vgetc(); + --no_mapping; + --allow_keys; +! edit_unputchar(); /* when line fits in 'columns' the '?' is at the +! start of the next line and will not be redrawn */ + if (cc != ESC) + { + AppendToRedobuff((char_u *)CTRL_V_STR); +--- 9705,9714 ---- + cc = plain_vgetc(); + --no_mapping; + --allow_keys; +! if (did_putchar) +! /* when the line fits in 'columns' the '?' is at the start of the +! * next line and will not be removed by a redraw */ +! edit_unputchar(); + if (cc != ESC) + { + AppendToRedobuff((char_u *)CTRL_V_STR); +*** ../vim-7.3.180/src/version.c 2011-05-10 13:38:23.000000000 +0200 +--- src/version.c 2011-05-10 14:20:40.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 181, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +74. Your most erotic dreams are about cybersex + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.182 b/source/ap/vim/patches/7.3.182 new file mode 100644 index 00000000..509b68b5 --- /dev/null +++ b/source/ap/vim/patches/7.3.182 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.182 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.182 (after 7.3.180) +Problem: Compiler warning for uninitialized variable. +Solution: Add dummy initializer. +Files: src/misc1.c + + +*** ../vim-7.3.181/src/misc1.c 2011-05-10 13:38:23.000000000 +0200 +--- src/misc1.c 2011-05-10 14:37:39.000000000 +0200 +*************** +*** 1563,1569 **** + char_u *list; + int middle_match_len = 0; + char_u *prev_list; +! char_u *saved_flags; + + i = 0; + while (vim_iswhite(line[i])) /* leading white space is ignored */ +--- 1563,1569 ---- + char_u *list; + int middle_match_len = 0; + char_u *prev_list; +! char_u *saved_flags = NULL; + + i = 0; + while (vim_iswhite(line[i])) /* leading white space is ignored */ +*** ../vim-7.3.181/src/version.c 2011-05-10 14:22:10.000000000 +0200 +--- src/version.c 2011-05-10 14:38:39.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 182, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +75. You start wondering whether you could actually upgrade your brain + with a Pentium Pro microprocessor 80. The upgrade works just fine. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.183 b/source/ap/vim/patches/7.3.183 new file mode 100644 index 00000000..23178c0b --- /dev/null +++ b/source/ap/vim/patches/7.3.183 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.183 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.183 (after 7.3.174) +Problem: When Exuberant ctags binary is exuberant-ctags it's not found. +Solution: Add configure check for exuberant-ctags. +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.182/src/configure.in 2011-05-05 18:10:11.000000000 +0200 +--- src/configure.in 2011-05-10 15:39:38.000000000 +0200 +*************** +*** 3375,3384 **** + dnl -i+m to test for older Exuberant ctags + AC_MSG_CHECKING(how to create tags) + test -f tags && mv tags tags.save +! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then +! TAGPRG="exctags -I INIT+ --fields=+S" +! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then + TAGPRG="ctags -I INIT+ --fields=+S" + else + TAGPRG="ctags" + (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags" +--- 3375,3386 ---- + dnl -i+m to test for older Exuberant ctags + AC_MSG_CHECKING(how to create tags) + test -f tags && mv tags tags.save +! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then + TAGPRG="ctags -I INIT+ --fields=+S" ++ elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then ++ TAGPRG="exctags -I INIT+ --fields=+S" ++ elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then ++ TAGPRG="exuberant-ctags -I INIT+ --fields=+S" + else + TAGPRG="ctags" + (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags" +*** ../vim-7.3.182/src/auto/configure 2011-05-05 18:10:11.000000000 +0200 +--- src/auto/configure 2011-05-10 15:39:41.000000000 +0200 +*************** +*** 12028,12037 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5 + $as_echo_n "checking how to create tags... " >&6; } + test -f tags && mv tags tags.save +! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then +! TAGPRG="exctags -I INIT+ --fields=+S" +! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then + TAGPRG="ctags -I INIT+ --fields=+S" + else + TAGPRG="ctags" + (eval etags /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags" +--- 12028,12039 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5 + $as_echo_n "checking how to create tags... " >&6; } + test -f tags && mv tags tags.save +! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then + TAGPRG="ctags -I INIT+ --fields=+S" ++ elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then ++ TAGPRG="exctags -I INIT+ --fields=+S" ++ elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then ++ TAGPRG="exuberant-ctags -I INIT+ --fields=+S" + else + TAGPRG="ctags" + (eval etags /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags" +*** ../vim-7.3.182/src/version.c 2011-05-10 14:44:07.000000000 +0200 +--- src/version.c 2011-05-10 15:40:48.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 183, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +78. You find yourself dialing IP numbers on the phone. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.184 b/source/ap/vim/patches/7.3.184 new file mode 100644 index 00000000..3b0cfc69 --- /dev/null +++ b/source/ap/vim/patches/7.3.184 @@ -0,0 +1,86 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.184 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.184 +Problem: Static code analysis errors in riscOS. +Solution: Make buffer size bigger. (Dominique Pelle) +Files: src/gui_riscos.c + + +*** ../vim-7.3.183/src/gui_riscos.c 2010-08-15 21:57:28.000000000 +0200 +--- src/gui_riscos.c 2011-05-10 15:49:56.000000000 +0200 +*************** +*** 1756,1762 **** + + if (button & 0x444) + { +! int front_block[10]; + /* Dragging with Select - bring window to front first */ + front_block[0] = gui.window_handle; + swi(Wimp_GetWindowState, 0, front_block); +--- 1756,1762 ---- + + if (button & 0x444) + { +! int front_block[64]; + /* Dragging with Select - bring window to front first */ + front_block[0] = gui.window_handle; + swi(Wimp_GetWindowState, 0, front_block); +*************** +*** 1874,1880 **** + + if (ro_dragging == DRAG_RESIZE_WINDOW) + { +! /* Resizeing the main window. */ + block[2] = y; + block[3] = x; + ro_open_main(block); +--- 1874,1880 ---- + + if (ro_dragging == DRAG_RESIZE_WINDOW) + { +! /* Resizing the main window. */ + block[2] = y; + block[3] = x; + ro_open_main(block); +*************** +*** 2651,2657 **** + long_u length; + + block[0] = 48; /* Size of block. */ +! block[3] = 0; /* Orinial message. */ + block[4] = 0x10; /* Data request. */ + block[5] = gui.window_handle; + block[6] = RO_LOAD_CLIPBOARD; /* Internal handle. */ +--- 2651,2657 ---- + long_u length; + + block[0] = 48; /* Size of block. */ +! block[3] = 0; /* Original message. */ + block[4] = 0x10; /* Data request. */ + block[5] = gui.window_handle; + block[6] = RO_LOAD_CLIPBOARD; /* Internal handle. */ +*** ../vim-7.3.183/src/version.c 2011-05-10 15:41:59.000000000 +0200 +--- src/version.c 2011-05-10 15:51:29.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 184, + /**/ + +-- +If bankers can count, how come they have eight windows and +only four tellers? + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.185 b/source/ap/vim/patches/7.3.185 new file mode 100644 index 00000000..7b3ed189 --- /dev/null +++ b/source/ap/vim/patches/7.3.185 @@ -0,0 +1,77 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.185 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.185 +Problem: ":windo g/pattern/q" closes windows and reports "N more lines". + (Tim Chase) +Solution: Remember what buffer ":global" started in. (Jean-Rene David) +Files: src/ex_cmds.c + + +*** ../vim-7.3.184/src/ex_cmds.c 2011-04-11 21:35:03.000000000 +0200 +--- src/ex_cmds.c 2011-05-10 15:58:48.000000000 +0200 +*************** +*** 5365,5372 **** + global_exe(cmd) + char_u *cmd; + { +! linenr_T old_lcount; /* b_ml.ml_line_count before the command */ +! linenr_T lnum; /* line number according to old situation */ + + /* + * Set current position only once for a global command. +--- 5365,5373 ---- + global_exe(cmd) + char_u *cmd; + { +! linenr_T old_lcount; /* b_ml.ml_line_count before the command */ +! buf_T *old_buf = curbuf; /* remember what buffer we started in */ +! linenr_T lnum; /* line number according to old situation */ + + /* + * Set current position only once for a global command. +*************** +*** 5410,5417 **** + msg_didout = FALSE; + + /* If substitutes done, report number of substitutes, otherwise report +! * number of extra or deleted lines. */ +! if (!do_sub_msg(FALSE)) + msgmore(curbuf->b_ml.ml_line_count - old_lcount); + } + +--- 5411,5420 ---- + msg_didout = FALSE; + + /* If substitutes done, report number of substitutes, otherwise report +! * number of extra or deleted lines. +! * Don't report extra or deleted lines in the edge case where the buffer +! * we are in after execution is different from the buffer we started in. */ +! if (!do_sub_msg(FALSE) && curbuf == old_buf) + msgmore(curbuf->b_ml.ml_line_count - old_lcount); + } + +*** ../vim-7.3.184/src/version.c 2011-05-10 15:52:10.000000000 +0200 +--- src/version.c 2011-05-10 15:57:40.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 185, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +79. All of your most erotic dreams have a scrollbar at the right side. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.186 b/source/ap/vim/patches/7.3.186 new file mode 100644 index 00000000..d834c370 --- /dev/null +++ b/source/ap/vim/patches/7.3.186 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.186 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.186 +Problem: When 'clipboard' contains "unnamed" or "unnamedplus" the value of + v:register is wrong for operators without a specific register. +Solution: Adjust the register according to 'clipboard'. (Ingo Karkat) +Files: src/normal.c + + +*** ../vim-7.3.185/src/normal.c 2010-12-17 18:52:56.000000000 +0100 +--- src/normal.c 2011-05-10 16:07:49.000000000 +0200 +*************** +*** 1202,1208 **** + { + clearop(oap); + #ifdef FEAT_EVAL +! set_reg_var('"'); + #endif + } + +--- 1202,1214 ---- + { + clearop(oap); + #ifdef FEAT_EVAL +! { +! int regname = 0; +! /* Adjust the register according to 'clipboard', so that when +! * "unnamed" is present it becomes '*' or '+' instead of '"'. */ +! adjust_clip_reg(®name); +! set_reg_var(regname); +! } + #endif + } + +*** ../vim-7.3.185/src/version.c 2011-05-10 16:00:43.000000000 +0200 +--- src/version.c 2011-05-10 16:10:10.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 186, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +80. At parties, you introduce your spouse as your "service provider." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.187 b/source/ap/vim/patches/7.3.187 new file mode 100644 index 00000000..7bf82ce4 --- /dev/null +++ b/source/ap/vim/patches/7.3.187 @@ -0,0 +1,6621 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.187 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.187 +Problem: The RISC OS port has obvious errors and is not being maintained. +Solution: Remove the RISC OS files and code. +Files: src/ascii.h, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/fileio.c, src/globals.h, src/gui.c, src/gui.h, + src/main.c, src/memfile.c, src/memline.c, src/misc1.c, + src/proto.h, src/quickfix.c, src/search.c, src/structs.h, + src/term.c, src/termlib.c, src/version.c, src/vim.h, + src/gui_riscos.h, src/os_riscos.h, src/gui_riscos.c, + src/os_riscos.c, runtime/doc/os_risc.txt + + +*** ../vim-7.3.186/src/ascii.h 2010-08-15 21:57:25.000000000 +0200 +--- src/ascii.h 2011-05-10 16:22:08.000000000 +0200 +*************** +*** 183,193 **** + # define PATHSEP psepc + # define PATHSEPSTR pseps + #else +! # ifdef RISCOS +! # define PATHSEP '.' +! # define PATHSEPSTR "." +! # else +! # define PATHSEP '/' +! # define PATHSEPSTR "/" +! # endif + #endif +--- 183,188 ---- + # define PATHSEP psepc + # define PATHSEPSTR pseps + #else +! # define PATHSEP '/' +! # define PATHSEPSTR "/" + #endif +*** ../vim-7.3.186/src/eval.c 2011-04-21 14:27:21.000000000 +0200 +--- src/eval.c 2011-05-10 16:22:21.000000000 +0200 +*************** +*** 11818,11826 **** + #ifdef __QNX__ + "qnx", + #endif +- #ifdef RISCOS +- "riscos", +- #endif + #ifdef UNIX + "unix", + #endif +--- 11818,11823 ---- +*** ../vim-7.3.186/src/ex_cmds.c 2011-05-10 16:00:43.000000000 +0200 +--- src/ex_cmds.c 2011-05-10 16:23:22.000000000 +0200 +*************** +*** 899,907 **** + * Handle the ":!cmd" command. Also for ":r !cmd" and ":w !cmd" + * Bangs in the argument are replaced with the previously entered command. + * Remember the argument. +- * +- * RISCOS: Bangs only replaced when followed by a space, since many +- * pathnames contain one. + */ + void + do_bang(addr_count, eap, forceit, do_in, do_out) +--- 899,904 ---- +*************** +*** 980,990 **** + trailarg = NULL; + while (*p) + { +! if (*p == '!' +! #ifdef RISCOS +! && (p[1] == ' ' || p[1] == NUL) +! #endif +! ) + { + if (p > newcmd && p[-1] == '\\') + STRMOVE(p - 1, p); +--- 977,983 ---- + trailarg = NULL; + while (*p) + { +! if (*p == '!') + { + if (p > newcmd && p[-1] == '\\') + STRMOVE(p - 1, p); +*************** +*** 1578,1591 **** + if (p != NULL) + *p = NUL; + } +- # ifdef RISCOS +- STRCAT(buf, " { < "); /* Use RISC OS notation for input. */ +- STRCAT(buf, itmp); +- STRCAT(buf, " } "); +- # else + STRCAT(buf, " <"); /* " < " causes problems on Amiga */ + STRCAT(buf, itmp); +- # endif + if (*p_shq == NUL) + { + p = vim_strchr(cmd, '|'); +--- 1571,1578 ---- +*************** +*** 1634,1649 **** + else + vim_snprintf((char *)end, (size_t)(buflen - (end - buf)), + #ifdef FEAT_QUICKFIX +- # ifndef RISCOS +- opt != p_sp ? " %s%s" : +- # endif + " %s %s", + #else +- # ifndef RISCOS + " %s%s", /* " > %s" causes problems on Amiga */ +- # else +- " %s %s", /* But is needed for 'shellpipe' and RISC OS */ +- # endif + #endif + (char *)opt, (char *)fname); + } +--- 1621,1629 ---- +*************** +*** 1844,1854 **** + #ifdef VMS + (char_u *)"-tmp", + #else +- # ifdef RISCOS +- (char_u *)"/tmp", +- # else + (char_u *)".tmp", +- # endif + #endif + FALSE); + if (tempname == NULL) /* out of memory */ +--- 1824,1830 ---- +*** ../vim-7.3.186/src/ex_cmds2.c 2011-04-11 21:35:03.000000000 +0200 +--- src/ex_cmds2.c 2011-05-10 16:23:47.000000000 +0200 +*************** +*** 500,517 **** + /* Expand the file name in the same way as do_source(). This means + * doing it twice, so that $DIR/file gets expanded when $DIR is + * "~/dir". */ +- #ifdef RISCOS +- q = mch_munge_fname(p); +- #else + q = expand_env_save(p); +- #endif + if (q == NULL) + return FAIL; +- #ifdef RISCOS +- p = mch_munge_fname(q); +- #else + p = expand_env_save(q); +- #endif + vim_free(q); + if (p == NULL) + return FAIL; +--- 500,509 ---- +*************** +*** 2940,2950 **** + proftime_T wait_start; + #endif + +- #ifdef RISCOS +- p = mch_munge_fname(fname); +- #else + p = expand_env_save(fname); +- #endif + if (p == NULL) + return retval; + fname_exp = fix_fname(p); +--- 2932,2938 ---- +*** ../vim-7.3.186/src/ex_docmd.c 2011-05-05 14:26:37.000000000 +0200 +--- src/ex_docmd.c 2011-05-10 16:24:18.000000000 +0200 +*************** +*** 9702,9715 **** + valid = 0; /* Must have ":p:h" to be valid */ + } + else +- #ifdef RISCOS +- /* Always use the full path for RISC OS if possible. */ +- result = curbuf->b_ffname; +- if (result == NULL) +- result = curbuf->b_fname; +- #else + result = curbuf->b_fname; +- #endif + break; + + case SPEC_HASH: /* '#' or "#99": alternate file */ +--- 9702,9708 ---- +*************** +*** 9854,9864 **** + if (src[*usedlen] == '<') /* remove the file name extension */ + { + ++*usedlen; +- #ifdef RISCOS +- if ((s = vim_strrchr(result, '/')) != NULL && s >= gettail(result)) +- #else + if ((s = vim_strrchr(result, '.')) != NULL && s >= gettail(result)) +- #endif + resultlen = (int)(s - result); + } + #ifdef FEAT_MODIFY_FNAME +--- 9847,9853 ---- +*************** +*** 10875,10882 **** + else if (vim_ispathsep(*p)) + { + *s++ = '='; +! #if defined(BACKSLASH_IN_FILENAME) || defined(AMIGA) || defined(RISCOS) \ +! || defined(VMS) + if (*p == ':') + *s++ = '-'; + else +--- 10864,10870 ---- + else if (vim_ispathsep(*p)) + { + *s++ = '='; +! #if defined(BACKSLASH_IN_FILENAME) || defined(AMIGA) || defined(VMS) + if (*p == ':') + *s++ = '-'; + else +*** ../vim-7.3.186/src/fileio.c 2011-05-05 16:41:19.000000000 +0200 +--- src/fileio.c 2011-05-10 16:26:06.000000000 +0200 +*************** +*** 504,521 **** + + if (newfile && !read_stdin && !read_buffer) + { +! /* Remember time of file. +! * For RISCOS, also remember the filetype. +! */ + if (mch_stat((char *)fname, &st) >= 0) + { + buf_store_time(curbuf, &st, fname); + curbuf->b_mtime_read = curbuf->b_mtime; +- +- #if defined(RISCOS) && defined(FEAT_OSFILETYPE) +- /* Read the filetype into the buffer local filetype option. */ +- mch_read_filetype(fname); +- #endif + #ifdef UNIX + /* + * Use the protection bits of the original file for the swap file. +--- 504,514 ---- + + if (newfile && !read_stdin && !read_buffer) + { +! /* Remember time of file. */ + if (mch_stat((char *)fname, &st) >= 0) + { + buf_store_time(curbuf, &st, fname); + curbuf->b_mtime_read = curbuf->b_mtime; + #ifdef UNIX + /* + * Use the protection bits of the original file for the swap file. +*************** +*** 557,563 **** + + /* + * for UNIX: check readonly with perm and mch_access() +- * for RISCOS: same as Unix, otherwise file gets re-datestamped! + * for MSDOS and Amiga: check readonly by trying to open the file for writing + */ + file_readonly = FALSE; +--- 550,555 ---- +*************** +*** 3804,3816 **** + + /* make sure we have a valid backup extension to use */ + if (*p_bex == NUL) +- { +- #ifdef RISCOS +- backup_ext = (char_u *)"/bak"; +- #else + backup_ext = (char_u *)".bak"; +- #endif +- } + else + backup_ext = p_bex; + +--- 3796,3802 ---- +*************** +*** 4724,4734 **** + #endif + if (perm >= 0) /* set perm. of new file same as old file */ + (void)mch_setperm(wfname, perm); +- #ifdef RISCOS +- if (!append && !filtering) +- /* Set the filetype after writing the file. */ +- mch_set_filetype(wfname, buf->b_p_oft); +- #endif + #ifdef HAVE_ACL + /* Probably need to set the ACL before changing the user (can't set the + * ACL on a file the user doesn't own). */ +--- 4710,4715 ---- +*************** +*** 6262,6280 **** + */ + for (ptr = retval + fnamelen; ptr > retval; mb_ptr_back(retval, ptr)) + { +- #ifndef RISCOS + if (*ext == '.' +! # ifdef USE_LONG_FNAME + && (!USE_LONG_FNAME || shortname) +! # else +! # ifndef SHORT_FNAME + && shortname +- # endif + # endif + ) + if (*ptr == '.') /* replace '.' by '_' */ + *ptr = '_'; +- #endif + if (vim_ispathsep(*ptr)) + { + ++ptr; +--- 6243,6259 ---- + */ + for (ptr = retval + fnamelen; ptr > retval; mb_ptr_back(retval, ptr)) + { + if (*ext == '.' +! #ifdef USE_LONG_FNAME + && (!USE_LONG_FNAME || shortname) +! #else +! # ifndef SHORT_FNAME + && shortname + # endif ++ #endif + ) + if (*ptr == '.') /* replace '.' by '_' */ + *ptr = '_'; + if (vim_ispathsep(*ptr)) + { + ++ptr; +*************** +*** 6309,6331 **** + if (fname == NULL || *fname == NUL + || vim_ispathsep(fname[STRLEN(fname) - 1])) + { +- #ifdef RISCOS +- if (*ext == '/') +- #else + if (*ext == '.') +- #endif + *s++ = '_'; + } + /* + * If the extension starts with '.', truncate the base name at 8 + * characters + */ +- #ifdef RISCOS +- /* We normally use '/', but swap files are '_' */ +- else if (*ext == '/' || *ext == '_') +- #else + else if (*ext == '.') +- #endif + { + if ((size_t)(s - ptr) > (size_t)8) + { +--- 6288,6301 ---- +*************** +*** 6337,6349 **** + * If the extension doesn't start with '.', and the file name + * doesn't have an extension yet, append a '.' + */ +- #ifdef RISCOS +- else if ((e = vim_strchr(ptr, '/')) == NULL) +- *s++ = '/'; +- #else + else if ((e = vim_strchr(ptr, '.')) == NULL) + *s++ = '.'; +- #endif + /* + * If the extension doesn't start with '.', and there already is an + * extension, it may need to be truncated +--- 6307,6314 ---- +*************** +*** 6371,6393 **** + /* + * Prepend the dot. + */ +! if (prepend_dot && !shortname && *(e = gettail(retval)) != +! #ifdef RISCOS +! '/' +! #else +! '.' +! #endif + #ifdef USE_LONG_FNAME + && USE_LONG_FNAME + #endif + ) + { + STRMOVE(e + 1, e); +- #ifdef RISCOS +- *e = '/'; +- #else + *e = '.'; +- #endif + } + #endif + +--- 6336,6349 ---- + /* + * Prepend the dot. + */ +! if (prepend_dot && !shortname && *(e = gettail(retval)) != '.' + #ifdef USE_LONG_FNAME + && USE_LONG_FNAME + #endif + ) + { + STRMOVE(e + 1, e); + *e = '.'; + } + #endif + +*************** +*** 10205,10223 **** + ++p; + break; + case '.': +- #ifdef RISCOS +- if (allow_dirs != NULL) +- *allow_dirs = TRUE; +- /* FALLTHROUGH */ +- #endif + case '~': + reg_pat[i++] = '\\'; + reg_pat[i++] = *p; + break; + case '?': +- #ifdef RISCOS +- case '#': +- #endif + reg_pat[i++] = '.'; + break; + case '\\': +--- 10161,10171 ---- +*** ../vim-7.3.186/src/globals.h 2011-05-05 14:26:37.000000000 +0200 +--- src/globals.h 2011-05-10 16:26:13.000000000 +0200 +*************** +*** 1513,1519 **** + EXTERN char_u e_sandbox[] INIT(= N_("E48: Not allowed in sandbox")); + #endif + EXTERN char_u e_secure[] INIT(= N_("E523: Not allowed here")); +! #if defined(AMIGA) || defined(MACOS) || defined(MSWIN) || defined(RISCOS) \ + || defined(UNIX) || defined(VMS) || defined(OS2) + EXTERN char_u e_screenmode[] INIT(= N_("E359: Screen mode setting not supported")); + #endif +--- 1513,1519 ---- + EXTERN char_u e_sandbox[] INIT(= N_("E48: Not allowed in sandbox")); + #endif + EXTERN char_u e_secure[] INIT(= N_("E523: Not allowed here")); +! #if defined(AMIGA) || defined(MACOS) || defined(MSWIN) \ + || defined(UNIX) || defined(VMS) || defined(OS2) + EXTERN char_u e_screenmode[] INIT(= N_("E359: Screen mode setting not supported")); + #endif +*** ../vim-7.3.186/src/gui.c 2011-01-17 20:08:03.000000000 +0100 +--- src/gui.c 2011-05-10 16:26:53.000000000 +0200 +*************** +*** 2156,2162 **** + + if (highlight_mask & (HL_INVERSE | HL_STANDOUT)) + { +! #if defined(AMIGA) || defined(RISCOS) + gui_mch_set_colors(bg_color, fg_color); + #else + gui_mch_set_fg_color(bg_color); +--- 2156,2162 ---- + + if (highlight_mask & (HL_INVERSE | HL_STANDOUT)) + { +! #if defined(AMIGA) + gui_mch_set_colors(bg_color, fg_color); + #else + gui_mch_set_fg_color(bg_color); +*************** +*** 2165,2171 **** + } + else + { +! #if defined(AMIGA) || defined(RISCOS) + gui_mch_set_colors(fg_color, bg_color); + #else + gui_mch_set_fg_color(fg_color); +--- 2165,2171 ---- + } + else + { +! #if defined(AMIGA) + gui_mch_set_colors(fg_color, bg_color); + #else + gui_mch_set_fg_color(fg_color); +*************** +*** 2193,2199 **** + if (back != 0 && ((draw_flags & DRAW_BOLD) || (highlight_mask & HL_ITALIC))) + return FAIL; + +! #if defined(RISCOS) || defined(FEAT_GUI_GTK) + /* If there's no italic font, then fake it. + * For GTK2, we don't need a different font for italic style. */ + if (hl_mask_todo & HL_ITALIC) +--- 2193,2199 ---- + if (back != 0 && ((draw_flags & DRAW_BOLD) || (highlight_mask & HL_ITALIC))) + return FAIL; + +! #if defined(FEAT_GUI_GTK) + /* If there's no italic font, then fake it. + * For GTK2, we don't need a different font for italic style. */ + if (hl_mask_todo & HL_ITALIC) +*************** +*** 2985,3010 **** + did_clip = TRUE; + } + /* Allow the left button to start the selection */ +- else if (button == +- # ifdef RISCOS +- /* Only start a drag on a drag event. Otherwise +- * we don't get a release event. */ +- MOUSE_DRAG +- # else +- MOUSE_LEFT +- # endif +- ) +- { +- clip_start_selection(X_2_COL(x), Y_2_ROW(y), repeated_click); +- did_clip = TRUE; +- } +- # ifdef RISCOS + else if (button == MOUSE_LEFT) + { +! clip_clear_selection(); + did_clip = TRUE; + } +- # endif + + /* Always allow pasting */ + if (button != MOUSE_MIDDLE) +--- 2985,2995 ---- + did_clip = TRUE; + } + /* Allow the left button to start the selection */ + else if (button == MOUSE_LEFT) + { +! clip_start_selection(X_2_COL(x), Y_2_ROW(y), repeated_click); + did_clip = TRUE; + } + + /* Always allow pasting */ + if (button != MOUSE_MIDDLE) +*** ../vim-7.3.186/src/gui.h 2010-08-15 21:57:25.000000000 +0200 +--- src/gui.h 2011-05-10 16:27:19.000000000 +0200 +*************** +*** 52,61 **** + # include <SegLoad.h>*/ + #endif + +- #ifdef RISCOS +- # include "gui_riscos.h" +- #endif +- + #ifdef FEAT_GUI_PHOTON + # include <Ph.h> + # include <Pt.h> +--- 52,57 ---- +*************** +*** 151,157 **** + #define DRAW_BOLD 0x02 /* draw bold text */ + #define DRAW_UNDERL 0x04 /* draw underline text */ + #define DRAW_UNDERC 0x08 /* draw undercurl text */ +! #if defined(RISCOS) || defined(FEAT_GUI_GTK) + # define DRAW_ITALIC 0x10 /* draw italic text */ + #endif + #define DRAW_CURSOR 0x20 /* drawing block cursor (win32) */ +--- 147,153 ---- + #define DRAW_BOLD 0x02 /* draw bold text */ + #define DRAW_UNDERL 0x04 /* draw underline text */ + #define DRAW_UNDERC 0x08 /* draw undercurl text */ +! #if defined(FEAT_GUI_GTK) + # define DRAW_ITALIC 0x10 /* draw italic text */ + #endif + #define DRAW_CURSOR 0x20 /* drawing block cursor (win32) */ +*************** +*** 219,227 **** + #ifdef FEAT_GUI_MAC + ControlHandle id; /* A handle to the scrollbar */ + #endif +- #ifdef RISCOS +- int id; /* Window handle of scrollbar window */ +- #endif + #ifdef FEAT_GUI_PHOTON + PtWidget_t *id; + #endif +--- 215,220 ---- +*************** +*** 450,463 **** + int visibility; /* Is window partially/fully obscured? */ + #endif + +- #ifdef RISCOS +- int window_handle; +- char_u *window_title; +- int window_title_size; +- int fg_colour; /* in 0xBBGGRR format */ +- int bg_colour; +- #endif +- + #ifdef FEAT_GUI_PHOTON + PtWidget_t *vimWindow; /* PtWindow */ + PtWidget_t *vimTextArea; /* PtRaw */ +--- 443,448 ---- +*** ../vim-7.3.186/src/main.c 2011-04-11 21:35:03.000000000 +0200 +--- src/main.c 2011-05-10 16:27:33.000000000 +0200 +*************** +*** 3276,3286 **** + main_msg(_("+reverse\t\tDon't use reverse video (also: +rv)")); + main_msg(_("-xrm <resource>\tSet the specified resource")); + #endif /* FEAT_GUI_X11 */ +- #if defined(FEAT_GUI) && defined(RISCOS) +- mch_msg(_("\nArguments recognised by gvim (RISC OS version):\n")); +- main_msg(_("--columns <number>\tInitial width of window in columns")); +- main_msg(_("--rows <number>\tInitial height of window in rows")); +- #endif + #ifdef FEAT_GUI_GTK + mch_msg(_("\nArguments recognised by gvim (GTK+ version):\n")); + main_msg(_("-font <font>\t\tUse <font> for normal text (also: -fn)")); +--- 3276,3281 ---- +*** ../vim-7.3.186/src/memfile.c 2011-03-22 18:10:34.000000000 +0100 +--- src/memfile.c 2011-05-10 16:27:38.000000000 +0200 +*************** +*** 1307,1313 **** + * fname cannot be NameBuff, because it must have been allocated. + */ + mf_set_ffname(mfp); +! #if defined(MSDOS) || defined(MSWIN) || defined(RISCOS) + /* + * A ":!cd e:xxx" may change the directory without us knowning, use the + * full pathname always. Careful: This frees fname! +--- 1307,1313 ---- + * fname cannot be NameBuff, because it must have been allocated. + */ + mf_set_ffname(mfp); +! #if defined(MSDOS) || defined(MSWIN) + /* + * A ":!cd e:xxx" may change the directory without us knowning, use the + * full pathname always. Careful: This frees fname! +*** ../vim-7.3.186/src/memline.c 2011-02-15 11:56:56.000000000 +0100 +--- src/memline.c 2011-05-10 16:28:40.000000000 +0200 +*************** +*** 748,754 **** + continue; + if (mf_open_file(mfp, fname) == OK) /* consumes fname! */ + { +! #if defined(MSDOS) || defined(MSWIN) || defined(RISCOS) + /* + * set full pathname for swap file now, because a ":!cd dir" may + * change directory without us knowing it. +--- 748,754 ---- + continue; + if (mf_open_file(mfp, fname) == OK) /* consumes fname! */ + { +! #if defined(MSDOS) || defined(MSWIN) + /* + * set full pathname for swap file now, because a ":!cd dir" may + * change directory without us knowing it. +*************** +*** 933,939 **** + b0p->b0_fname[0] = NUL; + else + { +! #if defined(MSDOS) || defined(MSWIN) || defined(AMIGA) || defined(RISCOS) + /* Systems that cannot translate "~user" back into a path: copy the + * file name unmodified. Do use slashes instead of backslashes for + * portability. */ +--- 933,939 ---- + b0p->b0_fname[0] = NUL; + else + { +! #if defined(MSDOS) || defined(MSWIN) || defined(AMIGA) + /* Systems that cannot translate "~user" back into a path: copy the + * file name unmodified. Do use slashes instead of backslashes for + * portability. */ +*************** +*** 1103,1109 **** + fname = (char_u *)""; + len = (int)STRLEN(fname); + if (len >= 4 && +! #if defined(VMS) || defined(RISCOS) + STRNICMP(fname + len - 4, "_s" , 2) + #else + STRNICMP(fname + len - 4, ".s" , 2) +--- 1103,1109 ---- + fname = (char_u *)""; + len = (int)STRLEN(fname); + if (len >= 4 && +! #if defined(VMS) + STRNICMP(fname + len - 4, "_s" , 2) + #else + STRNICMP(fname + len - 4, ".s" , 2) +*************** +*** 1773,1783 **** + #ifdef VMS + names[0] = vim_strsave((char_u *)"*_sw%"); + #else +- # ifdef RISCOS +- names[0] = vim_strsave((char_u *)"*_sw#"); +- # else + names[0] = vim_strsave((char_u *)"*.sw?"); +- # endif + #endif + #if defined(UNIX) || defined(WIN3264) + /* For Unix names starting with a dot are special. MS-Windows +--- 1773,1779 ---- +*************** +*** 1804,1814 **** + #ifdef VMS + names[0] = concat_fnames(dir_name, (char_u *)"*_sw%", TRUE); + #else +- # ifdef RISCOS +- names[0] = concat_fnames(dir_name, (char_u *)"*_sw#", TRUE); +- # else + names[0] = concat_fnames(dir_name, (char_u *)"*.sw?", TRUE); +- # endif + #endif + #if defined(UNIX) || defined(WIN3264) + /* For Unix names starting with a dot are special. MS-Windows +--- 1800,1806 ---- +*************** +*** 1877,1883 **** + char_u *swapname; + + swapname = modname(fname_res, +! #if defined(VMS) || defined(RISCOS) + (char_u *)"_swp", FALSE + #else + (char_u *)".swp", TRUE +--- 1869,1875 ---- + char_u *swapname; + + swapname = modname(fname_res, +! #if defined(VMS) + (char_u *)"_swp", FALSE + #else + (char_u *)".swp", TRUE +*************** +*** 2176,2186 **** + #ifdef VMS + names[num_names] = concat_fnames(path, (char_u *)"_sw%", FALSE); + #else +- # ifdef RISCOS +- names[num_names] = concat_fnames(path, (char_u *)"_sw#", FALSE); +- # else + names[num_names] = concat_fnames(path, (char_u *)".sw?", FALSE); +- # endif + #endif + if (names[num_names] == NULL) + goto end; +--- 2168,2174 ---- +*************** +*** 2207,2217 **** + #ifdef VMS + names[num_names] = modname(path, (char_u *)"_sw%", FALSE); + #else +- # ifdef RISCOS +- names[num_names] = modname(path, (char_u *)"_sw#", FALSE); +- # else + names[num_names] = modname(path, (char_u *)".sw?", FALSE); +- # endif + #endif + if (names[num_names] == NULL) + goto end; +--- 2195,2201 ---- +*************** +*** 3205,3211 **** + mf_free(mfp, hp); /* free the data block */ + buf->b_ml.ml_locked = NULL; + +! for (stack_idx = buf->b_ml.ml_stack_top - 1; stack_idx >= 0; --stack_idx) + { + buf->b_ml.ml_stack_top = 0; /* stack is invalid when failing */ + ip = &(buf->b_ml.ml_stack[stack_idx]); +--- 3189,3196 ---- + mf_free(mfp, hp); /* free the data block */ + buf->b_ml.ml_locked = NULL; + +! for (stack_idx = buf->b_ml.ml_stack_top - 1; stack_idx >= 0; +! --stack_idx) + { + buf->b_ml.ml_stack_top = 0; /* stack is invalid when failing */ + ip = &(buf->b_ml.ml_stack[stack_idx]); +*************** +*** 3956,3969 **** + #else + (buf->b_p_sn || buf->b_shortname), + #endif +- #ifdef RISCOS +- /* Avoid problems if fname has special chars, eg <Wimp$Scrap> */ +- ffname, +- #else + fname_res, +- #endif + (char_u *) +! #if defined(VMS) || defined(RISCOS) + "_swp", + #else + ".swp", +--- 3941,3949 ---- + #else + (buf->b_p_sn || buf->b_shortname), + #endif + fname_res, + (char_u *) +! #if defined(VMS) + "_swp", + #else + ".swp", +*************** +*** 4427,4440 **** + } + close(fd); + } +- #ifdef RISCOS +- else +- /* Can't open swap file, though it does exist. +- * Assume that the user is editing two files with +- * the same name in different directories. No error. +- */ +- differ = TRUE; +- #endif + + /* give the ATTENTION message when there is an old swap file + * for the current file, and the buffer was not recovered. */ +--- 4407,4412 ---- +*** ../vim-7.3.186/src/misc1.c 2011-05-10 14:44:07.000000000 +0200 +--- src/misc1.c 2011-05-10 16:29:29.000000000 +0200 +*************** +*** 4589,4613 **** + vim_ispathsep(c) + int c; + { +! #ifdef RISCOS +! return (c == '.' || c == ':'); +! #else +! # ifdef UNIX + return (c == '/'); /* UNIX has ':' inside file names */ +! # else +! # ifdef BACKSLASH_IN_FILENAME + return (c == ':' || c == '/' || c == '\\'); +! # else +! # ifdef VMS + /* server"user passwd"::device:[full.path.name]fname.extension;version" */ + return (c == ':' || c == '[' || c == ']' || c == '/' + || c == '<' || c == '>' || c == '"' ); +! # else /* Amiga */ + return (c == ':' || c == '/'); +! # endif /* VMS */ +! # endif + # endif +! #endif /* RISC OS */ + } + + #if defined(FEAT_SEARCHPATH) || defined(PROTO) +--- 4589,4609 ---- + vim_ispathsep(c) + int c; + { +! #ifdef UNIX + return (c == '/'); /* UNIX has ':' inside file names */ +! #else +! # ifdef BACKSLASH_IN_FILENAME + return (c == ':' || c == '/' || c == '\\'); +! # else +! # ifdef VMS + /* server"user passwd"::device:[full.path.name]fname.extension;version" */ + return (c == ':' || c == '[' || c == ']' || c == '/' + || c == '<' || c == '>' || c == '"' ); +! # else + return (c == ':' || c == '/'); +! # endif /* VMS */ + # endif +! #endif + } + + #if defined(FEAT_SEARCHPATH) || defined(PROTO) +*** ../vim-7.3.186/src/proto.h 2010-08-15 21:57:29.000000000 +0200 +--- src/proto.h 2011-05-10 16:29:45.000000000 +0200 +*************** +*** 62,70 **** + # ifdef __BEOS__ + # include "os_beos.pro" + # endif +- # ifdef RISCOS +- # include "os_riscos.pro" +- # endif + # ifdef __QNX__ + # include "os_qnx.pro" + # endif +--- 62,67 ---- +*************** +*** 245,253 **** + # ifdef FEAT_GUI_X11 + # include "gui_x11.pro" + # endif +- # ifdef RISCOS +- # include "gui_riscos.pro" +- # endif + # ifdef FEAT_GUI_PHOTON + # include "gui_photon.pro" + # endif +--- 242,247 ---- +*** ../vim-7.3.186/src/quickfix.c 2011-05-05 17:14:07.000000000 +0200 +--- src/quickfix.c 2011-05-10 16:30:18.000000000 +0200 +*************** +*** 1182,1202 **** + if (fname == NULL || *fname == NUL) /* no file name */ + return 0; + { +- #ifdef RISCOS +- /* Name is reported as `main.c', but file is `c.main' */ +- return ro_buflist_add(fname); +- #else + char_u *ptr; + int fnum; + +! # ifdef VMS + vms_remove_version(fname); +! # endif +! # ifdef BACKSLASH_IN_FILENAME + if (directory != NULL) + slash_adjust(directory); + slash_adjust(fname); +! # endif + if (directory != NULL && !vim_isAbsName(fname) + && (ptr = concat_fnames(directory, fname, TRUE)) != NULL) + { +--- 1182,1198 ---- + if (fname == NULL || *fname == NUL) /* no file name */ + return 0; + { + char_u *ptr; + int fnum; + +! #ifdef VMS + vms_remove_version(fname); +! #endif +! #ifdef BACKSLASH_IN_FILENAME + if (directory != NULL) + slash_adjust(directory); + slash_adjust(fname); +! #endif + if (directory != NULL && !vim_isAbsName(fname) + && (ptr = concat_fnames(directory, fname, TRUE)) != NULL) + { +*************** +*** 1221,1227 **** + return fnum; + } + return buflist_add(fname, 0); +- #endif + } + } + +--- 1217,1222 ---- +*** ../vim-7.3.186/src/search.c 2011-02-25 18:38:29.000000000 +0100 +--- src/search.c 2011-05-10 16:30:38.000000000 +0200 +*************** +*** 4581,4589 **** + char_u *already = NULL; + char_u *startp = NULL; + char_u *inc_opt = NULL; +- #ifdef RISCOS +- int previous_munging = __riscosify_control; +- #endif + #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) + win_T *curwin_save = NULL; + #endif +--- 4581,4586 ---- +*************** +*** 4596,4606 **** + if (file_line == NULL) + return; + +- #ifdef RISCOS +- /* UnixLib knows best how to munge c file names - turn munging back on. */ +- int __riscosify_control = 0; +- #endif +- + if (type != CHECK_PATH && type != FIND_DEFINE + #ifdef FEAT_INS_EXPAND + /* when CONT_SOL is set compare "ptr" with the beginning of the line +--- 4593,4598 ---- +*************** +*** 5228,5238 **** + vim_free(regmatch.regprog); + vim_free(incl_regmatch.regprog); + vim_free(def_regmatch.regprog); +- +- #ifdef RISCOS +- /* Restore previous file munging state. */ +- __riscosify_control = previous_munging; +- #endif + } + + static void +--- 5220,5225 ---- +*** ../vim-7.3.186/src/structs.h 2011-03-22 18:10:34.000000000 +0100 +--- src/structs.h 2011-05-10 16:30:49.000000000 +0200 +*************** +*** 2366,2376 **** + MenuHandle menu_handle; + MenuHandle submenu_handle; + #endif +- #ifdef RISCOS +- int *id; /* Not used, but gui.c needs it */ +- int greyed_out; /* Flag */ +- int hidden; +- #endif + #ifdef FEAT_GUI_PHOTON + PtWidget_t *id; + PtWidget_t *submenu_id; +--- 2366,2371 ---- +*** ../vim-7.3.186/src/term.c 2010-12-30 14:47:32.000000000 +0100 +--- src/term.c 2011-05-10 16:31:41.000000000 +0200 +*************** +*** 52,58 **** + + /* + * Here are the builtin termcap entries. They are not stored as complete +! * Tcarr structures, as such a structure is too big. + * + * The entries are compact, therefore they normally are included even when + * HAVE_TGETENT is defined. When HAVE_TGETENT is defined, the builtin entries +--- 52,58 ---- + + /* + * Here are the builtin termcap entries. They are not stored as complete +! * structures with all entries, as such a structure is too big. + * + * The entries are compact, therefore they normally are included even when + * HAVE_TGETENT is defined. When HAVE_TGETENT is defined, the builtin entries +*************** +*** 199,269 **** + #endif + + #ifndef NO_BUILTIN_TCAPS +- # if defined(RISCOS) || defined(ALL_BUILTIN_TCAPS) +- /* +- * Default for the Acorn. +- */ +- {(int)KS_NAME, "riscos"}, +- {(int)KS_CL, "\014"}, /* Cls and Home Cursor */ +- {(int)KS_CM, "\001%d\001%d\002"}, /* Position cursor */ +- +- {(int)KS_CCO, "16"}, /* Allow 16 colors */ +- +- {(int)KS_CAF, "\001%d\021"}, /* Set foreground colour */ +- {(int)KS_CAB, "\001%d\022"}, /* Set background colour */ +- +- +- {(int)KS_ME, "\004"}, /* Normal mode */ +- {(int)KS_MR, "\005"}, /* Reverse */ +- +- {(int)KS_VI, "\016"}, /* Cursor invisible */ +- {(int)KS_VE, "\017"}, /* Cursor visible */ +- {(int)KS_VS, "\020"}, /* Cursor very visible */ +- +- {(int)KS_CS, "\001%d\001%d\003"}, /* Set scroll region */ +- {(int)KS_SR, "\023"}, /* Scroll text down */ +- {K_UP, "\217"}, +- {K_DOWN, "\216"}, +- {K_LEFT, "\214"}, +- {K_RIGHT, "\215"}, +- {K_S_UP, "\237"}, +- {K_S_DOWN, "\236"}, +- {K_S_LEFT, "\234"}, +- {K_S_RIGHT, "\235"}, +- +- {K_F1, "\201"}, +- {K_F2, "\202"}, +- {K_F3, "\203"}, +- {K_F4, "\204"}, +- {K_F5, "\205"}, +- {K_F6, "\206"}, +- {K_F7, "\207"}, +- {K_F8, "\210"}, +- {K_F9, "\211"}, +- {K_F10, "\312"}, +- {K_F11, "\313"}, +- {K_F12, "\314"}, +- {K_S_F1, "\221"}, +- {K_S_F2, "\222"}, +- {K_S_F3, "\223"}, +- {K_S_F4, "\224"}, +- {K_S_F5, "\225"}, +- {K_S_F6, "\226"}, +- {K_S_F7, "\227"}, +- {K_S_F8, "\230"}, +- {K_S_F9, "\231"}, +- {K_S_F10, "\332"}, +- {K_S_F11, "\333"}, +- {K_S_F12, "\334"}, +- {K_BS, "\010"}, +- {K_INS, "\315"}, +- {K_DEL, "\177"}, +- {K_HOME, "\036"}, +- {K_END, "\213"}, +- {K_PAGEUP, "\237"}, +- {K_PAGEDOWN, "\236"}, +- # endif /* Acorn terminal */ +- + + # if defined(AMIGA) || defined(ALL_BUILTIN_TCAPS) + /* +--- 199,204 ---- +*************** +*** 1399,1408 **** + /* + * DEFAULT_TERM is used, when no terminal is specified with -T option or $TERM. + */ +- #ifdef RISCOS +- # define DEFAULT_TERM (char_u *)"riscos" +- #endif +- + #ifdef AMIGA + # define DEFAULT_TERM (char_u *)"amiga" + #endif +--- 1334,1339 ---- +*** ../vim-7.3.186/src/termlib.c 2010-08-15 21:57:30.000000000 +0200 +--- src/termlib.c 2011-05-10 16:31:58.000000000 +0200 +*************** +*** 13,19 **** + #include "vim.h" + #include "termlib.pro" + +! #if !defined(AMIGA) && !defined(VMS) && !defined(MACOS) && !defined(RISCOS) + # include <sgtty.h> + #endif + +--- 13,19 ---- + #include "vim.h" + #include "termlib.pro" + +! #if !defined(AMIGA) && !defined(VMS) && !defined(MACOS) + # include <sgtty.h> + #endif + +*** ../vim-7.3.186/src/version.c 2011-05-10 16:12:40.000000000 +0200 +--- src/version.c 2011-05-10 16:37:20.000000000 +0200 +*************** +*** 1205,1213 **** + # endif + #endif + +- #ifdef RISCOS +- MSG_PUTS(_("\nRISC OS version")); +- #endif + #ifdef VMS + MSG_PUTS(_("\nOpenVMS version")); + # ifdef HAVE_PATHDEF +--- 1207,1212 ---- +*** ../vim-7.3.186/src/vim.h 2011-05-05 16:41:19.000000000 +0200 +--- src/vim.h 2011-05-10 16:32:40.000000000 +0200 +*************** +*** 184,192 **** + # define SIZEOF_INT 2 + # endif + #endif +- #ifdef RISCOS +- # define SIZEOF_INT 4 +- #endif + + + #include "feature.h" /* #defines for optionals and features */ +--- 184,189 ---- +*************** +*** 340,349 **** + # include "os_mac.h" + #endif + +- #ifdef RISCOS +- # include "os_riscos.h" +- #endif +- + #ifdef __QNX__ + # include "os_qnx.h" + #endif +--- 337,342 ---- +*** ../vim-7.3.186/src/gui_riscos.h 2010-08-15 21:57:28.000000000 +0200 +--- src/gui_riscos.h 1970-01-01 01:00:00.000000000 +0100 +*************** +*** 1,32 **** +- /* vi:set ts=8 sts=4 sw=4: +- * +- * VIM - Vi IMproved by Bram Moolenaar +- * +- * Do ":help uganda" in Vim to read copying and usage conditions. +- * Do ":help credits" in Vim to see a list of people who contributed. +- */ +- +- #define FEAT_BROWSE +- +- #define TASK 0x4b534154 +- +- /* Nested wimp flags: */ +- #define CHILD_FIX_TO_WORKAREA 0 +- #define CHILD_FIX_TO_LEFT 1 +- #define CHILD_FIX_TO_BOTTOM 1 +- #define CHILD_FIX_TO_RIGHT 2 +- #define CHILD_FIX_TO_TOP 2 +- +- #define CHILD_SELF_SCROLL 0 +- #define CHILD_PARENT_SCROLL 1 +- +- #define CHILD_LEFT 16 +- #define CHILD_BOTTOM 18 +- #define CHILD_RIGHT 20 +- #define CHILD_TOP 22 +- #define CHILD_SCROLL_X 24 +- #define CHILD_SCROLL_Y 26 +- +- int wimp_poll(int mask, int *block); +- int wimp_poll_idle(int mask, int *block, int end_time); +- void ro_open_main(int *block); +--- 0 ---- +*** ../vim-7.3.186/src/os_riscos.h 2010-08-15 21:57:30.000000000 +0200 +--- src/os_riscos.h 1970-01-01 01:00:00.000000000 +0100 +*************** +*** 1,166 **** +- /* vi:set ts=8 sts=4 sw=4: +- * +- * VIM - Vi IMproved by Bram Moolenaar +- * +- * Do ":help uganda" in Vim to read copying and usage conditions. +- * Do ":help credits" in Vim to see a list of people who contributed. +- */ +- +- #include <sys/types.h> +- #include <sys/stat.h> +- #include <sys/ioctl.h> +- #include <termios.h> +- #include <stdlib.h> +- #include <unixlib/local.h> +- #include <errno.h> +- #include <fcntl.h> +- +- #define CASE_INSENSITIVE_FILENAME +- #define FEAT_MODIFY_FNAME +- #define FEAT_OSFILETYPE +- #define DFLT_OFT "Text" +- #define USE_TERM_CONSOLE +- #define HAVE_AVAIL_MEM +- +- /* Longer filenames now accessible to all */ +- #ifndef BASENAMELEN +- # define BASENAMELEN 64 /* Same length as unzip */ +- #endif +- +- #ifndef TEMNAME +- # define TEMPNAME "<Wimp$ScrapDir>.v?XXXXXX" +- # define TEMPNAMELEN 25 +- #endif +- +- #ifndef DFLT_HELPFILE +- # define DFLT_HELPFILE "Vim:doc.help" +- #endif +- +- #ifndef DFLT_BDIR +- # define DFLT_BDIR ".,<Wimp$ScrapDir>." /* default for 'backupdir' */ +- #endif +- +- /* Paths to try putting swap file in. */ +- #ifndef DFLT_DIR +- # define DFLT_DIR "<Wimp$ScrapDir>.,." /* default for 'directory' */ +- #endif +- +- #ifndef DFLT_VDIR +- # define DFLT_VDIR "Choices:Vim.view" /* default for 'viewdir' */ +- #endif +- +- #ifndef TERMCAPFILE +- # define TERMCAPFILE "Vim:TermCap" +- #endif +- #define HAVE_TGETENT +- +- #ifndef SYNTAX_FNAME +- # define SYNTAX_FNAME "Vim:Syntax.%s" +- #endif +- +- #ifndef EVIM_FILE +- # define EVIM_FILE "Vim:Evim" +- #endif +- +- #define FEAT_VIMINFO +- +- #ifndef VIMINFO_FILE +- # define VIMINFO_FILE "<Choices$Write>.Vim.VimInfo" +- #endif +- #ifndef VIMINFO_FILE2 +- # define VIMINFO_FILE2 "Choices:Vim.VimInfo" +- #endif +- +- #ifndef VIMRC_FILE +- # define VIMRC_FILE "/vimrc" +- #endif +- #ifndef EXRC_FILE +- # define EXRC_FILE "/exrc" +- #endif +- #ifndef GVIMRC_FILE +- # define GVIMRC_FILE "/gvimrc" +- #endif +- #ifndef USR_VIMRC_FILE +- # define USR_VIMRC_FILE "Vim:Evim" +- #endif +- #ifndef SESSION_FILE +- # define SESSION_FILE "/Session.vim" +- #endif +- #ifndef USR_VIMRC_FILE +- # define USR_VIMRC_FILE "Choices:Vim.VimRC" +- #endif +- #ifndef USR_GVIMRC_FILE +- # define USR_GVIMRC_FILE "Choices:Vim.GVimRC" +- #endif +- #ifndef USR_EXRC_FILE +- # define USR_EXRC_FILE "Choices:Vim.ExRC" +- #endif +- #ifndef SYS_VIMRC_FILE +- # define SYS_VIMRC_FILE "Vim:VimRC" +- #endif +- #ifndef SYS_GVIMRC_FILE +- # define SYS_GVIMRC_FILE "Vim:GVimRC" +- #endif +- #ifndef SYS_MENU_FILE +- # define SYS_MENU_FILE "Vim:Menu" +- #endif +- #ifndef SYS_OPTWIN_FILE +- # define SYS_OPTWIN_FILE "Vim:Optwin" +- #endif +- #ifndef FILETYPE_FILE +- # define FILETYPE_FILE "Vim:Filetype" +- #endif +- #ifndef FTPLUGIN_FILE +- # define FTPLUGIN_FILE "Vim:Ftplugin/vim" +- #endif +- #ifndef INDENT_FILE +- # define INDENT_FILE "Vim:Indent/vim" +- #endif +- #ifndef FTOFF_FILE +- # define FTOFF_FILE "Vim:Ftoff" +- #endif +- #ifndef FTPLUGOF_FILE +- # define FTPLUGOF_FILE "Vim:Ftplugof" +- #endif +- #ifndef INDOFF_FILE +- # define INDOFF_FILE "Vim:Indoff" +- #endif +- +- #define DFLT_ERRORFILE "errors/vim" +- #define DFLT_RUNTIMEPATH "Choices:Vim,Vim:,Choices:Vim.after" +- +- /* +- * RISC PCs have plenty of memory, use large buffers +- */ +- #define CMDBUFFSIZE 1024 /* size of the command processing buffer */ +- #define MAXPATHL 256 /* paths are always quite short though */ +- +- #ifndef DFLT_MAXMEM +- # define DFLT_MAXMEM (5*1024) /* use up to 5 Mbyte for a buffer */ +- #endif +- +- #ifndef DFLT_MAXMEMTOT +- # define DFLT_MAXMEMTOT (10*1024) /* use up to 10 Mbyte for Vim */ +- #endif +- +- #ifdef HAVE_SIGSET +- # define signal sigset +- #endif +- +- #define n_flag (1<<31) +- #define z_flag (1<<30) +- #define c_flag (1<<29) +- #define v_flag (1<<28) +- +- /* These take r0-r7 as inputs, returns r0-r7 in global variables. */ +- void swi(int swinum, ...); /* Handles errors itself */ +- int xswi(int swinum, ...); /* Returns errors using v flag */ +- extern int r0, r1, r2, r3, r4, r5, r6, r7; /* For return values */ +- +- #include <kernel.h> +- #include <swis.h> +- +- #define mch_memmove(to, from, len) memmove((char *)(to), (char *)(from), len) +- #define mch_rename(src, dst) rename(src, dst) +- #define mch_getenv(x) (char_u *)getenv((char *)x) +- #define mch_setenv(name, val, x) setenv(name, val, x) +--- 0 ---- +*** ../vim-7.3.186/src/gui_riscos.c 2011-05-10 15:52:10.000000000 +0200 +--- src/gui_riscos.c 1970-01-01 01:00:00.000000000 +0100 +*************** +*** 1,3558 **** +- /* vi:set ts=8 sts=4 sw=4: +- * +- * VIM - Vi IMproved by Bram Moolenaar +- * +- * Do ":help uganda" in Vim to read copying and usage conditions. +- * Do ":help credits" in Vim to see a list of people who contributed. +- * See README.txt for an overview of the Vim source code. +- */ +- +- #include "vim.h" +- #include <string.h> +- +- /* +- * gui_riscos.c +- * +- * Thomas Leonard <tal197@ecs.soton.ac.uk> +- * Updated by Andy Wingate <andy@sparse.net> +- */ +- +- extern int time_of_last_poll; +- +- int task_handle = 0; /* Zero means we are not yet a Wimp task */ +- int child_handle = 0; /* Task handle of our child process (zero if none). */ +- int *wimp_menu = (int *) -1; /* Pointer to a Wimp menu structure (or -1) */ +- int save_window = -1; /* Save As window handle */ +- +- int *redraw_block = NULL; /* NULL means not in a redraw loop. */ +- int ro_return_early = FALSE; /* Break out of gui_mch_wait_for_chars() */ +- +- int leaf_ref = 0; /* Wimp message number - send via Wimp$Scrap */ +- char_u *leaf_name = NULL; /* Leaf name from DataSave */ +- +- int default_columns = 120; /* These values are used if the --rows and --columns */ +- int default_rows = 32; /* options aren't used on startup. */ +- +- #define DRAG_FALSE 0 +- #define DRAG_SELECTION 1 +- #define DRAG_RESIZE_WINDOW 2 +- int ro_dragging = DRAG_FALSE; +- int drag_button; +- int drag_modifiers; +- int drag_x_offset; +- int drag_y_offset; +- +- int nested_wimp = FALSE; /* Bool - can we use the new wimp? */ +- +- int changed_mode = FALSE; +- int x_eigen_factor; +- int y_eigen_factor; +- +- /* If ro_current_font is non-zero then use the outline font with that handle, +- * otherwise, if zap_redraw is TRUE then use ZapRedraw, otherwise use the +- * system font. +- * +- * If zap_redraw is TRUE then zap_file[] contains valid Zap font file +- * pointers (or NULLs). +- */ +- int ro_current_font = 0; /* 0 is system font, or ZapRedraw */ +- int font_x_offset = 0; /* Where to position each char in its box */ +- int font_y_offset = 0; +- +- int zap_redraw = FALSE; +- int double_height = FALSE; /* Plot each line twice? */ +- +- #define grgb(r,g,b) ((b<<16) + (g<<8) + (r)) +- #define UNUSED_COLOUR (gui.back_pixel) +- +- #define RO_LOAD_CLIPBOARD -2 /* Internal handle for DataSave message. */ +- +- /* Changes by John Kortink, 22-23 July 1998 +- * +- * Stuff to make redraw a lot faster. Almost all of it is right here below, +- * elsewhere changes are marked with 'JK230798'. Apart from a small change in +- * 'gui.c' all changes are limited to this file, 'gui_riscos.c'. The change in +- * 'gui.c' is to make Vim stop being 'smart' not redrawing characters that are +- * 'already there' (i.e. from the previous line, by coincidence). This caused a +- * lot more calls to the redraw code, which we want to avoid because a few nice +- * big strings at a time is a lot faster than a truckload of small ones. ('Dear +- * Bram ...'). +- */ +- +- /* The ZapRedraw structure */ +- +- static struct +- { +- int r_flags; +- int r_minx; +- int r_miny; +- int r_maxx; +- int r_maxy; +- int r_screen; +- int r_bpl; +- int r_bpp; +- int r_charw; +- int r_charh; +- char *r_caddr; +- int r_cbpl; +- int r_cbpc; +- int r_linesp; +- int r_data; +- int r_scrollx; +- int r_scrolly; +- int *r_palette; +- int r_for; +- int r_bac; +- char *r_workarea; +- int r_magx; +- int r_magy; +- int r_xsize; +- int r_ysize; +- int r_mode; +- } +- zap_redraw_block; +- +- /* Other globals */ +- +- static int zap_redraw_initialised = FALSE; +- static int zap_redraw_update_colours; +- static int zap_redraw_colours[2]; +- static int zap_redraw_palette[16]; +- +- /* Holds the current Zap font file(s). +- * The font is recreated from this block on a mode change. +- * When using zap, element ZAP_NORMAL is always valid, but +- * the others can be NULL. +- */ +- +- #define ZAP_NORMAL 0 +- #define ZAP_BOLD 1 +- #define ZAP_ITALIC 2 +- #define ZAP_BITALIC 3 +- #define ZAP_STYLES 4 +- +- /* Zap font file format data */ +- static char *zap_file[ZAP_STYLES] = {NULL, NULL, NULL, NULL}; +- +- /* r_caddr format for current mode */ +- static char *zap_caddr[ZAP_STYLES] = {NULL, NULL, NULL, NULL}; +- +- static void ro_remove_menu(int *menu); +- +- /* +- * Initialise all the ZapRedraw stuff. +- * Call this when changing font and after each mode change. +- * zap_redraw_bitmap must contain a valid Zap font file (possibly +- * created from the system font). +- * +- * Return FAIL to revert to system font (if we can't use ZapRedraw). +- */ +- int +- ro_zap_redraw_initialise() +- { +- int bytes_per_bitmap_char; +- int first, last; +- int i; +- +- /* Can't have initialisers for struct members :-(, ok, this way then ... */ +- if (!zap_redraw_initialised) +- { +- zap_redraw_block.r_workarea = NULL; +- zap_redraw_initialised = TRUE; +- } +- +- /* We redraw in DSA mode */ +- zap_redraw_block.r_flags = 0x0; +- +- /* Let ZapRedraw get the screen address for us */ +- zap_redraw_block.r_screen = 0; +- +- /* Read the font width and height from the font file header. +- * Assume that all styles are the same size. +- * ZAP_NORMAL is always present. +- */ +- zap_redraw_block.r_charw = ((int *) zap_file[ZAP_NORMAL])[2]; +- zap_redraw_block.r_charh = ((int *) zap_file[ZAP_NORMAL])[3]; +- +- /* We have no linespacing */ +- zap_redraw_block.r_linesp = 0; +- +- /* Fix foreground = colour 1 */ +- zap_redraw_block.r_for = 1; +- +- /* Fix background = colour 0 */ +- zap_redraw_block.r_bac = 0; +- +- /* Colour mask buffer */ +- zap_redraw_block.r_palette = zap_redraw_palette; +- +- /* Allocate local workspace (for the few calls following here) */ +- if (zap_redraw_block.r_workarea != NULL) +- free(zap_redraw_block.r_workarea); +- zap_redraw_block.r_workarea = (char*) malloc(128); +- if (!zap_redraw_block.r_workarea) +- return FAIL; /* Out of memory */ +- +- /* Fill in VDU variables */ +- if (xswi(ZapRedraw_ReadVduVars, 0, &zap_redraw_block) & v_flag) +- return FAIL; /* Can't find ZapRedraw module - use VDU instead */ +- +- /* Determine cbpl and cbpc */ +- swi(ZapRedraw_CachedCharSize, zap_redraw_block.r_bpp, 0, +- zap_redraw_block.r_charw, zap_redraw_block.r_charh); +- zap_redraw_block.r_cbpl = r2; +- zap_redraw_block.r_cbpc = r3; +- +- /* Allocate general workspace (for the calls outside) */ +- if (zap_redraw_block.r_workarea != NULL) +- free(zap_redraw_block.r_workarea); +- zap_redraw_block.r_workarea = (char*) malloc(128 + zap_redraw_block.r_cbpl); +- if (!zap_redraw_block.r_workarea) +- return FAIL; /* Out of memory */ +- +- /* Now convert the 1 bpp character data ready for the current mode */ +- +- bytes_per_bitmap_char = (zap_redraw_block.r_charw * zap_redraw_block.r_charh + 7) / 8; +- +- /* Convert the fonts from 1bpp to a format suitable for the +- * current mode. +- */ +- for (i = 0; i < ZAP_STYLES; i++) +- { +- first = ((int *) zap_file[i])[4]; +- last = ((int *) zap_file[i])[5]; +- +- if (last > 255) +- last = 255; /* Don't convert cursors (overwrites memory!) */ +- +- /* Allocate the font cache */ +- vim_free(zap_caddr[i]); +- if (zap_file[i]) +- zap_caddr[i] = (char*) malloc(zap_redraw_block.r_cbpc * 256); +- else +- zap_caddr[i] = NULL; /* No file for this style */ +- +- if (zap_caddr[i]) +- { +- zap_redraw_block.r_caddr = zap_caddr[i]; +- +- swi(ZapRedraw_ConvertBitmap, 0, &zap_redraw_block, +- first, last, /* Range of characters to convert */ +- zap_file[i] + 0x20 /* Addr of first char provided by font */ +- - first * bytes_per_bitmap_char); +- } +- } +- +- if (!zap_caddr[ZAP_NORMAL]) +- { +- zap_redraw = FALSE; /* Out of memory */ +- return FAIL; +- } +- +- /* Next time we need them, we have to update the colour masks */ +- zap_redraw_update_colours = TRUE; +- +- return OK; +- } +- +- /* +- * Redraw a string at OS coordinates <x,y> (top-left, x inclusive, y exclusive). +- * Graphics clip window is window[0..3] as in R1+28..40 of Wimp_RedrawWindow. +- * Returns (possibly modified) flags. +- */ +- int +- ro_zap_redraw_draw_string(x, y, string, length, flags, clip) +- int x; +- int y; +- char *string; +- int length; +- int flags; /* DRAW_TRANSP, DRAW_BOLD, DRAW_UNDERL, DRAW_ITALIC */ +- int *clip; +- { +- char redraw_data[1024]; +- int clip_minx; +- int clip_miny; +- int clip_maxx; +- int clip_maxy; +- int os_xshift = zap_redraw_block.r_magx; +- int os_yshift = zap_redraw_block.r_magy; +- +- if (flags & DRAW_TRANSP) +- return flags; /* We don't do transparent plotting yet. */ +- +- if (flags & DRAW_BOLD) +- { +- if (flags & DRAW_ITALIC && zap_caddr[ZAP_BITALIC]) +- zap_redraw_block.r_caddr = zap_caddr[ZAP_BITALIC]; +- else +- zap_redraw_block.r_caddr = zap_caddr[ZAP_BOLD]; +- } +- else +- { +- if (flags & DRAW_ITALIC) +- zap_redraw_block.r_caddr = zap_caddr[ZAP_ITALIC]; +- else +- zap_redraw_block.r_caddr = zap_caddr[ZAP_NORMAL]; +- } +- if (!zap_redraw_block.r_caddr) +- { +- zap_redraw_block.r_caddr = zap_caddr[ZAP_NORMAL]; +- flags |= DRAW_UNDERL; /* Style missing - we can always underline */ +- } +- +- /* Set the vertical scaling flag */ +- if (double_height) +- zap_redraw_block.r_flags = 1 << 1; +- else +- zap_redraw_block.r_flags = 0; +- +- /* Update the colour masks (if needed) */ +- if (zap_redraw_update_colours) +- { +- swi(ZapRedraw_CreatePalette, 2, +- &zap_redraw_block, +- zap_redraw_colours, +- zap_redraw_block.r_palette, 2); +- zap_redraw_update_colours = FALSE; +- } +- +- /* Target rectangle in ZapRedraw rectangle coordinates (pixels, Y-min/max reversed !!!) */ +- zap_redraw_block.r_minx = x >> os_xshift; /* inclusive */ +- zap_redraw_block.r_miny = zap_redraw_block.r_ysize - (y >> os_yshift); /* inclusive */ +- zap_redraw_block.r_maxx = (x + length * gui.char_width) >> os_xshift; /* exclusive */ +- zap_redraw_block.r_maxy = zap_redraw_block.r_ysize - ((y - gui.char_height) >> os_yshift); +- /* exclusive */ +- +- /* Clip rectangle in ZapRedraw rectangle coordinates (pixels, Y-min/max reversed !!!) */ +- clip_minx = clip[0] >> os_xshift; /* inclusive */ +- clip_miny = zap_redraw_block.r_ysize - (clip[3] >> os_yshift); /* inclusive */ +- clip_maxx = clip[2] >> os_xshift; /* exclusive */ +- clip_maxy = zap_redraw_block.r_ysize - (clip[1] >> os_yshift); /* exclusive */ +- +- /* Clip target rectangle against the current graphics window */ +- if (zap_redraw_block.r_minx < clip_minx) +- { +- zap_redraw_block.r_scrollx = clip_minx - zap_redraw_block.r_minx; +- zap_redraw_block.r_minx = clip_minx; +- } +- else +- zap_redraw_block.r_scrollx = 0; +- if (zap_redraw_block.r_miny < clip_miny) +- { +- zap_redraw_block.r_scrolly = clip_miny - zap_redraw_block.r_miny; +- zap_redraw_block.r_miny = clip_miny; +- } +- else +- zap_redraw_block.r_scrolly = 0; +- if (zap_redraw_block.r_maxx > clip_maxx) +- zap_redraw_block.r_maxx = clip_maxx; +- if (zap_redraw_block.r_maxy > clip_maxy) +- zap_redraw_block.r_maxy = clip_maxy; +- +- /* Fill in the character data structure */ +- if (length > (sizeof(redraw_data) - 2 * 4 - 2)) +- length = sizeof(redraw_data) - 2 * 4 - 2; +- ((int*) redraw_data)[0] = 2 * 4; +- ((int*) redraw_data)[1] = 0; +- strncpy(redraw_data + 2 * 4, string, length); +- redraw_data[2 * 4 + length + 0] = '\0'; +- redraw_data[2 * 4 + length + 1] = '\x2'; +- zap_redraw_block.r_data = (int) redraw_data; +- +- /* Perform the draw */ +- swi(ZapRedraw_RedrawArea, 0, &zap_redraw_block); +- +- return flags; +- } +- +- /* +- * Okay that was it from me, back to Thomas ... +- */ +- +- /* +- * Parse the GUI related command-line arguments. Any arguments used are +- * deleted from argv, and *argc is decremented accordingly. This is called +- * when vim is started, whether or not the GUI has been started. +- */ +- void +- gui_mch_prepare(int *argc, char **argv) +- { +- int arg = 1; +- +- while (arg < *argc - 1) +- { +- if (strcmp(argv[arg], "--rows") == 0 || strcmp(argv[arg], "--columns") == 0) +- { +- int value; +- +- value = atoi(argv[arg + 1]); +- +- if (argv[arg][2] == 'r') +- default_rows = value; +- else +- default_columns = value; +- +- /* Delete argument from argv[]. (hope this is read/write!) */ +- +- *argc -= 2; +- if (*argc > arg) +- mch_memmove(&argv[arg], &argv[arg + 2], (*argc - arg) +- * sizeof(char *)); +- } +- else +- arg++; +- } +- } +- +- /* Fatal error on initialisation - report it and die. */ +- void +- ro_die(error) +- char_u *error; /* RISC OS error block */ +- { +- swi(Wimp_ReportError, error, 5, "GVim"); +- exit(EXIT_FAILURE); +- } +- +- /* Find the sizes of the window tools: +- * +- * Create a test window. +- * Find inner and outer sizes. +- * Find the difference. +- * Delete window. +- * +- * While we're here, find the eigen values too. +- */ +- void +- ro_measure_tools() +- { +- int block[10]; +- int vdu[] = { 4, 5, -1}; +- int test_window[] = +- { +- -100, -100, /* Visible area : min X,Y */ +- -50, -50, /* max X,Y */ +- 0, 0, /* Scroll offsets */ +- -1, /* Window in front */ +- 0xd0800150, /* Window flags */ +- 0xff070207, /* Colours */ +- 0x000c0103, /* More colours */ +- 0, -0x4000, /* Workarea extent */ +- 0x4000, 0, /* max X,Y */ +- 0x00000000, /* No title */ +- 0 << 12, /* No workarea button type */ +- 1, /* Wimp sprite area */ +- 0x00010001, /* Minimum width, height */ +- 0, 0, 0, /* Title data (none) */ +- 0 /* No icons */ +- }; +- int inner_max_x, inner_min_y; +- +- swi(Wimp_CreateWindow, 0, test_window); +- +- block[0] = r0; +- /* Open the window (and read state). +- * GetWindowOutline needs it too if the wimp isn't nested. +- */ +- swi(Wimp_OpenWindow, 0, block); +- inner_max_x = block[3]; +- inner_min_y = block[2]; +- +- swi(Wimp_GetWindowOutline, 0, block); +- +- gui.scrollbar_width = block[3] - inner_max_x; +- gui.scrollbar_height = inner_min_y - block[2]; +- +- swi(Wimp_DeleteWindow, 0, block); +- +- /* Read the size of one pixel. */ +- swi(OS_ReadVduVariables, vdu, vdu); +- x_eigen_factor = vdu[0]; +- y_eigen_factor = vdu[1]; +- } +- +- /* Load a template from the current templates file. +- * Create the window and return its handle. +- */ +- int +- ro_load_template(str_name, title, title_size) +- char_u *str_name; /* Identifier of window in file (max 12 chars) */ +- char_u **title; /* If not NULL then return pointer to title here */ +- int *title_size; /* If not NULL then return the title length here */ +- { +- int *window; +- char *data; +- int name[4]; +- +- strcpy( (char *) name, str_name); +- +- /* Find how big we must make the buffers */ +- +- if (xswi(Wimp_LoadTemplate, 0, 0, 0, 0, -1, name, 0) & v_flag) +- ro_die( (char *) r0); +- +- window = malloc(r1); /* Don't print text messages from alloc() */ +- data = malloc(r2); +- if (window == NULL || data == NULL) +- ro_die("\0\0\0\0Out of memory - Can't load templates"); +- +- /* Load the template into the buffers */ +- +- swi(Wimp_LoadTemplate, 0, +- window, /* Temp block */ +- data, /* Icon data */ +- data + r2 + 1, /* End of icon data */ +- -1, /* No fonts */ +- name, 0); /* First match */ +- if (r6 == 0) +- ro_die("\0\0\0\0Can't find window in Templates file"); +- +- /* Create the window */ +- +- if (xswi(Wimp_CreateWindow, 0, window) & v_flag) +- ro_die( (char *) r0); +- +- if (title) +- *title = (char_u *) window[18]; +- if (title_size) +- *title_size = window[20]; +- +- free(window); /* Free temp block */ +- return r0; /* Return the window handle */ +- } +- +- /* +- * Check if the GUI can be started. Called before gvimrc is sourced. +- * Return OK or FAIL. +- */ +- int +- gui_mch_init_check() +- { +- return OK; /* TODO: GUI can always be started? */ +- } +- +- /* +- * Initialise the RISC OS GUI. +- * Create all the windows. +- * Returns OK for success, FAIL when the GUI can't be started. +- */ +- int +- gui_mch_init() +- { +- int messages[] = { +- 1, 2, 3, 4, /* DataSave, DataSaveAck, DataLoad, DataLoadAck */ +- 8, /* PreQuit */ +- 0xf, /* ClaimEntity (for clipboard) */ +- 0x10, /* DataRequest (for clipboard) */ +- 0x400c1, /* Mode change */ +- 0x400c3, /* TaskCloseDown */ +- 0x400c9, /* MenusDeleted */ +- 0x808c1, /* TW_Output */ +- 0x808c2, /* TW_Ego */ +- 0x808c3, /* TW_Morio */ +- 0x808c4, /* TW_Morite */ +- 0}; /* End-of-list. */ +- +- +- /* There may have been some errors reported in the +- * command window before we get here. Wait if so. +- */ +- swi(Wimp_ReadSysInfo, 3); +- if (r0 == 0) +- swi(Wimp_CommandWindow, 0); /* Window opened - close with prompt */ +- +- if (xswi(Wimp_Initialise, 310, 0x4b534154, "GVim", messages) & v_flag) +- return FAIL; +- nested_wimp = r0 >= 397; +- task_handle = r1; +- +- /* Load the templates. */ +- +- if (xswi(Wimp_OpenTemplate, 0, "Vim:Templates") & v_flag) +- ro_die( (char *) r0); +- +- gui.window_handle = ro_load_template("editor", +- &gui.window_title, +- &gui.window_title_size); +- +- save_window = ro_load_template("save", NULL, NULL); +- +- swi(Wimp_CloseTemplate); +- +- /* Set default foreground and background colours. */ +- +- gui.norm_pixel = gui.def_norm_pixel; +- gui.back_pixel = gui.def_back_pixel; +- +- /* Get the colours from the "Normal" and "Menu" group (set in syntax.c or +- * in a vimrc file) */ +- +- set_normal_colors(); +- +- /* +- * Check that none of the colors are the same as the background color +- */ +- +- gui_check_colors(); +- +- /* Get the colours for the highlight groups (gui_check_colors() might have +- * changed them) */ +- +- highlight_gui_started(); /* re-init colours and fonts */ +- +- /* Set geometry based on values read on initialisation. */ +- +- gui.num_cols = Columns = default_columns; +- gui.num_rows = Rows = default_rows; +- +- /* Get some information about our environment. */ +- +- ro_measure_tools(); +- +- return OK; +- } +- +- /* +- * Called when the foreground or background colour has been changed. +- */ +- void +- gui_mch_new_colors() +- { +- } +- +- /* +- * Open the GUI window which was created by a call to gui_mch_init(). +- */ +- int +- gui_mch_open(void) +- { +- int block[10]; +- +- block[0] = gui.window_handle; +- swi(Wimp_GetWindowState, 0, block); +- block[7] = -1; /* Open at the top of the stack */ +- swi(Wimp_OpenWindow, 0, block); +- +- /* Give the new window the input focus */ +- swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1); +- +- if (gui_win_x != -1 && gui_win_y != -1) +- gui_mch_set_winpos(gui_win_x, gui_win_y); +- +- return OK; +- } +- +- void +- gui_mch_exit(int rc) +- { +- int block[64]; +- +- /* Close window. Stops us from getting troublesome events +- * if we take a while to die. +- */ +- block[0] = gui.window_handle; +- swi(Wimp_CloseWindow, 0, block); +- +- if (child_handle) +- { +- /* We still have a sub-task running - kill it */ +- block[0] = 20; +- block[3] = 0; +- block[4] = 0; /* Quit */ +- if ((xswi(Wimp_SendMessage, 17, block, child_handle) & v_flag) == 0) +- { +- /* Idle until child dies. */ +- while (child_handle) +- { +- process_event(wimp_poll(1, block), block); +- } +- } +- } +- +- exit(rc); +- } +- +- /* +- * Get the position of the top left corner of the window. +- */ +- int +- gui_mch_get_winpos(int *x, int *y) +- { +- /* TODO */ +- return FAIL; +- } +- +- /* +- * Set the position of the top left corner of the window to the given +- * coordinates. +- */ +- void +- gui_mch_set_winpos(int x, int y) +- { +- /* TODO */ +- } +- +- void +- gui_mch_set_shellsize(width, height, min_width, min_height, base_width, base_height, direction) +- int width; /* In OS units */ +- int height; +- int min_width; /* Smallest permissible window size (ignored) */ +- int min_height; +- int base_width; /* Space for scroll bars, etc */ +- int base_height; +- int direction; +- { +- int s_width, s_height; +- int block[] = { +- gui.window_handle, +- 0, +- -height + 1, +- width, +- 1}; +- +- gui_mch_get_screen_dimensions(&s_width, &s_height); +- s_width -= base_width; +- s_height -= base_height; /* Underestimate - ignores titlebar */ +- +- swi(Wimp_GetWindowState, 0, block); +- block[3] = block[1] + width; +- block[2] = block[4] - height; +- if (block[3] > s_width) +- { +- block[3] = s_width; +- block[1] = block[3] - width; +- } +- if (block[2] < gui.scrollbar_height) +- { +- block[2] = gui.scrollbar_height; +- block[4] = block[2] + height; +- } +- swi(Wimp_OpenWindow, 0, block); +- swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0); +- } +- +- void +- gui_mch_get_screen_dimensions(int *screen_w, int *screen_h) +- { +- int block[] = {4, 5, 11, 12, -1}; +- +- swi(OS_ReadVduVariables, block, block); +- *screen_w = (block[2] + 1) << block[0]; +- *screen_h = (block[3] + 1) << block[1]; +- } +- +- /* Take a font name with options and return a font handle, or +- * zero for failure. +- * Replace extension with 'Bold' or 'Italic' depending on modifiers. +- */ +- int +- ro_get_font(fullname, weight) +- char_u *fullname; +- int weight; /* Initial weights: +- * BIT MEANING +- * 0 bold +- * 1 italic +- */ +- { +- char_u *arg; +- char_u font[41]; +- int width = -1; +- int height = -1; +- int name_len; +- int i; +- char_u c; +- +- for (i = 0; i < 39;) +- { +- c = fullname[i]; +- if (c == ':' || c == NUL || c == '.') +- break; +- font[i++] = c; +- } +- +- /* find the first modifier, NULL if none */ +- arg = strchr(fullname + i, ':'); +- +- while (arg) +- { +- switch (*++arg) +- { +- case 'h': +- height = strtol(arg + 1, (char **) &arg, 10); +- break; +- case 'w': +- width = strtol(arg + 1, (char **) &arg, 10); +- break; +- case 'b': +- weight |= 1; +- break; +- case 'i': +- weight |= 2; +- break; +- default: +- return 0; +- } +- arg = strchr(arg, ':'); +- } +- +- if ((weight & 1) && i < 35) +- { +- /* Bold goes instead of given suffix */ +- strncpy(font + i, ".Bold", 5); +- i += 5; +- } +- else +- { +- /* Copy rest of name unless we are using Bold */ +- while (i < 39) +- { +- c = fullname[i]; +- if (c == ':' || c == NUL) +- break; +- font[i++] = c; +- } +- } +- if ((weight & 2) && i < 32) +- { +- strncpy(font + i, ".Oblique", 8); +- i += 8; +- } +- +- font[i] = 0; +- +- if (height < 1 && width < 1) +- height = width = 10; /* Default to 10pt */ +- else if (height < 1) +- height = width; +- else if (width < 1) +- width = height; +- +- if (xswi(Font_FindFont, 0, font, width << 4, height << 4, 0, 0) & v_flag) +- return NOFONT; /* Can't find font */ +- +- return r0; +- } +- +- /* Load a file into allocated memory and check it is valid. +- * Return a pointer to the allocated block on success. +- */ +- char * +- zap_load_file(name, style) +- char_u *name; /* Name of directory containing styles */ +- char_u *style; /* Name of style within directory */ +- { +- char_u fname[256]; +- char_u *file; +- +- if (strlen(name) + strlen(style) > 254) +- return NULL; /* Names too long */ +- +- sprintf(fname, "%s.%s", name, style); +- +- /* Load the named font in 1bpp format. */ +- if (xswi(OS_File, 13, fname, 0, 0, "VimFonts:") & v_flag || r0 != 1) +- return NULL; /* Error reading file info, or not a file */ +- +- /* Allocate enough memory to load the whole file */ +- file = (char *) alloc(r4); +- if (!file) +- return NULL; /* Out of memory */ +- +- if (xswi(OS_File, 12, fname, file, 0, "VimFonts:") & v_flag) +- return NULL; /* Unable to load file */ +- +- if (strncmp(file, "ZapFont\015", 8) == 0) +- return file; /* Loaded OK! */ +- +- vim_free(file); +- return NULL; /* Not a valid font file */ +- } +- +- /* Load and convert the named font. +- * If name is NULL or a null string then convert the system font. +- * Return OK on success; FAIL and we revert to using the VDU drivers. +- * +- * 'name' is the name of a directory. +- * Tries to load 'name.0', 'name.B', 'name.I' and 'name.IB'. +- */ +- int +- zap_load_font(name) +- char_u *name; +- { +- int i; +- +- /* Free the existing font files, if any */ +- for (i = 0; i < ZAP_STYLES; i++) +- { +- vim_free(zap_file[i]); +- zap_file[i] = NULL; +- } +- +- if (name && *name == '!') +- { +- name++; +- double_height = TRUE; +- } +- else +- double_height = FALSE; +- +- if (name && *name) +- { +- zap_file[ZAP_NORMAL] = zap_load_file(name, "0"); +- if (!zap_file[ZAP_NORMAL]) +- return FAIL; /* Can't load the 'normal' style - error */ +- +- zap_file[ZAP_BOLD] = zap_load_file(name, "B"); +- zap_file[ZAP_ITALIC] = zap_load_file(name, "I"); +- zap_file[ZAP_BITALIC] = zap_load_file(name, "IB"); +- } +- else +- { +- int *header; +- char workarea[16]; +- char *old_wa; +- +- /* Allocate memory for system font (8 x 8 x 256 bits, plus header) */ +- header = (int *) alloc(0x20 + 8 * 256); +- if (header == NULL) +- return FAIL; +- zap_file[ZAP_NORMAL] = (char *) header; +- +- /* Store details about the system font */ +- header[2] = 8; /* Width */ +- header[3] = 8; /* Height */ +- header[4] = 0; /* First char */ +- header[5] = 255; /* Last char */ +- header[6] = header[7] = 0; /* Reserved */ +- +- /* Get system font bitmap */ +- old_wa = zap_redraw_block.r_workarea; +- zap_redraw_block.r_workarea = workarea; +- swi(ZapRedraw_ReadSystemChars, zap_file[ZAP_NORMAL] + 0x20, &zap_redraw_block); +- zap_redraw_block.r_workarea = old_wa; +- } +- +- return ro_zap_redraw_initialise(); +- } +- +- /* +- * Initialise vim to use the font with the given name. +- * Return FAIL if the font could not be loaded, OK otherwise. +- */ +- int +- gui_mch_init_font(char_u *font_name, int fontset) +- { +- int new_handle = 0; /* Use the system font by default */ +- +- if (font_name[0] == '!') +- { +- /* Select a ZapRedraw font */ +- if (zap_load_font(font_name + 1)) +- zap_redraw = TRUE; +- else +- { +- EMSG2(_("E610: Can't load Zap font '%s'"), font_name); +- font_name = "System"; /* Error - use system font */ +- zap_redraw = FALSE; +- } +- } +- else +- { +- zap_redraw = FALSE; +- +- if (font_name) +- { +- /* Extract any extra details about the font */ +- new_handle = ro_get_font(font_name, 0); +- if (!new_handle) +- return FAIL; +- } +- else +- font_name = "System"; +- } +- +- /* Free the previous font, if any */ +- gui_mch_free_font(gui.norm_font); +- gui.norm_font = new_handle; +- gui.char_ascent = 0; +- +- if (new_handle) +- { +- /* Read details about the chosen font */ +- swi(Font_ReadInfo, new_handle); +- +- gui.char_width = r3 - r1; +- gui.char_height = r4 - r2; +- +- font_x_offset = -r1; /* Where to position each char in its box */ +- font_y_offset = -r4; +- +- /* Try to load other fonts for bold, italic, and bold-italic */ +- gui_mch_free_font(gui.bold_font); +- gui.bold_font = ro_get_font(font_name, 1); +- gui_mch_free_font(gui.ital_font); +- gui.ital_font = ro_get_font(font_name, 2); +- gui_mch_free_font(gui.boldital_font); +- gui.boldital_font = ro_get_font(font_name, 3); +- } +- else +- { +- /* Use the system font or ZapRedraw. */ +- if (zap_redraw) +- { +- gui.char_width = zap_redraw_block.r_charw << zap_redraw_block.r_magx; +- gui.char_height = zap_redraw_block.r_charh << zap_redraw_block.r_magy; +- if (double_height) +- gui.char_height <<= 1; +- } +- else +- { +- gui.char_width = 16; +- gui.char_height = 32; +- } +- +- gui_mch_free_font(gui.bold_font); +- gui.bold_font = 0; +- gui_mch_free_font(gui.ital_font); +- gui.ital_font = 0; +- gui_mch_free_font(gui.boldital_font); +- gui.boldital_font = 0; +- } +- hl_set_font_name(font_name); +- +- must_redraw = CLEAR; +- return OK; +- } +- +- /* +- * Adjust gui.char_height (after 'linespace' was changed). +- */ +- int +- gui_mch_adjust_charheight() +- { +- return FAIL; +- } +- +- /* +- * Get a font structure for highlighting. +- */ +- GuiFont +- gui_mch_get_font(name, giveErrorIfMissing) +- char_u *name; +- int giveErrorIfMissing; +- { +- int handle; +- +- if (!name) +- return NOFONT; /* System font if no name */ +- +- handle = ro_get_font(name, 0); +- if (!handle) +- { +- if (giveErrorIfMissing) +- EMSG2(_("E611: Can't use font %s"), name); +- return NOFONT; +- } +- +- return handle; +- } +- +- #if defined(FEAT_EVAL) || defined(PROTO) +- /* +- * Return the name of font "font" in allocated memory. +- * Don't know how to get the actual name, thus use the provided name. +- */ +- char_u * +- gui_mch_get_fontname(font, name) +- GuiFont font; +- char_u *name; +- { +- if (name == NULL) +- return NULL; +- return vim_strsave(name); +- } +- #endif +- +- /* +- * Set the current text font. +- */ +- void +- gui_mch_set_font(GuiFont font) +- { +- ro_current_font = font; +- +- if (font) +- { +- /* Not the system font or ZapRedraw font - select it */ +- swi(Font_SetFont, font); +- } +- } +- +- /* +- * If a font is not going to be used, free its structure. +- */ +- void +- gui_mch_free_font(GuiFont font) +- { +- if (font) +- swi(Font_LoseFont, font); +- } +- +- /* +- * Return the Pixel value (colour) for the given colour name. +- * Return INVALCOLOR for error. +- * NB: I've changed Green for now, since it looked really sick +- */ +- guicolor_T +- gui_mch_get_color(char_u *name) +- { +- int i; +- struct colour +- { +- char_u *name; +- guicolor_T value; +- } colours[] = +- { +- { "Red", grgb(255, 0, 0) }, +- { "LightRed", grgb(255, 0, 0) }, +- { "DarkRed", grgb(139, 0, 0) }, +- +- { "Green", grgb(50, 200, 50) }, +- { "LightGreen", grgb(144, 238, 144) }, +- { "DarkGreen", grgb(0, 100, 0) }, +- { "SeaGreen", grgb(46, 139, 87) }, +- +- { "Blue", grgb(0, 0, 255) }, +- { "LightBlue", grgb(173, 216, 230) }, +- { "DarkBlue", grgb(0, 0, 139) }, +- { "SlateBlue", grgb(160, 90, 205) }, +- +- { "Cyan", grgb(0, 255, 255) }, +- { "LightCyan", grgb(224, 255, 255) }, +- { "DarkCyan", grgb(0, 139, 139) }, +- +- { "Magenta", grgb(255, 0, 255) }, +- { "LightMagenta", grgb(255, 224, 255) }, +- { "DarkMagenta", grgb(139, 0, 139) }, +- +- { "Yellow", grgb(255, 255, 0) }, +- { "LightYellow", grgb(255, 255, 224) }, +- { "DarkYellow", grgb(139, 139, 0) }, +- { "Brown", grgb(165, 42, 42) }, +- +- { "Gray", grgb(190, 190, 190) }, +- { "Grey", grgb(190, 190, 190) }, +- { "LightGray", grgb(211, 211, 211) }, +- { "LightGrey", grgb(211, 211, 211) }, +- { "DarkGray", grgb(169, 169, 169) }, +- { "DarkGrey", grgb(169, 169, 169) }, +- { "Gray10", grgb(26, 26, 26) }, +- { "Grey10", grgb(26, 26, 26) }, +- { "Gray20", grgb(51, 51, 51) }, +- { "Grey20", grgb(51, 51, 51) }, +- { "Gray30", grgb(77, 77, 77) }, +- { "Grey30", grgb(77, 77, 77) }, +- { "Gray40", grgb(102, 102, 102) }, +- { "Grey40", grgb(102, 102, 102) }, +- { "Gray50", grgb(127, 127, 127) }, +- { "Grey50", grgb(127, 127, 127) }, +- { "Gray60", grgb(153, 153, 153) }, +- { "Grey60", grgb(153, 153, 153) }, +- { "Gray70", grgb(179, 179, 179) }, +- { "Grey70", grgb(179, 179, 179) }, +- { "Gray80", grgb(204, 204, 204) }, +- { "Grey80", grgb(204, 204, 204) }, +- { "Gray90", grgb(229, 229, 229) }, +- { "Grey90", grgb(229, 229, 229) }, +- +- { "Black", grgb(0, 0, 0) }, +- { "White", grgb(255, 255, 255) }, +- +- { "Orange", grgb(255, 165, 0) }, +- { "Purple", grgb(160, 32, 240) }, +- { "Violet", grgb(238, 130, 238) }, +- {NULL, 0} +- }; +- +- if (name[0] == '#') +- { +- char *end; +- int c; +- +- c = strtol(name + 1, &end, 16); +- return (guicolor_T) ((c >> 16) & 0xff) | (c & 0xff00) | ((c & 0xff) << 16); +- } +- +- for (i = 0; colours[i].name != NULL; i++) +- { +- if (STRICMP(name, colours[i].name) == 0) +- return colours[i].value; +- } +- if (strnicmp(name, "grey", 4) == 0 || strnicmp(name, "gray", 4) == 0) +- { +- int level = (255 * atoi(name + 4)) / 100; +- return (guicolor_T) grgb(level, level, level); +- } +- return INVALCOLOR; +- } +- +- /* +- * Set the current text colours. +- * If we are using fonts then set the antialiasing colours too. +- */ +- void +- gui_mch_set_colors(guicolor_T fg, guicolor_T bg) +- { +- zap_redraw_colours[0] = bg << 8; /* JK230798, register new background colour */ +- zap_redraw_colours[1] = fg << 8; /* JK230798, register new foreground colour */ +- zap_redraw_update_colours = TRUE; /* JK230798, need update of colour masks */ +- +- swi(ColourTrans_ReturnGCOL, fg << 8); +- gui.fg_colour = r0; +- swi(ColourTrans_ReturnGCOL, bg << 8); +- gui.bg_colour = r0; +- +- if (ro_current_font) +- swi(ColourTrans_SetFontColours, 0, bg << 8, fg << 8, 14); +- } +- +- void +- ro_draw_string(x, y, s, len, flags, clip) +- int x; /* Top-left coord to plot at (x incl, y excl) */ +- int y; /* (screen coords) */ +- char_u *s; /* String to plot */ +- int len; /* Length of string */ +- int flags; /* DRAW_TRANSP, DRAW_BOLD, DRAW_UNDERL */ +- int* clip; /* JK230798, added clip window */ +- { +- if (ro_current_font) +- { +- int fx; +- int flen = len; /* Preserve for underline */ +- +- /* Use the Font manager to paint the string. +- * Must do one char at a time to get monospacing. +- */ +- +- if (flags & DRAW_ITALIC && !gui.ital_font) +- flags |= DRAW_UNDERL; /* No italic - underline instead */ +- +- if ((flags & DRAW_TRANSP) == 0) +- { +- swi(ColourTrans_SetColour, gui.bg_colour, 0, 0, 0, 0); +- swi(OS_Plot, 4, x, y - gui.char_height); +- swi(OS_Plot, 96 + 5, x + len * gui.char_width - 1, y - 1); +- } +- +- fx = x + font_x_offset; +- while (flen--) +- { +- swi(Font_Paint, 0, s++, 0x90, fx, y + font_y_offset, 0, 0, 1); +- fx += gui.char_width; +- } +- } +- else +- { +- if (zap_redraw) +- { +- /* Using fast Zap redraw. */ +- flags = ro_zap_redraw_draw_string(x, y, s, len, flags, clip); +- } +- else +- { +- /* Using the system font */ +- if (flags & DRAW_ITALIC) +- flags |= DRAW_UNDERL; +- +- if ((flags & DRAW_TRANSP) == 0) +- { +- swi(ColourTrans_SetColour, gui.bg_colour, 0, 0, 0, 0); +- swi(OS_Plot, 4, x, y - gui.char_height); +- swi(OS_Plot, 96 + 5, x + len * gui.char_width - 1, y - 1); +- } +- swi(OS_Plot, 4, /* Move the drawing cursor */ +- x, +- y - 1); +- swi(ColourTrans_SetColour, gui.fg_colour, 0, 0, 0, 0); +- swi(OS_WriteN, s, len); +- +- if (flags & DRAW_BOLD) +- { +- swi(OS_Plot, 4, x + (1 << x_eigen_factor), y - 1); +- swi(OS_WriteN, s, len); +- } +- } +- } +- +- if (flags & DRAW_UNDERL) +- { +- if (ro_current_font || zap_redraw) +- swi(ColourTrans_SetColour, gui.fg_colour, 0, 0, 0, 0); +- /* Underlined is the same with all plotting methods */ +- swi(OS_Plot, 4, x, y - gui.char_height); +- swi(OS_Plot, 1, gui.char_width * len, 0); +- } +- } +- +- void +- gui_mch_draw_string(int row, int col, char_u *s, int len, int flags) +- { +- int x, y; /* Workarea x,y */ +- x = col * gui.char_width; +- y = -row * gui.char_height; +- +- if (redraw_block) +- { +- ro_draw_string(x + redraw_block[1], y + redraw_block[4], +- s, len, flags, &redraw_block[7]); /* JK230798, added clip window */ +- } +- else +- { +- int block[44]; +- block[0] = gui.window_handle; +- block[1] = x; +- block[2] = y - gui.char_height; +- block[3] = (col + len) * gui.char_width; +- block[4] = y; +- swi(Wimp_UpdateWindow, 0, block); +- while (r0) +- { +- ro_draw_string(x + block[1], y + block[4], +- s, len, flags, &block[7]); /* JK230798, added clip window */ +- swi(Wimp_GetRectangle, 0, block); +- } +- } +- } +- +- /* +- * Return OK if the key with the termcap name "name" is supported. +- */ +- int +- gui_mch_haskey(char_u *name) +- { +- return FAIL; +- } +- +- void +- gui_mch_beep(void) +- { +- swi(OS_WriteI + 7); +- } +- +- /* +- * Visual bell. +- */ +- void +- gui_mch_flash(int msec) +- { +- /* TODO */ +- } +- +- +- /* +- * Plot a solid rectangle using the given plot action and colour. +- * Coordinates are inclusive and window-relative. +- */ +- void +- plot_rectangle(plot, colour, minx, miny, maxx, maxy) +- int plot; /* OS_Plot action */ +- int colour; +- int minx; +- int miny; +- int maxx; +- int maxy; +- { +- if (redraw_block) +- { +- swi(ColourTrans_SetColour, colour, 0, 0, 0, 0); +- swi(OS_Plot, 4, minx + redraw_block[1], miny + redraw_block[4]); +- swi(OS_Plot, plot, maxx + redraw_block[1], maxy + redraw_block[4]); +- } +- else +- { +- int block[44]; +- block[0] = gui.window_handle; +- block[1] = minx; +- block[2] = miny; +- block[3] = maxx + 1; +- block[4] = maxy + 1; +- swi(Wimp_UpdateWindow, 0, block); +- while (r0) +- { +- swi(ColourTrans_SetColour, colour, 0, 0, 0, 0); +- swi(OS_Plot, 4, minx + block[1], miny + block[4]); +- swi(OS_Plot, plot, maxx + block[1], maxy + block[4]); +- swi(Wimp_GetRectangle, 0, block); +- } +- } +- } +- +- /* +- * Invert a rectangle from row r, column c, for nr rows and nc columns. +- */ +- void +- gui_mch_invert_rectangle(int r, int c, int nr, int nc) +- { +- plot_rectangle(96 + 6, 0, FILL_X(c), -FILL_Y(r + nr), FILL_X(c + nc), -FILL_Y(r)); +- } +- +- /* +- * Iconify the GUI window. +- */ +- void +- gui_mch_iconify(void) +- { +- } +- +- #if defined(FEAT_EVAL) || defined(PROTO) +- /* +- * Bring the Vim window to the foreground. +- */ +- void +- gui_mch_set_foreground() +- { +- /* TODO */ +- } +- #endif +- +- /* Draw a hollow rectangle relative to the current +- * graphics cursor position, with the given width +- * and height. Start position is top-left. +- */ +- void +- draw_hollow(w, h) +- int w; +- int h; +- { +- swi(OS_Plot, 1, w - 1, 0); +- swi(OS_Plot, 1, 0, 1 - h); +- swi(OS_Plot, 1, 1 - w, 0); +- swi(OS_Plot, 1, 0, h - 1); +- } +- +- /* +- * Draw a cursor without focus. +- */ +- void +- gui_mch_draw_hollow_cursor(guicolor_T colour) +- { +- int x = FILL_X(gui.cursor_col); /* Window relative, top-left */ +- int y = -FILL_Y(gui.cursor_row); +- if (redraw_block == NULL) +- { +- int block[11]; +- +- block[0] = gui.window_handle; +- block[1] = x; +- block[2] = y - gui.char_height; +- block[3] = x + gui.char_width; +- block[4] = y; +- swi(Wimp_UpdateWindow, 0, block); +- while (r0) +- { +- swi(ColourTrans_SetGCOL, colour << 8, 0, 0, 0, 0); +- +- swi(OS_Plot, 4, x + block[1], y + block[4] - 1); +- draw_hollow(gui.char_width, gui.char_height); +- +- swi(Wimp_GetRectangle, 0, block); +- } +- } +- else +- { +- swi(ColourTrans_SetGCOL, colour << 8, 0, 0, 0, 0); +- +- swi(OS_Plot, 4, x + redraw_block[1], y + redraw_block[4] - 1); +- draw_hollow(gui.char_width, gui.char_height); +- } +- } +- +- /* +- * Draw part of a cursor, "w" pixels wide, and "h" pixels high, using +- * color "color". +- */ +- void +- gui_mch_draw_part_cursor(w, h, colour) +- int w; +- int h; +- guicolor_T colour; +- { +- int x = FILL_X(gui.cursor_col); +- int y = -FILL_Y(gui.cursor_row); +- swi(ColourTrans_ReturnGCOL, colour << 8); +- plot_rectangle(96 + 5, r0, x, y - h, x + w - 1, y - 1); +- } +- +- /* +- * Catch up with any queued events. This may put keyboard input into the +- * input buffer, call resize call-backs, trigger timers etc. +- * If there is nothing in the event queue(& no timers pending), then we return +- * immediately (well, after a Wimp_Poll). +- */ +- void +- gui_mch_update(void) +- { +- int block[64]; +- int reason; +- +- swi(OS_ReadMonotonicTime); +- if ((r0 - time_of_last_poll) < 50) +- return; /* Don't return too often */ +- +- reason = wimp_poll(0, block); +- if (reason) +- process_event(reason, block); +- ro_return_early = FALSE; /* We're returning anyway. */ +- } +- +- void +- redraw_window(block) +- int *block; +- { +- int x, y; /* Vim workarea coords */ +- int width, height; +- int blank_col; +- +- swi(ColourTrans_ReturnGCOL, UNUSED_COLOUR << 8, 0, 0, 1<<7, 0); +- blank_col = r0; +- +- swi(Wimp_RedrawWindow, 0, block); +- redraw_block = block; +- while (r0) +- { +- x = block[7] - block[1]; +- y = block[4] - block[10]; +- width = block[9] - block[7]; +- height = block[10] - block[8]; +- +- if (height + y > Rows * gui.char_height) +- { +- /* Blank everything off the bottom. */ +- plot_rectangle(96 + 5, blank_col, +- 0, block[8] - block[4], +- block[9] - block[1], -FILL_Y(Rows) - 1); +- height = Rows * gui.char_height; +- } +- if (width + x> Columns * gui.char_width) +- { +- /* Blank everything off to the right. */ +- plot_rectangle(96 + 5, blank_col, +- FILL_X(Columns), block[8] - block[4], +- block[9] - block[1], 0); +- width = Columns * gui.char_width; +- } +- gui_redraw(x , y, width, height); +- swi(Wimp_GetRectangle, 0, block); +- } +- redraw_block = NULL; +- } +- +- /* Check if we have modified data. +- * If we do then ack the message to stop the shutdown. +- * Otherwise, ignore the message. +- */ +- void +- ro_prequit(block) +- int *block; +- { +- if (!ro_ok_to_quit()) +- { +- /* Not OK to quit - stop shutdown */ +- block[3] = block[2]; +- swi(Wimp_SendMessage, 19, block, block[1]); +- } +- /* Do nothing. We may get a Message_Quit later. */ +- } +- +- /* If there is unsaved data then ask the user if they mind losing it. +- * Return TRUE if we can quit without saving, FALSE to halt the +- * shutdown. +- */ +- int +- ro_ok_to_quit() +- { +- int old_confirm = cmdmod.confirm; +- +- cmdmod.confirm = FALSE; /* Use our own, single tasking, box */ +- +- if (check_changed_any(FALSE)) +- { +- swi(Wimp_ReportError, +- "\0\0\0\0Vim contains unsaved data - quit anyway?", +- 0x17, +- "Vim"); +- cmdmod.confirm = old_confirm; +- if (r1 != 1) +- return FALSE; +- } +- cmdmod.confirm = old_confirm; +- return TRUE; +- } +- +- /* Quit without checking for unsaved data. */ +- void +- ro_quit() +- { +- exiting = TRUE; +- getout(0); +- +- exiting = FALSE; /* probably can't get here */ +- setcursor(); /* position cursor */ +- out_flush(); +- } +- +- /* Insent the given vim special code into the input buffer */ +- void +- ro_press(a, b, modifier) +- char a; +- char b; +- int modifier; /* %<Ctrl><Shift> 0000 0000 */ +- { +- char_u buf[6]; +- int vim_mod; +- int key; +- +- +- /* Convert RISC OS modifier to Vim modifier. */ +- vim_mod = ((modifier & 0x10) ? MOD_MASK_SHIFT : 0) +- | ((modifier & 0x20) ? MOD_MASK_CTRL : 0); +- key = simplify_key(TERMCAP2KEY(a, b), &vim_mod); +- +- buf[3] = CSI; +- buf[4] = KEY2TERMCAP0(key); +- buf[5] = KEY2TERMCAP1(key); +- if (vim_mod) +- { +- buf[0] = CSI; +- buf[1] = KS_MODIFIER; +- buf[2] = vim_mod; +- add_to_input_buf(buf, 6); +- } +- else +- add_to_input_buf(buf + 3, 3); +- } +- +- /* Take a wimp key code and insert the vim equivalent +- * into vim's input buffer. +- * CTRL-C also sets got_int. +- */ +- void +- ro_insert_key(code) +- char_u *code; /* Wimp_ProcessKey code (4 bytes) */ +- { +- char a = code[0]; +- char b = code[1]; +- int base, modifier; +- +- if (a == 3 && ctrl_c_interrupts) +- got_int = TRUE; +- +- /* Is it a normal key? */ +- if (a > 31 && a < 127) +- { +- add_to_input_buf(code, 1); +- return; +- } +- +- /* We should pass any unrecognised keys on, but +- * for now just pass on F12 combinations. +- */ +- switch (b) +- { +- case 0: +- /* Home and Delete are the only special cases */ +- switch (a) +- { +- case 0x1e: +- ro_press('k','h', 0); /* Home */ +- return; +- case 0x7f: +- ro_press('k','D', 0); /* Delete */ +- return; +- case CSI: +- { +- /* Turn CSI into K_CSI. Untested! */ +- char_u string[3] = {CSI, KS_EXTRA, KE_CSI}; +- +- add_to_input_buf(string, 3); +- return; +- } +- default: +- add_to_input_buf(code, 1); +- return; +- } +- case 1: +- if ((a & 0xcf) == 0xcc) +- { +- /* F12 pressed - pass it on (quick hack) */ +- swi(Wimp_ProcessKey, a | 0x100); +- return; +- } +- base = a & 0xcf; +- modifier = a & 0x30; +- switch (base) +- { +- case 0x8a: /* Tab */ +- add_to_input_buf("\011", 1); +- return; +- case 0x8b: /* Copy (End) */ +- return ro_press('@', '7', modifier); +- case 0x8c: /* Left */ +- return ro_press('k', 'l', modifier); +- case 0x8d: /* Right */ +- return ro_press('k', 'r', modifier); +- case 0x8e: /* Down */ +- if (modifier & 0x10) +- return ro_press('k', 'N', modifier ^ 0x10); +- else +- return ro_press('k', 'd', modifier); +- case 0x8f: /* Up */ +- if (modifier & 0x10) +- return ro_press('k', 'P', modifier ^ 0x10); +- else +- return ro_press('k', 'u', modifier); +- case 0xca: /* F10 */ +- return ro_press('k', ';', modifier); +- case 0xcb: /* F11 */ +- return ro_press('F', '1', modifier); +- case 0xcd: /* Insert */ +- return ro_press('k', 'I', modifier); +- default: +- if (base > 0x80 && base < 0x18a) +- { +- /* One of the other function keys */ +- return ro_press('k', '0' + (base & 15), modifier); +- } +- } +- } +- } +- +- /* Process a mouse event. */ +- void +- ro_mouse(block) +- int *block; +- { +- int x, y, button, vim_button; +- int modifiers = 0; +- int min_x, min_y; /* Visible area of editor window */ +- int max_x, max_y; +- +- if (block[3] != gui.window_handle || ro_dragging) +- return; /* Not our window or ignoring clicks*/ +- +- x = block[0]; /* Click position - screen coords */ +- y = block[1]; +- button = block[2]; +- +- block[0] = gui.window_handle; +- swi(Wimp_GetWindowState, 0, block); +- min_x = block[1]; +- min_y = block[2]; +- max_x = block[3]; +- max_y = block[4]; +- +- if (block[3] - x < gui.scrollbar_width) +- { +- /* Click in that blank area under the scrollbars */ +- +- if (button & 0x444) +- { +- int front_block[64]; +- /* Dragging with Select - bring window to front first */ +- front_block[0] = gui.window_handle; +- swi(Wimp_GetWindowState, 0, front_block); +- front_block[7] = -1; +- ro_open_main(front_block); +- } +- +- block[0] = gui.window_handle; +- block[1] = 7; /* Drag point */ +- block[2] = block[4] = 0; /* Coords of point. */ +- block[3] = block[5] = 0; +- drag_x_offset = max_x - x; +- drag_y_offset = min_y - y; +- +- /* Parent box. */ +- block[6] = min_x + +- gui.scrollbar_width * 2 + +- MIN_COLUMNS * gui.char_width; +- block[7] = 0; +- gui_mch_get_screen_dimensions(&block[8], &block[9]); +- block[9] = max_y - +- 4 * gui.char_height - +- gui.scrollbar_height; +- +- swi(Wimp_DragBox, 0, block); +- ro_dragging = DRAG_RESIZE_WINDOW; +- drag_button = vim_button; +- drag_modifiers = modifiers; +- return; +- } +- +- if (button & 0x111) +- vim_button = MOUSE_RIGHT; +- else if (button & 0x222) +- vim_button = MOUSE_MIDDLE; +- else +- vim_button = MOUSE_LEFT; +- +- swi(OS_Byte, 121, 0x80); +- if (r1 == 0xff) +- modifiers |= MOUSE_SHIFT; +- swi(OS_Byte, 121, 0x81); +- if (r1 == 0xff) +- modifiers |= MOUSE_CTRL; +- swi(OS_Byte, 121, 0x82); +- if (r1 == 0xff) +- modifiers |= MOUSE_ALT; +- +- if (button == 2) +- { +- /* Menu click: +- * If shift was pressed then do the paste action. +- * If not, then open the pop-up menu. +- */ +- modifiers ^= MOUSE_SHIFT; +- if (modifiers && MOUSE_SHIFT) +- { +- vimmenu_T main; +- /* Shift was NOT pressed - show menu */ +- main.dname = (char_u *) "Vim"; +- main.children = root_menu; +- gui_mch_show_popupmenu(&main); +- return; +- } +- } +- +- /* Gain the input focus */ +- swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1); +- +- if (button & 0xf0) +- { +- /* Drag operation: +- * +- * Tell the Wimp to start a drag. +- * Monitor null events. +- */ +- block[1] = 7; /* Drag a point. */ +- block[2] = block[4] = x; /* Coords of point. */ +- block[3] = block[5] = y; +- block[6] = 0; /* Coords of bounding box. */ +- block[7] = 0; +- gui_mch_get_screen_dimensions(&block[8], &block[9]); +- +- drag_x_offset = drag_y_offset = 0; +- +- swi(Wimp_DragBox, 0, block); +- ro_dragging = DRAG_SELECTION; +- drag_button = vim_button; +- drag_modifiers = modifiers; +- +- vim_button |= MOUSE_DRAG; +- } +- +- gui_send_mouse_event( +- vim_button, +- x - min_x, +- max_y - y, +- button & 0xf ? TRUE : FALSE, /* dclick */ +- modifiers); +- } +- +- void +- ro_continue_drag(block) +- int *block; /* Just used as scrap. */ +- { +- int x, y; +- +- /* Get screen coords of pointer. */ +- swi(Wimp_GetPointerInfo, 0, block); +- x = block[0] + drag_x_offset; +- y = block[1] + drag_y_offset; +- +- block[0] = gui.window_handle; +- swi(Wimp_GetWindowState, 0, block); +- +- if (ro_dragging == DRAG_RESIZE_WINDOW) +- { +- /* Resizing the main window. */ +- block[2] = y; +- block[3] = x; +- ro_open_main(block); +- } +- else +- { +- /* Selecting some text. */ +- gui_send_mouse_event( +- drag_button | MOUSE_DRAG, /* Always report the same button */ +- x - block[1], +- block[4] - y, +- FALSE, /* Not a double click. */ +- drag_modifiers); +- } +- } +- +- /* User has released all mouse buttons, marking the end of a drag. */ +- void +- ro_drag_finished(block) +- int *block; +- { +- int x; +- int y; +- int width, height; +- +- /* I don't trust the box returned by Wimp_Poll; look at the pointer +- * ourselves. +- */ +- swi(Wimp_GetPointerInfo, 0, block); +- x = block[0] + drag_x_offset; +- y = block[1] + drag_y_offset; +- +- if (ro_dragging == DRAG_RESIZE_WINDOW) +- { +- block[0] = gui.window_handle; +- swi(Wimp_GetWindowState, 0, block); +- block[2] = y; +- block[3] = x; +- ro_open_main(block); +- +- width = (block[3] - block[1]); +- height = (block[4] - block[2]); +- +- swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0); +- gui_resize_shell(width, height); +- } +- else +- { +- block[0] = gui.window_handle; +- swi(Wimp_GetWindowState, 0, block); +- gui_send_mouse_event( +- MOUSE_RELEASE, +- x - block[1], +- block[4] - y, +- FALSE, /* not a double click */ +- drag_modifiers); +- } +- ro_dragging = DRAG_FALSE; +- } +- +- /* Load the file/pathname given in block into a [new] buffer. +- * +- * Modifier Action +- * +- * None :confirm e <file> +- * Ctrl :sp <file> +- * Shift <file> +- * +- * Insert into typebuf, at the start. +- * If loading from !Scrap then use saved leafname instead, and +- * delete the scrap file. Also, ignore shift key. +- * +- * NB: Doesn't send DataLoadAck (other app might delete temp file?). +- */ +- void +- ro_dataload(block) +- int *block; +- { +- char_u new_path[MAXPATHL]; +- char_u *path = ((char_u *) block) + 44; +- int scrap = FALSE; +- +- if (block[3] == leaf_ref && leaf_name) +- scrap = TRUE; +- +- switch (get_real_state() & 0xff) +- { +- case INSERT: +- case CMDLINE: +- case CMDLINE+LANGMAP: +- /* For insert mode we can only insert the pathname (currently) +- * Make sure Shift is pressed. +- */ +- swi(OS_Byte, 121, 0x80); /* Is Shift pressed? */ +- if (r1 == 0xff) +- { +- ins_typebuf(" ", REMAP_NONE, 0, TRUE, FALSE); +- ins_typebuf(path, REMAP_NONE, 0, TRUE, FALSE); +- ro_return_early = TRUE; /* Return even though nothing was typed. */ +- } +- else +- swi(Wimp_ReportError, +- "\0\0\0\0Sorry, you can only load text in normal mode", 5, "Vim"); +- break; +- +- case NORMAL: +- ro_return_early = TRUE; /* Return even though nothing was typed. */ +- +- if (scrap) /* Remove <Wimp$Scrap>. Later. */ +- ins_typebuf(":!~remove <Wimp$Scrap>\r", REMAP_NONE, 0, TRUE, FALSE); +- +- /* Insert {:sp ,:confirm e }[+f\ <leaf> ]<file><CR> */ +- ins_typebuf("\r", REMAP_NONE, 0, TRUE, FALSE); +- ins_typebuf(path, REMAP_NONE, 0, TRUE, FALSE); +- ins_typebuf(" ", REMAP_NONE, 0, TRUE, FALSE); +- +- if (scrap) +- { +- /* Loading via !Scrap - change pathname to stored leafname */ +- ins_typebuf(leaf_name, REMAP_NONE, 0, TRUE, FALSE); +- ins_typebuf(" +f\\ ", REMAP_NONE, 0, TRUE, FALSE); +- leaf_ref = 0; +- vim_free(leaf_name); +- leaf_name = NULL; +- } +- +- swi(OS_Byte, 121, 0x81); /* Is Ctrl pressed? */ +- if (r1 == 0xff) +- /* Yes, split window */ +- ins_typebuf(":sp", REMAP_NONE, 0, TRUE, FALSE); +- else +- ins_typebuf(":confirm e", REMAP_NONE, 0, TRUE, FALSE); +- break; +- +- default: +- swi(Wimp_ReportError, "\0\0\0\0You can only load text in normal mode.", 5, "Vim"); +- } +- /* Send DataSaveAck so other program doesn't think we died +- * and delete <Wimp$Scrap>. +- */ +- block[3] = block[2]; +- block[4] = 4; +- swi(Wimp_SendMessage, 17, block, block[1]); +- } +- +- void +- ro_datasave(block) +- int *block; +- { +- char_u *path = ((char_u *) block) + 44; +- +- /* Preserve the name given so we can use it, not <Wimp$Scrap> */ +- if (leaf_name) +- vim_free(leaf_name); +- leaf_name = vim_strsave(path); +- +- block[9] = -1; /* File is unsafe. */ +- strcpy(path, "<Wimp$Scrap>"); +- block[0] = 60; +- block[3] = block[2]; +- block[4] = 2; +- swi(Wimp_SendMessage, 17, block, block[1]); +- +- leaf_ref = block[2]; +- } +- +- void +- ro_message(block) +- int *block; +- { +- char_u *buffer; +- long_u len; +- +- if (block[1] == task_handle) +- return; /* Don't talk to ourself! */ +- switch (block[4]) +- { +- case 0: /* Quit. */ +- if (block[4] == 0) +- ro_quit(); +- break; +- case 1: /* DataSave */ +- ro_datasave(block); +- break; +- case 2: /* DataSaveAck. */ +- if (clip_convert_selection(&buffer, &len, &clip_star) == -1) +- return; +- +- /* Save the clipboard contents to a file. */ +- swi(OS_File, 10, ((char_u *) block) + 44, 0xfff, 0, buffer, buffer + len); +- +- /* Ack with DataLoad message. */ +- block[3] = block[2]; +- block[4] = 3; +- block[9] = len; +- swi(Wimp_SendMessage, 17, block, block[1]); +- +- vim_free(buffer); +- break; +- case 3: /* DataLoad */ +- ro_dataload(block); +- break; +- case 8: /* PreQuit */ +- ro_prequit(block); +- break; +- case 0xf: /* Lose clipboard. */ +- if (block[5] & 4) +- { +- clip_free_selection(&clip_star); +- clip_star.owned = FALSE; +- } +- break; +- case 0x10: /* DataRequest (clip_star) */ +- if (clip_star.owned) +- { +- int rows; +- +- /* Tell other program that we have the clipboard. */ +- block[0] = 52; +- block[3] = block[2]; /* Copy myref to yourref. */ +- block[4] = 1; /* DataSave message. */ +- /* Create an estimate for the size (larger or same as true +- * value) */ +- rows = clip_star.end.lnum - clip_star.start.lnum; +- if (rows < 0) +- rows = -rows; +- block[9] = (rows + 1) * Columns + 1; /* Add one for possible +- final newline. */ +- block[10] = 0xfff; /* Clipboard is text. */ +- strcpy( ((char_u *) block) + 44, "VimClip"); +- swi(Wimp_SendMessage, 17, block, block[1]); +- } +- break; +- case 0x400c1: /* Mode change */ +- changed_mode = TRUE; /* Flag - update on next OpenWindow */ +- if (zap_redraw) +- { +- /* JK230798, re-initialise ZapRedraw stuff */ +- if (ro_zap_redraw_initialise() == FAIL) +- zap_redraw = FALSE; +- } +- break; +- case 0x400c3: /* TaskCloseDown */ +- if (block[1] == child_handle) +- child_handle = 0; +- break; +- } +- } +- +- /* +- * Converts a scrollbar's window handle into a scrollbar pointer. +- * NULL on failure. +- */ +- scrollbar_T * +- ro_find_sbar(id) +- int id; +- { +- win_T *wp; +- +- if (gui.bottom_sbar.id == id) +- return &gui.bottom_sbar; +- FOR_ALL_WINDOWS(wp) +- { +- if (wp->w_scrollbars[SBAR_LEFT].id == id) +- return &wp->w_scrollbars[SBAR_LEFT]; +- if (wp->w_scrollbars[SBAR_RIGHT].id == id) +- return &wp->w_scrollbars[SBAR_RIGHT]; +- } +- return NULL; +- } +- +- void +- scroll_to(line, sb) +- int sb; /* Scrollbar number */ +- int line; +- { +- char_u code[8]; +- +- /* Don't put events in the input queue now. */ +- if (hold_gui_events) +- return; +- +- /* Send a scroll event: +- * +- * A scrollbar event is CSI (NOT K_SPECIAL), KS_VER_SCROLLBAR, +- * KE_FILLER followed by: +- * one byte representing the scrollbar number, and then four bytes +- * representing a long_u which is the new value of the scrollbar. +- */ +- code[0] = CSI; +- code[1] = KS_VER_SCROLLBAR; +- code[2] = KE_FILLER; +- code[3] = sb; +- code[4] = line >> 24; +- code[5] = line >> 16; +- code[6] = line >> 8; +- code[7] = line; +- add_to_input_buf(code, 8); +- } +- +- void +- h_scroll_to(col) +- int col; +- { +- char_u code[8]; +- +- /* Don't put events in the input queue now. */ +- if (hold_gui_events) +- return; +- +- /* Send a scroll event: +- * +- * A scrollbar event is CSI (NOT K_SPECIAL) +- * +- * A horizontal scrollbar event is K_SPECIAL, KS_HOR_SCROLLBAR, +- * KE_FILLER followed by four bytes representing a long_u which is the +- * new value of the scrollbar. +- */ +- code[0] = CSI; +- code[1] = KS_HOR_SCROLLBAR; +- code[2] = KE_FILLER; +- code[4] = col >> 24; +- code[5] = col >> 16; +- code[6] = col >> 8; +- code[7] = col; +- add_to_input_buf(code, 8); +- } +- +- void +- ro_scroll(block) +- int *block; +- { +- scrollbar_T *sb; +- int offset; +- win_T *wp; +- +- /* Block is ready for Wimp_OpenWindow, and also contains: +- * +- * +32 = scroll X direction (-2 .. +2) +- * +36 = scroll Y direction (-2 .. +2) +- */ +- +- sb = ro_find_sbar(block[0]); +- if (!sb) +- return; /* Window not found (error). */ +- +- wp = sb-> wp; +- +- if (wp == NULL) +- { +- /* Horizontal bar. */ +- offset = block[8]; +- if (offset == -2) +- offset = (block[1] - block[3]) / gui.char_width; +- else if (offset == 2) +- offset = (block[3] - block[1]) / gui.char_width; +- +- block[5] += offset * gui.char_width; +- +- gui_drag_scrollbar(sb, block[5] / gui.char_width, FALSE); +- +- swi(Wimp_OpenWindow, 0, block); +- } +- else +- { +- offset = -block[9]; +- if (offset == -2) +- offset = -(wp -> w_height - 1); +- else if (offset == 2) +- offset = wp -> w_height - 1; +- +- /* Possibly we should reposition the scrollbar? +- * Vim seems to update the bar anyway... +- */ +- gui_drag_scrollbar(sb, offset - (block[6] / gui.char_height), FALSE); +- } +- } +- +- /* Move a window by a given offset. Used to simulate the function of the +- * nested wimp. +- */ +- void +- ro_move_child(window, x, y, pos_wanted, pos_got) +- int window; +- int x,y; /* offset to move by */ +- int pos_wanted, pos_got; +- { +- int block[10]; +- +- block[0] = window; +- swi(Wimp_GetWindowState, 0, block); +- block[1] += x; +- block[2] += y; +- block[3] += x; +- block[4] += y; +- if (pos_wanted == -1) +- block[7] = -1; +- else if (pos_wanted == -2) +- block[7] = pos_got; +- swi(Wimp_OpenWindow, 0, block); +- } +- +- /* Open the main window. Also updates scrollbars if we are not +- * using the nested Wimp. +- * If we have just changed mode then re-read all values. +- */ +- void +- ro_open_main(block) +- int *block; +- { +- int toggle_size; +- +- /* Find out if the user clicked on the toggle size icon. */ +- block[20] = block[0]; +- swi(Wimp_GetWindowState, 0, block + 20); +- toggle_size = block[28] & (1 << 19); +- +- if (nested_wimp) +- { +- swi(Wimp_OpenWindow, 0, block); +- } +- else +- { +- int old[10]; +- int x_offset, y_offset; /* Move children same as parent. */ +- int pos_wanted, pos_got; +- int left_bar = gui.which_scrollbars[SBAR_LEFT]; +- int right_bar = gui.which_scrollbars[SBAR_RIGHT]; +- win_T *wp; +- +- /* Three cases to think about: +- * 1) Move to top. Open each window at the top. +- * 2) Same stack position. Open each with same position. +- * 3) Open at bottom. Open children with parent's new position. +- */ +- +- old[0] = block[0]; +- swi(Wimp_GetWindowState, 0, old); +- pos_wanted = block[7]; +- swi(Wimp_OpenWindow, 0, block); +- /* Block updated by OpenWindow? I don't think so! */ +- swi(Wimp_GetWindowState, 0, block); +- pos_got = block[7]; +- +- x_offset = block[1] - old[1]; +- y_offset = block[4] - old[4]; +- if (x_offset || y_offset || pos_wanted == -1 || pos_wanted == -2) +- { +- /* If parent has moved, re-open all the child windows. */ +- FOR_ALL_WINDOWS(wp) +- { +- /* Reopen scrollbars for this window. */ +- if (left_bar) +- ro_move_child(wp -> w_scrollbars[SBAR_LEFT].id, +- x_offset, y_offset, +- pos_wanted, pos_got); +- if (right_bar) +- ro_move_child(wp -> w_scrollbars[SBAR_RIGHT].id, +- x_offset, y_offset, +- pos_wanted, pos_got); +- } +- } +- } +- if (changed_mode || toggle_size) +- { +- int width, height; +- +- if (changed_mode) +- ro_measure_tools(); +- block[0] = gui.window_handle; +- swi(Wimp_GetWindowState, 0, block); +- +- width = block[3] - block[1]; +- height = block[4] - block[2]; +- swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0); +- gui_resize_shell(width, height); +- changed_mode = FALSE; +- } +- } +- +- void +- ro_open_window(block) +- int *block; +- { +- int pos; +- scrollbar_T *sb; +- +- if (block[0] == gui.window_handle) +- ro_open_main(block); +- else +- { +- swi(Wimp_OpenWindow, 0, block); +- if (block[0] != gui.window_handle) +- { +- sb = ro_find_sbar(block[0]); +- if (sb) +- { +- if (sb-> wp != NULL) +- gui_drag_scrollbar(sb, -block[6] / gui.char_height, FALSE); +- else +- gui_drag_scrollbar(sb, block[5] / gui.char_width, FALSE); +- } +- } +- } +- } +- +- void +- ro_menu_selection(block) +- int *block; +- { +- int *item = wimp_menu + 7; +- vimmenu_T *menu; +- /* wimp_menu points to a wimp menu structure */ +- +- for (;;) +- { +- while (block[0]--) +- item += 6; +- if (block[1] == -1) +- break; +- item = ((int *) item[1]) + 7; +- block++; +- } +- /* item points to the wimp menu item structure chosen */ +- menu = (vimmenu_T *) item[5]; +- +- swi(Wimp_GetPointerInfo, 0, block); +- if (block[2] == 1) +- /* Adjust used - keep menu open */ +- swi(Wimp_CreateMenu, 0, wimp_menu); +- +- if (menu-> cb) +- menu-> cb(menu); +- } +- +- void +- ro_open_parent() +- { +- int head; +- char_u *i = curbuf-> b_ffname; +- char_u buffer[256]; +- +- head = 0; +- for (; *i; i++) +- { +- if (*i == '.') +- head = i - curbuf-> b_ffname; +- } +- +- /* Append head chars to buffer */ +- if (head < 240 && curbuf-> b_ffname && head) +- { +- strcpy(buffer, "%filer_opendir "); +- strncpy(buffer + 15, curbuf-> b_ffname, head); +- buffer[15 + head] = '\0'; +- swi(OS_CLI, buffer); +- } +- } +- +- void +- process_event(event, block) +- int event; +- int *block; +- { +- switch (event) +- { +- case 0: /* Nothing - update drag state. */ +- if (ro_dragging) +- ro_continue_drag(block); +- break; +- case 1: /* Redraw window. */ +- redraw_window(block); +- break; +- case 2: /* Open window. */ +- ro_open_window(block); +- break; +- case 3: /* Close window. */ +- swi(Wimp_GetPointerInfo, 0, block + 1); +- if (block[3] == 1) +- ro_open_parent(); +- else +- if (ro_ok_to_quit()) +- ro_quit(); +- break; +- case 6: /* Mouse click. */ +- ro_mouse(block); +- break; +- case 7: /* Finished drag. */ +- ro_drag_finished(block); +- break; +- case 8: /* Key pressed. */ +- ro_insert_key((char_u *) &block[6]); +- break; +- case 9: +- ro_menu_selection(block); +- break; +- case 10: /* Scroll request. */ +- ro_scroll(block); +- break; +- case 11: /* Lose caret. */ +- if (block[0] == gui.window_handle) +- gui_focus_change(FALSE); +- break; +- case 12: /* Gain caret. */ +- if (block[0] == gui.window_handle) +- gui_focus_change(TRUE); +- break; +- case 17: /* User message. */ +- case 18: /* User message recorded. */ +- ro_message(block); +- break; +- } +- } +- +- /* +- * GUI input routine called by gui_wait_for_chars(). Waits for a character +- * from the keyboard. +- * wtime == -1 Wait forever. +- * wtime == 0 This should never happen. +- * wtime > 0 Wait wtime milliseconds for a character. +- * Returns OK if a character was found to be available within the given time, +- * or FAIL otherwise. +- */ +- int +- gui_mch_wait_for_chars(long wtime) +- { +- int block[64]; +- int reason; +- int start_time = -1; +- int ctime = wtime / 10; /* delay in cs */ +- +- if (wtime != -1) +- { +- swi(OS_ReadMonotonicTime); +- start_time = r0; +- } +- +- for (;;) +- { +- if (ro_dragging) +- reason = wimp_poll(0, block); /* Always return immediately */ +- else if (wtime == -1) +- reason = wimp_poll(1, block); +- else +- reason = wimp_pollidle(0, block, start_time + ctime); +- +- process_event(reason, block); +- +- if (input_available() || ro_return_early) +- { +- ro_return_early = FALSE; +- return OK; /* There is something to process (key / menu event) */ +- } +- +- if (wtime != -1) +- { +- swi(OS_ReadMonotonicTime); +- if (r0 - start_time > ctime) +- return FAIL; /* We've been waiting too long - return failure */ +- } +- } +- } +- +- /* Flush any output to the screen */ +- void +- gui_mch_flush(void) +- { +- } +- +- /* +- * Clear a rectangular region of the screen from text pos(row1, col1) to +- * (row2, col2) inclusive. +- */ +- void +- gui_mch_clear_block(int row1, int col1, int row2, int col2) +- { +- swi(ColourTrans_ReturnGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0); +- plot_rectangle(96 + 5, r0, +- FILL_X(col1), -FILL_Y(row2 + 1), +- FILL_X(col2 + 1), -FILL_Y(row1)); +- } +- +- void +- gui_mch_clear_all(void) +- { +- if (redraw_block) +- { +- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0); +- swi(OS_WriteI + 16); +- } +- else +- { +- int block[44]; +- block[0] = gui.window_handle; +- block[1] = 0; +- block[2] = -gui.num_rows * gui.char_height; +- block[3] = gui.num_cols * gui.char_width; +- block[4] = 0; +- swi(Wimp_UpdateWindow, 0, block); +- while (r0) +- { +- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0); +- swi(OS_WriteI + 16); +- swi(Wimp_GetRectangle, 0, block); +- } +- } +- } +- +- /* +- * Delete the given number of lines from the given row, scrolling up any +- * text further down within the scroll region. +- */ +- void +- gui_mch_delete_lines(int row, int num_lines) +- { +- int top_from = -row - num_lines; +- int bot_from = -gui.scroll_region_bot - 1; +- int bot_to = bot_from + num_lines; +- +- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 0x80, 0); +- +- /* Changed without checking! */ +- swi(Wimp_BlockCopy, gui.window_handle, +- gui.scroll_region_left * gui.char_width, +- bot_from * gui.char_height, +- (gui.scroll_region_right - gui.scroll_region_left +- + 1) * gui.char_width, +- top_from * gui.char_height, +- +- gui.scroll_region_left * gui.char_width, +- bot_to * gui.char_height); +- +- gui_clear_block(gui.scroll_region_bot - num_lines + 1, +- gui.scroll_region_left, +- gui.scroll_region_bot, gui.scroll_region_right); +- } +- +- /* +- * Insert the given number of lines before the given row, scrolling down any +- * following text within the scroll region. +- */ +- void +- gui_mch_insert_lines(int row, int num_lines) +- { +- int top_from = -row; +- int bot_to = -gui.scroll_region_bot - 1; +- int bot_from = bot_to + num_lines; +- +- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 0x80, 0); +- +- swi(Wimp_BlockCopy, gui.window_handle, +- gui.scroll_region_left * gui.char_width, +- bot_from * gui.char_height, +- (gui.scroll_region_right - gui.scroll_region_left +- + 1) * gui.char_width, +- top_from * gui.char_height, +- +- gui.scroll_region_left * gui.char_width, +- bot_to * gui.char_height); +- +- gui_clear_block(row, gui.scroll_region_left, +- row + num_lines - 1, gui.scroll_region_right); +- } +- +- /* Put selection in clipboard buffer. +- * Should we become the new owner? +- */ +- void +- clip_mch_request_selection(VimClipboard *cbd) +- { +- int block[64]; /* Will be used in Wimp_Poll. */ +- int reason; +- char_u *buffer; +- long_u length; +- +- block[0] = 48; /* Size of block. */ +- block[3] = 0; /* Original message. */ +- block[4] = 0x10; /* Data request. */ +- block[5] = gui.window_handle; +- block[6] = RO_LOAD_CLIPBOARD; /* Internal handle. */ +- block[7] = block[8] = 0; /* (x,y) not used. */ +- block[9] = 4; +- block[10] = 0xfff; /* We want text files if possible, I think. */ +- block[11] = -1; /* End of list. */ +- swi(Wimp_SendMessage, 17, block, 0); /* Broadcast request. */ +- +- /* OK, we've sent the request. Poll until we get a null poll (failure) or +- * we load the clipboard. +- * If we receive a DataSave event with icon handle = -2 then put it on the +- * clipboard. RISC OS should ensure that key events will not be delivered +- * until the clipboard operation completes (unless the owner starts idling +- * - we can't wait forever!). +- */ +- for (;;) +- { +- reason = wimp_poll(0, block); +- if (reason == 0) +- return; /* Failed to get clipboard. */ +- if ((reason == 17 || reason == 18) && +- block[4] == 1 && block[6] == RO_LOAD_CLIPBOARD) +- break; /* Got it - stop waiting. */ +- process_event(reason, block); +- if (ro_return_early) +- return; +- } +- /* Tell owner to save data in <Wimp$Scrap>. */ +- block[0] = 60; +- block[3] = block[2]; /* Copy myref -> yourref */ +- block[4] = 2; /* DataSaveAck. */ +- block[9] = -1; /* Data is unsafe. */ +- strcpy( ((char_u *) block) + 44, "<Wimp$Scrap>"); +- swi(Wimp_SendMessage, 17, block, block[1]); +- +- /* Wait again for reply. */ +- for (;;) +- { +- reason = wimp_poll(0, block); +- if (reason == 0) +- return; /* Other program has given up! */ +- if ((reason == 17 || reason == 18) && block[4] == 3 && block[6] == RO_LOAD_CLIPBOARD) +- break; /* Clipboard data saved to <Wimp$Scrap> */ +- process_event(reason, block); +- if (ro_return_early) +- return; +- } +- +- /* <Wimp$Scrap> contains clipboard - load it. */ +- if (xswi(OS_File, 17, "<Wimp$Scrap>") & v_flag) +- return; /* Error! */ +- if (r0 != 1 && r0 != 3) +- return; +- length = r4; +- +- buffer = lalloc(length, TRUE); /* Claim memory (and report errors). */ +- if (buffer == NULL) +- return; +- +- if (xswi(OS_File, 16, "<Wimp$Scrap>", buffer, 0) & v_flag) +- return; +- +- clip_yank_selection(MCHAR, buffer, length, cbd); +- +- vim_free(buffer); +- +- swi(OS_FSControl, 27, "<Wimp$Scrap>", 0, 0); /* Delete temp file. */ +- +- block[4] = 4; /* Send DataLoadAck. */ +- block[3] = block[2]; /* Copy myref -> yourref. */ +- swi(Wimp_SendMessage, 17, block, block[1]); +- } +- +- /* Not sure what this means under RISC OS. */ +- void +- clip_mch_lose_selection(VimClipboard *cbd) +- { +- } +- +- /* Tell everyone that we now own the clipboard. +- * Return OK if our claim is accepted (always, under RISC OS) +- */ +- int +- clip_mch_own_selection(VimClipboard *cbd) +- { +- int block[6]; +- block[0] = 24; /* Length of block. */ +- block[3] = 0; /* Original message. */ +- block[4] = 0xf; /* ClaimEntity. */ +- block[5] = 0x4; /* Claim clipboard only. */ +- swi(Wimp_SendMessage, 17, block, 0); +- return OK; +- } +- +- /* +- * Send the current selection to the clipboard. Do nothing for X because we +- * will fill in the selection only when requested by another app. Sounds good +- * for RISC OS too. +- */ +- void +- clip_mch_set_selection(VimClipboard *cbd) +- { +- clip_get_selection(cbd); +- } +- +- /* +- * Make a menu either grey or not grey. +- */ +- void +- gui_mch_menu_grey(vimmenu_T *menu, int grey) +- { +- menu-> greyed_out = grey; +- } +- +- /* +- * Make menu item hidden or not hidden +- */ +- void +- gui_mch_menu_hidden(vimmenu_T *menu, int hidden) +- { +- menu-> hidden = hidden; +- } +- +- /* +- * This is called after setting all the menus to grey/hidden or not. +- */ +- void +- gui_mch_draw_menubar(void) +- { +- swi(Wimp_CreateMenu, 0, -1); +- if (wimp_menu != (int *) -1) +- { +- ro_remove_menu(wimp_menu); +- wimp_menu = (int *) -1; +- } +- } +- +- /* Add or remove a scrollbar. Note that this is only called when +- * the scrollbar state is changing. +- * The scroll bar window has already been created. +- * We can't do anything except remove the scroll bar +- * until we know what size to use. +- */ +- void +- gui_mch_enable_scrollbar(sb, flag) +- scrollbar_T *sb; +- int flag; +- { +- if (!flag) +- swi(Wimp_CloseWindow, 0, & (sb->id) ); +- return; +- } +- +- void +- gui_mch_set_blinking(long waittime, long on, long off) +- { +- } +- +- /* +- * Stop the cursor blinking. Show the cursor if it wasn't shown. +- */ +- void +- gui_mch_stop_blink(void) +- { +- } +- +- /* +- * Start the cursor blinking. If it was already blinking, this restarts the +- * waiting time and shows the cursor. +- */ +- void +- gui_mch_start_blink(void) +- { +- } +- +- /* +- * Return the RGB value of a pixel as a long. +- */ +- long_u +- gui_mch_get_rgb(guicolor_T pixel) +- { +- return (long_u)pixel; +- } +- +- void +- gui_mch_set_text_area_pos(int x, int y, int w, int h) +- { +- } +- +- void +- gui_mch_enable_menu(int flag) +- { +- } +- +- void +- gui_mch_set_menu_pos(int x, int y, int w, int h) +- { +- } +- +- void +- gui_mch_add_menu(vimmenu_T *menu, int idx) +- { +- } +- +- void +- gui_mch_add_menu_item(vimmenu_T *menu, int idx) +- { +- } +- +- void +- gui_mch_new_menu_colors(void) +- { +- } +- +- void +- gui_mch_destroy_menu(vimmenu_T *menu) +- { +- } +- +- /* Size of buffer has changed. +- * Add one to max since gui.c subtracts one more than it should! +- */ +- void +- gui_mch_set_scrollbar_thumb(sb, val, size, max) +- scrollbar_T *sb; +- long val; +- long size; +- long max; +- { +- int block[10], width, height; +- +- width = (max + 1) * gui.char_width; +- height = (max + 1 + W_STATUS_HEIGHT(sb->wp)) * gui.char_height; +- +- block[0] = block[3] = 0; +- block[1] = -height + (1 << y_eigen_factor); +- block[2] = width; +- +- swi(Wimp_SetExtent, sb -> id, block); +- +- block[0] = sb -> id; +- swi(Wimp_GetWindowState, 0, block); +- block[5] = val * gui.char_width; +- block[6] = -val * gui.char_height; +- swi(Wimp_OpenWindow, 0, block, 0x4b534154, +- gui.window_handle, /* Parent window handle. */ +- (CHILD_FIX_TO_RIGHT << CHILD_LEFT ) | +- (CHILD_FIX_TO_RIGHT << CHILD_RIGHT ) | +- (CHILD_FIX_TO_BOTTOM << CHILD_TOP ) | +- (CHILD_FIX_TO_BOTTOM << CHILD_BOTTOM) | +- (CHILD_SELF_SCROLL << CHILD_SCROLL_X) | +- (CHILD_SELF_SCROLL << CHILD_SCROLL_Y) +- ); +- } +- +- /* Set the position of the scrollbar within the editor +- * window. Note that, for vertical scrollbars, x and w +- * are ignored. For horizontal bars y and h are ignored. +- */ +- void +- gui_mch_set_scrollbar_pos(sb, x, y, w, h) +- scrollbar_T *sb; +- int x; /* Horizontal sb position */ +- int y; /* Top of scroll bar */ +- int w; /* Width */ +- int h; /* Height */ +- { +- int block[24]; +- int px1, py1; /* Parent window min coords */ +- int px2, py2; /* Parent window max coords */ +- +- /* Find where the parent window is. */ +- block[0] = gui.window_handle; +- swi(Wimp_GetWindowState, 0, block); +- px1 = block[1]; +- py1 = block[2]; +- px2 = block[3]; +- py2 = block[4]; +- +- block[0] = sb -> id; +- +- /* Find out how big the scroll window is at the moment. */ +- swi(Wimp_GetWindowInfo, 0, ((char_u *)block) + 1); +- +- if (block[13] < w || block[12] > -h) +- { +- /* Current window is too small! */ +- if (block[12] > -h) +- block[12] = -h; +- if (block[13] < w) +- block[13] = w; +- swi(Wimp_SetExtent, block[0], block + 11); +- } +- +- /* This works better on the nested_wimp. */ +- if (sb-> wp) +- { +- /* This is a vertical scrollbar. */ +- block[1] = block[3] = px2 - gui.scrollbar_width + (1 << x_eigen_factor); +- block[2] = 1 + py2 - (y + h) + (1 << y_eigen_factor); +- block[4] = 1 + py2 - y; +- } +- else +- { +- /* This is a horizontal scrollbar. */ +- block[2] = block[4] = py1 + gui.scrollbar_height; +- block[1] = px1; +- block[3] = px2 - gui.scrollbar_width; +- } +- +- block[5] = 0; +- block[6] = 0; +- block[7] = -1; +- +- swi(Wimp_OpenWindow, 0, block, 0x4b534154, +- gui.window_handle, /* Parent window handle. */ +- (CHILD_FIX_TO_RIGHT << CHILD_LEFT ) | +- (CHILD_FIX_TO_RIGHT << CHILD_RIGHT ) | +- (CHILD_FIX_TO_BOTTOM << CHILD_TOP ) | +- (CHILD_FIX_TO_BOTTOM << CHILD_BOTTOM) | +- (CHILD_SELF_SCROLL << CHILD_SCROLL_X) | +- (CHILD_SELF_SCROLL << CHILD_SCROLL_Y) +- ); +- } +- +- /* Create a window with no workarea to place inside editor window. +- * (what happens without the nested wimp?) +- * Data for scrollbar is invalid. +- */ +- void +- gui_mch_create_scrollbar(sb, orient) +- scrollbar_T *sb; +- int orient; /* orient is SBAR_HORIZ or SBAR_VERT */ +- { +- int bar[] = +- { +- 0, 0, /* Visible area : min X,Y */ +- 100, 100, /* max X,Y */ +- 0, 0, /* Scroll offsets */ +- -1, /* Window in front */ +- 0x80800150 | (orient == SBAR_HORIZ ? (1 << 30) : (1 << 28)), +- 0xff070207, /* Colours */ +- 0x000c0103, /* More colours */ +- 0, -0x4000, /* Workarea extent */ +- 0x4000, 0, /* max X,Y */ +- 0x00000000, /* No title */ +- 0 << 12, /* No workarea button type */ +- 1, /* Wimp sprite area */ +- 0x00010001, /* Minimum width, height */ +- 0, 0, 0, /* Title data (none) */ +- 0 /* No icons */ +- }; +- swi(Wimp_CreateWindow, 0, bar); +- sb -> id = r0; +- } +- +- #if defined(FEAT_WINDOWS) || defined(PROTO) +- void +- gui_mch_destroy_scrollbar(scrollbar_T *sb) +- { +- swi(Wimp_DeleteWindow, 0, & (sb->id)); +- sb -> id = -1; +- } +- #endif +- +- void +- gui_mch_set_scrollbar_colors(scrollbar_T *sb) +- { +- /* Always use default RO colour scheme. */ +- } +- +- /* +- * Get current mouse coordinates in text window. +- * Note: (0,0) is the bottom left corner, positive y is UP. +- */ +- void +- gui_mch_getmouse(x, y) +- int *x; +- int *y; +- { +- int left; +- int top; +- int block[10]; +- +- block[0] = gui.window_handle; +- swi(Wimp_GetWindowState, 0, block); +- left = block[1]; +- top = block[4]; +- +- swi(Wimp_GetPointerInfo, 0, block); +- *x = block[0] - left; +- *y = top - block[1]; +- } +- +- /* MouseTo(x, y) */ +- void +- gui_mch_setmouse(x, y) +- int x; +- int y; +- { +- } +- +- void +- gui_mch_toggle_tearoffs(enable) +- int enable; +- { +- /* no tearoff menus */ +- } +- +- /* Redraw a window's title. +- * For the nested wimp we use the new 'redraw-title-bar' reason code. +- * For older wimps we mark the area of the screen where the title bar +- * is as invalid. +- */ +- void +- ro_redraw_title(window) +- int window; +- { +- if (nested_wimp) +- { +- swi(Wimp_ForceRedraw, window, 0x4b534154, 3); +- } +- else +- { +- int block[10]; +- int miny; +- +- block[0] = window; +- swi(Wimp_GetWindowState, 0, block); +- miny = block[4]; +- swi(Wimp_GetWindowOutline, 0, block); +- swi(Wimp_ForceRedraw, -1, +- block[1], miny, +- block[3], block[4]); +- } +- } +- +- /* Turn a vimmenu_T structure into a wimp menu structure. +- * -1 if resulting menu is empty. +- * Only the children and dname items in the root menu are used. +- */ +- int * +- ro_build_menu(menu) +- vimmenu_T *menu; +- { +- int *wimp_menu; +- int width = 4; +- int w; +- int size = 28; +- vimmenu_T *item; +- int *wimp_item; +- +- /* Find out how big the menu is so we can allocate memory for it */ +- for (item = menu-> children; item; item = item-> next) +- { +- if (item-> hidden == FALSE && !menu_is_separator(item->name)) +- size += 24; +- } +- +- if (size <= 28) +- return (int *) -1; /* No children - shouldn't happen */ +- +- wimp_menu = (int *) alloc(size); +- +- wimp_menu[0] = (int) menu-> dname; +- wimp_menu[1] = -1; +- wimp_menu[2] = 0; +- wimp_menu[3] = 0x00070207; +- wimp_menu[5] = 44; +- wimp_menu[6] = 0; +- +- wimp_item = wimp_menu + 7; +- +- for (item = menu-> children; item; item = item-> next) +- { +- if (menu_is_separator(item-> name)) +- { +- /* This menu entry is actually a separator. If it is not the first +- * menu entry then mark the previous menu item as needing a dotted +- * line after it. +- */ +- if (wimp_item > wimp_menu + 7) +- wimp_item[-6] |= 0x2; +- } +- else if (item-> hidden == FALSE) +- { +- wimp_item[0] = 0; +- wimp_item[1] = item-> children ? (int) ro_build_menu(item) : -1; +- wimp_item[2] = 0x07009131 | (item-> greyed_out << 22); +- wimp_item[3] = (int) item-> dname; +- wimp_item[4] = -1; +- wimp_item[5] = (int) item; /* Stuff the menu address in this unused space */ +- +- w = strlen(item-> dname) + 1; +- if (w > width) +- width = w; +- wimp_item += 6; +- } +- } +- +- wimp_menu[4] = (width + 2) * 16; +- wimp_menu[7] |= 0x100; /* Menu title is indirected */ +- wimp_item[-6] |= 0x080; /* Last entry in menu */ +- return wimp_menu; +- } +- +- static void +- ro_remove_menu(menu) +- int *menu; +- { +- int *item = menu + 7; +- +- if (menu == NULL || menu == (int *) -1) +- return; +- +- for (;;) +- { +- if (item[1] != -1) +- ro_remove_menu((int *) item[1]); /* Remove sub-menu */ +- if (item[0] & 0x80) +- break; /* This was the last entry */ +- item += 6; +- } +- vim_free(menu); +- } +- +- void +- gui_mch_show_popupmenu(menu) +- vimmenu_T *menu; +- { +- int block[10]; +- +- /* Remove the existing menu, if any */ +- if (wimp_menu != (int *) -1) +- { +- swi(Wimp_CreateMenu, 0, -1); +- ro_remove_menu(wimp_menu); +- wimp_menu = (int *) -1; +- } +- +- wimp_menu = ro_build_menu(menu); +- if (wimp_menu != (int *) -1) +- { +- swi(Wimp_GetPointerInfo, 0, block); +- swi(Wimp_CreateMenu, 0, wimp_menu, block[0] - 64, block[1] + 64); +- } +- } +- +- /* Run a command using the TaskWindow module. +- * If SHELL_FILTER is set then output is not echoed to the screen, +- * If it is not set, then \r is not sent to the output file. +- */ +- int +- gui_mch_call_shell(cmd, options) +- char_u *cmd; +- int options; /* SHELL_FILTER if called by do_filter() */ +- /* SHELL_COOKED if term needs cooked mode */ +- { +- char_u task_cmd[256]; /* Contains *TaskWindow command. */ +- int block[64]; +- int reason; +- char_u *out; +- char_u c; +- int old_msg_col; +- char_u *out_redir; +- int length; +- FILE *out_file = NULL; +- +- out_redir = strstr(cmd, " > "); +- if (out_redir == NULL) +- length = strlen(cmd); /* No redirection. */ +- else +- { +- length = out_redir - cmd; +- out_file = fopen(out_redir + 3, "wb"); +- if (out_file == NULL) +- smsg("WARNING : Can't open file %s for writing\n", out_redir + 3); +- } +- +- if (length > 180) +- { +- if (out_file) +- fclose(out_file); +- return FAIL; /* Command too long. */ +- } +- +- strcpy(task_cmd, "TaskWindow \""); +- strncpy(task_cmd + 12, cmd, length); +- sprintf(task_cmd + 12 + length, +- "\" -task &%08x -ctrl -quit -name \"Vim command\"", +- task_handle); +- +- if (options & SHELL_COOKED) +- settmode(TMODE_COOK); +- +- if (xswi(Wimp_StartTask, task_cmd) & v_flag) +- { +- /* Failed to even start a new task (out of memory?) */ +- settmode(TMODE_RAW); +- if (out_file) +- fclose(out_file); +- return FAIL; +- } +- +- /* Wait for the child process to initialise. */ +- child_handle = 0; +- while (!child_handle) +- { +- reason = wimp_poll(0, block); +- if ((reason == 17 || reason == 18) && block[4] == 0x808c2) +- child_handle = block[1]; +- else +- process_event(reason, block); +- } +- +- /* Block until finished */ +- while (child_handle) +- { +- reason = wimp_poll(1, block); +- if (reason == 3 || (reason == 8 && block[6] == 3)) +- { +- /* Close window request or CTRL-C - kill child task. */ +- block[0] = 20; +- block[3] = 0; +- block[4] = 0x808c4; /* Morite */ +- swi(Wimp_SendMessage, 17, block, child_handle); +- MSG_PUTS(_("\nSending message to terminate child process.\n")); +- continue; +- } +- else if (reason == 8) +- { +- block[0] = 28; +- block[3] = 0; +- block[4] = 0x808c0; /* Input */ +- block[5] = 1; +- /* Block[6] is OK as it is! */ +- swi(Wimp_SendMessage, 17, block, child_handle); +- continue; +- } +- else if (reason == 17 || reason == 18) +- { +- if (block[4] == 0x808c1) +- { +- /* Ack message. */ +- block[3] = block[2]; +- swi(Wimp_SendMessage, 19, block, block[1]); +- out = (char_u *)block + 24; +- old_msg_col = msg_col; +- while (block[5]--) +- { +- c = *out++; +- if (out_file && (c != '\r' || (options & SHELL_FILTER))) +- fputc(c, out_file); +- if ((options & SHELL_FILTER) == 0) +- { +- if (c == 127) +- msg_puts("\b \b"); +- else if (c > 31) +- msg_putchar(c); +- else if (c == 10) +- { +- lines_left = 8; /* Don't do More prompt! */ +- msg_putchar(10); +- } +- } +- } +- /* Flush output to the screen. */ +- windgoto(msg_row, msg_col); +- out_flush(); +- continue; +- } +- } +- process_event(reason, block); +- } +- msg_putchar('\n'); +- settmode(TMODE_RAW); +- if (out_file) +- fclose(out_file); +- return OK; +- } +- +- /* Like strsave(), but stops at any control char */ +- char_u * +- wimp_strsave(str) +- char *str; +- { +- int strlen = 0; +- char_u *retval; +- while (str[strlen] > 31) +- strlen++; +- retval = alloc(strlen + 1); +- if (retval) +- { +- memcpy(retval, str, strlen); +- retval[strlen] = '\0'; +- } +- return retval; +- } +- +- /* If we are saving then pop up a standard RISC OS save box. +- * Otherwise, open a directory viewer on the given directory (and return NULL) +- * The string we return will be freed later. +- */ +- char_u * +- gui_mch_browse(saving, title, dflt, ext, initdir, filter) +- int saving; /* write action */ +- char_u *title; /* title for the window */ +- char_u *dflt; /* default file name */ +- char_u *ext; /* extension added */ +- char_u *initdir; /* initial directory, NULL for current dir */ +- char_u *filter; /* file name filter */ +- { +- char command[256]; +- int length; +- +- if (saving) +- { +- int block[64]; +- int reason; +- int done_save = FALSE; +- char_u *retval = NULL; +- char_u *sprname; +- char_u *fname; +- int dragging_icon = FALSE; +- int filetype; +- +- if (!dflt) +- dflt = "TextFile"; +- +- block[0] = save_window; +- block[1] = 0; +- swi(Wimp_GetIconState, 0, block); +- sprname = ((char_u *) block[7]); +- block[1] = 1; +- swi(Wimp_GetIconState, 0, block); +- fname = ((char *) block[7]); +- strncpy(fname, dflt, 255); +- +- if (xswi(OS_FSControl, 31, curbuf->b_p_oft) & v_flag) +- { +- filetype = 0xfff; +- strcpy(sprname + 5, "xxx"); +- } +- else +- { +- filetype = r2; +- sprintf(sprname + 5, "%03x", filetype); +- } +- +- /* Open the save box */ +- +- swi(Wimp_GetPointerInfo, 0, block); +- swi(Wimp_CreateMenu, 0, save_window, block[0] - 64, block[1] + 64); +- swi(Wimp_SetCaretPosition, save_window, 1, 0, 0, -1, -1); +- +- while (!done_save) +- { +- reason = wimp_poll(1, block); +- switch (reason) +- { +- case 1: +- redraw_window(block); +- break; +- case 2: +- if (block[0] == save_window) +- swi(Wimp_OpenWindow, 0, block); +- else +- ro_open_window(block); +- break; +- case 3: +- done_save = TRUE; +- break; +- case 6: +- if (block[3] != save_window) +- done_save = TRUE; +- else +- { +- int drag_box[4]; +- int min_x, max_y; +- +- switch (block[4]) +- { +- case 0: /* Start drag */ +- block[0] = save_window; +- swi(Wimp_GetWindowState, 0, block); +- min_x = block[1]; +- max_y = block[4]; +- block[1] = 0; +- swi(Wimp_GetIconState, 0, block); +- drag_box[0] = block[2] + min_x; +- drag_box[1] = block[3] + max_y; +- drag_box[2] = block[4] + min_x; +- drag_box[3] = block[5] + max_y; +- +- swi(DragASprite_Start, +- 0x45, +- 1, +- sprname, +- drag_box); +- dragging_icon = TRUE; +- break; +- case 2: /* OK */ +- retval = wimp_strsave(fname); +- done_save = TRUE; +- break; +- case 3: /* Cancel */ +- done_save = TRUE; +- break; +- } +- } +- break; +- case 7: +- if (dragging_icon) +- { +- int len = 0; +- +- dragging_icon = FALSE; +- swi(Wimp_GetPointerInfo, 0, block); +- block[5] = block[3]; +- block[6] = block[4]; +- block[7] = block[0]; +- block[8] = block[1]; +- block[9] = 0; /* Don't know the size */ +- block[10] = filetype; +- +- while (fname[len] > 31) +- { +- if (fname[len] == '.') +- { +- fname += len + 1; +- len = 0; +- } +- else +- len++; +- } +- if (len > 211) +- len = 211; +- +- memcpy(((char_u *) block) + 44, fname, len); +- ((char_u *)block)[44 + len] = '\0'; +- +- block[0] = (len + 48) & 0xfc; +- block[3] = 0; +- block[4] = 1; /* DataSave */ +- +- swi(Wimp_SendMessage, 17, block, block[5], block[6]); +- } +- else +- ro_drag_finished(block); +- break; +- case 8: +- if (block[6] == 13) +- { +- retval = wimp_strsave(fname); +- done_save = TRUE; +- } +- else if (block[6] == 0x1b) +- done_save = TRUE; +- else +- swi(Wimp_ProcessKey, block[6]); +- break; +- case 17: +- case 18: +- if (block[4] == 2 && block[9] != -1) +- { +- /* DataSaveAck from dragging icon. */ +- retval = wimp_strsave(((char_u *) block) + 44); +- done_save = TRUE; +- } +- else if (block[4] == 0x400c9) +- { +- /* MenusDeleted */ +- done_save = TRUE; +- } +- else +- ro_message(block); +- break; +- } +- } +- block[0] = save_window; +- swi(Wimp_CloseWindow, 0, block); +- swi(Wimp_GetCaretPosition, 0, block); +- if (block[0] == -1) +- swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1); +- +- return retval; +- } +- else if (initdir) +- { +- /* Open a directory viewer */ +- length = strlen(initdir); +- +- if (length > 240) +- return NULL; /* Path too long! */ +- +- length = sprintf(command, "Filer_OpenDir %s", initdir); +- while (command[length - 1] == '.') +- length--; +- command[length] = '\0'; +- swi(OS_CLI, command); +- } +- return NULL; +- } +--- 0 ---- +*** ../vim-7.3.186/src/os_riscos.c 2010-08-15 21:57:27.000000000 +0200 +--- src/os_riscos.c 1970-01-01 01:00:00.000000000 +0100 +*************** +*** 1,1292 **** +- /* vi:set ts=8 sts=4 sw=4: +- * +- * VIM - Vi IMproved by Bram Moolenaar +- * +- * Do ":help uganda" in Vim to read copying and usage conditions. +- * Do ":help credits" in Vim to see a list of people who contributed. +- * See README.txt for an overview of the Vim source code. +- */ +- +- #include "vim.h" +- +- /* +- * os_riscos.c +- * +- * Thomas Leonard <tal197@ecs.soton.ac.uk> +- */ +- +- const char *__dynamic_da_name = "Vim heap"; /* Enable and name our dynamic area */ +- int ro_line_mode = TRUE; /* For Ex mode we much echo chars to the screen ourselves */ +- int windowed; /* Flag - are we running inside a text window? */ +- int WinLeft, WinTop; /* We might be started inside a text window */ +- int ScrollTop; /* Make cursor movements relative to ScrollTop. */ +- +- int old_escape_state = -1; +- int old_cursor_state = -1; +- +- #define rgb(r,g,b) ((b<<24) + (g<<16) + (r<<8)) +- #define NORMAL_FG 0x00000000 +- #define NORMAL_BG 0xffffffff +- +- /* Convert a DOS colour number to an RGB palette entry. +- * Mappings from X11 rgb/txt file. +- */ +- static int +- map_colour(dos) +- int dos; /* Standard DOS colour number. */ +- { +- switch (dos) +- { +- case 0: return 0; /* Black */ +- case 1: return rgb(0,0,139); /* DarkBlue */ +- case 2: return rgb(0,100,0); /* DarkGreen */ +- case 3: return rgb(0,139,139); /* DarkCyan */ +- case 4: return rgb(139,0,0); /* DarkRed */ +- case 5: return rgb(139,0,139); /* DarkMagenta */ +- case 6: return rgb(165,42,42); /* Brown, DarkYellow */ +- case 7: return rgb(211,211,211); /* LightGray, LightGrey, Gray, Grey */ +- case 8: return rgb(169,169,169); /* DarkGray, DarkGrey */ +- case 9: return rgb(173,216,230); /* Blue, LightBlue */ +- case 10: return rgb(144,238,144); /* Green, LightGreen */ +- case 11: return rgb(224,255,255); /* Cyan, LightCyan */ +- case 12: return rgb(255,0,0); /* Red, LightRed */ +- case 13: return rgb(255,0,255); /* Magenta, LightMagenta */ +- case 14: return rgb(255,255,0); /* Yellow, LightYellow */ +- case 15: return rgb(255,255,255); /* White */ +- } +- return rgb(100,100,100); +- } +- +- static void +- text_fg(fg) +- int fg; /* Foregound colour in the form &BBGGRR00 */ +- { +- xswi(ColourTrans_SetTextColour, fg, 0, 0, 0); +- } +- +- static void +- text_bg(bg) +- int bg; /* Backgound colour in the form &BBGGRR00 */ +- { +- xswi(ColourTrans_SetTextColour, bg, 0, 0, 1 << 7); +- } +- +- #define OUT_NORMAL 0 +- #define OUT_NUMBER 1 /* Reading in a number */ +- +- void +- mch_write(s, len) +- char_u *s; +- int len; +- { +- static int mode = OUT_NORMAL; +- static int x, y; /* For reading numbers in. */ +- +- if (!term_console) +- { +- /* Maybe we are running Vim remotely - don't interpret chars */ +- while (len--) +- { +- char_u c = *s++; +- swi(OS_WriteC, c); +- /* We might need to send a CR too. This shouldn't +- * hurt if we don't need it, should it? +- */ +- if (c == 10) +- swi(OS_WriteI + 13); +- } +- return; +- } +- +- while (len--) +- { +- char_u c = *s++; +- switch (mode) +- { +- case OUT_NUMBER: +- if (c < '0' || c > '9') +- { +- mode = OUT_NORMAL; +- } +- else +- { +- x = (x * 10) + c - '0'; +- continue; +- } +- /* note: no break here! */ +- +- case OUT_NORMAL: +- switch (c) +- { +- case 1: +- /* Number (in decimal) follows. */ +- mode = OUT_NUMBER; +- y = x; +- x = 0; +- break; +- case 2: +- /* Position cursor. */ +- swi(OS_WriteI + 31); +- swi(OS_WriteC, x); +- swi(OS_WriteC, y - ScrollTop); +- break; +- case 3: +- /* Set scroll region. */ +- if (x == Rows -1 && y == 0 && !windowed) +- { +- /* Whole screen - remove text window. +- * This is MUCH faster. +- */ +- swi(OS_WriteI + 26); +- } +- else +- { +- /* Create a text window. */ +- swi(OS_WriteI + 28); +- swi(OS_WriteC, WinLeft); +- swi(OS_WriteC, WinTop + x); +- swi(OS_WriteC, WinLeft + Columns - 1); +- swi(OS_WriteC, WinTop + y); +- } +- ScrollTop = y; +- break; +- case 4: +- /* Normal mode. */ +- text_fg(NORMAL_FG); +- text_bg(NORMAL_BG); +- break; +- case 5: +- /* Reverse mode. */ +- text_fg(NORMAL_BG); +- text_bg(NORMAL_FG); +- break; +- case 10: +- swi(OS_NewLine); +- break; +- case 14: +- /* Cursor invisible. */ +- swi(OS_WriteN, +- "\027\001\000\000\000\000\000\000\000\000", +- 10); +- break; +- case 15: +- /* Cursor visible. */ +- swi(OS_WriteN, +- "\027\001\002\000\000\000\000\000\000\000", +- 10); +- break; +- case 16: +- /* Cursor very visible (flash) */ +- swi(OS_WriteN, +- "\027\001\003\000\000\000\000\000\000\000", +- 10); +- case 17: +- /* Set foreground colour. */ +- text_fg(map_colour(x)); +- break; +- case 18: +- /* Set background colour. */ +- text_bg(map_colour(x)); +- break; +- case 19: +- /* Scroll text down. */ +- swi(OS_WriteN, +- "\027\007\000\002\000\000\000\000\000\000", +- 10); +- break; +- default: +- swi(OS_WriteC, c); +- } +- continue; +- +- default: +- printf("[output error]"); +- mode = OUT_NORMAL; +- } +- } +- } +- +- /* +- * mch_inchar(): low level input funcion. +- * Get a characters from the keyboard. +- * Return the number of characters that are available. +- * If wtime == 0 do not wait for characters. +- * If wtime == n wait n msecs for characters. +- * If wtime == -1 wait forever for characters. +- * +- * TODO: call convert_input() for 'fileencoding' to 'encoding' conversion. +- */ +- int +- mch_inchar(buf, maxlen, wtime, tb_change_cnt) +- char_u *buf; +- int maxlen; +- long wtime; +- int tb_change_cnt; +- { +- int got=0; +- unsigned int start_time = clock(); +- +- if (ro_line_mode) +- { +- /* We're probably in Ex mode - get whole lines at a time. */ +- +- static char_u line_buffer[256]; +- static int remaining_chars = 0; +- static int buf_pos = 0; +- +- /* Do we need to fetch another line? */ +- if (remaining_chars == 0) +- { +- int old_esc_state; +- swi(OS_Byte, 200, 1, 0xfe); +- old_esc_state = r1; +- +- buf_pos = 0; +- if (xswi(OS_ReadLine, line_buffer, 255, 0, 255) & (c_flag | v_flag)) +- { +- got_int = TRUE; /* ESC pressed */ +- r1 = 0; +- } +- line_buffer[r1] = 13; +- remaining_chars = r1 + 1; /* Count CR as part of input */ +- +- swi(OS_Byte, 200, old_esc_state, 0); +- } +- +- /* Can we send the rest of the buffer back in one go? */ +- if (remaining_chars <= maxlen) +- { +- int got = remaining_chars; +- +- memcpy(buf, line_buffer + buf_pos, got); +- remaining_chars = 0; +- return got; +- } +- +- /* Send as much as we can */ +- memcpy(buf, line_buffer + buf_pos, maxlen); +- buf_pos += maxlen; +- remaining_chars -= maxlen; +- +- return maxlen; +- } +- +- if (!term_console) +- { +- /* Use OS_ReadC for all input. +- * Avoids problems with remote access getting interference from +- * the keyboard. +- */ +- if (wtime == 0) +- return 0; /* Ignore quick key checks */ +- +- if (xswi(OS_ReadC) & c_flag) +- { +- got_int = TRUE; /* ESC pressed - can this happen? */ +- swi(OS_Byte, 124); /* Clear Escape state */ +- r0 = 0x1b; /* It *might* not have been Escape! */ +- } +- buf[0] = r0; +- return 1; +- } +- +- /* +- * OK, here's the plan: +- * +- * 1) Wait until wtime expires or we get a key +- * 2) Get keys until the keyboard buffer is empty or buf is full +- */ +- +- while (xswi(OS_Byte,145,0) & c_flag) +- { +- /* Nothing at all in the keyboard buffer. +- * Has our time expired yet? +- */ +- if ( (wtime != -1) && (clock() - start_time) >= wtime ) +- return 0; /* Nothing read - giving up */ +- } +- +- /* We've got one char (in r2) - are there any more? */ +- +- while (got < maxlen) +- { +- buf[got++] = r2; +- +- if (xswi(OS_Byte,145,0) & c_flag) +- return got; /* Keyboard buffer empty */ +- } +- return got; /* buf is full */ +- } +- +- /* +- * return non-zero if a character is available +- */ +- int +- mch_char_avail() +- { +- if (!term_console) +- return 0; /* Can't tell */ +- if (xswi(OS_Byte, 152, 0) & c_flag) +- return 0; +- return 1; +- } +- +- /* Find out how much free memory we have. +- * I don't know how to work this out exactly but, since we can claim +- * more memory from the OS, let's just report the free pool size. +- * Dynamic area 6 doesn't exist pre 3.6 according to StrongHelp, so +- * we'll use Wimp_SlotSize. If that fails (outside the desktop?) +- * then just return a big number and hope. +- */ +- long_u +- mch_avail_mem(special) +- int special; +- { +- if (xswi(Wimp_SlotSize, -1, -1) & v_flag) +- return 0x7fffffff; +- return r2; +- } +- +- void +- mch_delay(msec, ignoreinput) +- long msec; +- int ignoreinput; +- { +- int start_time, time_now; +- int csec = msec / 10; +- +- swi(OS_ReadMonotonicTime); +- start_time = r0; +- +- for (;;) +- { +- swi(OS_ReadMonotonicTime); +- time_now = r0; +- if (time_now - start_time > csec) +- return; +- #ifdef FEAT_GUI +- /* In the GUI, allow other programs to run while waiting. */ +- if (gui.in_use) +- gui_mch_wait_for_chars(start_time + csec); +- #endif +- } +- } +- +- /* +- * If the machine has job control, use it to suspend the program, +- * otherwise fake it by starting a new shell. +- */ +- void +- mch_suspend() +- { +- suspend_shell(); +- } +- +- void +- mch_init() +- { +- /* +- * Read window size first. Calls to mch_get_shellsize() will +- * simply return these values in future so that setting the +- * text window (used for scrolling) won't give strange results. +- */ +- +- int buf[7] = {132, 135, 256, 257, 1, 2, -1}; +- +- /* Command windows are no longer forced open, since if we are +- * in the desktop then we'll use the GUI version. +- * Opening a command window here messes up the GUI version startup +- */ +- #ifndef FEAT_GUI +- swi(OS_WriteI); +- #endif +- swi(OS_ReadVduVariables, buf, buf); +- WinLeft = buf[0]; +- WinTop = buf[1]; +- Columns = buf[2]; +- Rows = buf[3] + 1; /* Seems to be one off (VduVars wrong?) */ +- ScrollTop = 0; +- +- /* Are we running in a textwindow? */ +- if (Rows == buf[5] + 1 && Columns == buf[4] + 1) +- windowed = 0; +- else +- windowed = 1; +- +- /* Choose a nice colour scheme. */ +- text_fg(NORMAL_FG); +- text_bg(NORMAL_BG); +- } +- +- /* +- * Check_win checks whether we have an interactive stdout. +- */ +- /* ARGSUSED */ +- int +- mch_check_win(argc, argv) +- int argc; +- char **argv; +- { +- return OK; +- } +- +- /* +- * Return TRUE if the input comes from a terminal, FALSE otherwise. +- */ +- int +- mch_input_isatty() +- { +- if (xswi(OS_ChangeRedirection, -1, -1) & v_flag) +- return TRUE; /* Error - TRUE is probably correct though */ +- if (r0 == 0) +- return TRUE; +- return FALSE; +- } +- +- #ifdef FEAT_TITLE +- int +- mch_can_restore_title() +- { +- return FALSE; +- } +- +- int +- mch_can_restore_icon() +- { +- return FALSE; +- } +- +- +- /* +- * Set the window title and icon. +- */ +- void +- mch_settitle(title, icon) +- char_u *title; +- char_u *icon; +- { +- if (title == NULL) +- title = (char_u *) "<untitled>"; +- #ifdef FEAT_GUI +- if (gui.in_use && strcmp(title, gui.window_title)) +- { +- int length; +- length = strlen(title); +- if (length >= gui.window_title_size) +- length = gui.window_title_size - 1; +- strncpy(gui.window_title, title, length); +- gui.window_title[length] = 0; +- ro_redraw_title(gui.window_handle); +- } +- #endif +- return; +- } +- +- /* +- * Restore the window/icon title. +- * "which" is one of: +- * 1 only restore title +- * 2 only restore icon +- * 3 restore title and icon +- */ +- void +- mch_restore_title(which) +- int which; +- { +- return; +- } +- #endif +- +- /* +- * Insert user name in s[len]. +- * Return OK if a name found. +- */ +- int +- mch_get_user_name(s, len) +- char_u *s; +- int len; +- { +- /* RISC OS doesn't support user names. */ +- *s = NUL; +- return FAIL; +- } +- +- /* +- * Insert host name in s[len]. +- */ +- +- void +- mch_get_host_name(s, len) +- char_u *s; +- int len; +- { +- if (xswi(OS_ReadVarVal, "Machine$Name", s, len, 0, 3) & v_flag) +- { +- /* Variable does not exist (normal operation) */ +- vim_strncpy(s, "(unknown)", len - 1); +- } +- } +- +- /* +- * return process ID +- */ +- long +- mch_get_pid() +- { +- if (xswi(Wimp_ReadSysInfo, 5) & v_flag) +- return 0; +- return r0; +- } +- +- /* +- * Get name of current directory into buffer 'buf' of length 'len' bytes. +- * Return OK for success, FAIL for failure. +- */ +- int +- mch_dirname(buf, len) +- char_u *buf; +- int len; +- { +- if (xswi(OS_FSControl, 37, "@", buf, 0, 0, len) & v_flag) +- return FAIL; +- return OK; +- } +- +- /* +- * Get absolute file name into buffer 'buf' of length 'len' bytes. +- * +- * return FAIL for failure, OK for success +- */ +- int +- mch_FullName(fname, buf, len, force) +- char_u *fname, *buf; +- int len; +- int force; /* Also expand when already absolute path name. +- * Not used under RISC OS. +- */ +- { +- if (xswi(OS_FSControl, 37, fname, buf, 0, 0, len) & v_flag) +- return FAIL; +- return OK; +- } +- +- /* +- * Return TRUE if "fname" does not depend on the current directory. +- */ +- int +- mch_isFullName(fname) +- char_u *fname; +- { +- if (strstr(fname, "::") && strstr(fname,".$.")) +- return TRUE; +- return FALSE; +- } +- +- /* +- * Get file permissions for 'name'. +- * Returns -1 when it doesn't exist. +- */ +- long +- mch_getperm(name) +- char_u *name; +- { +- struct stat statb; +- +- if (stat((char *)name, &statb)) +- return -1; +- return statb.st_mode; +- } +- +- /* +- * set file permission for 'name' to 'perm' +- * +- * return FAIL for failure, OK otherwise +- */ +- int +- mch_setperm(name, perm) +- char_u *name; +- long perm; +- { +- return (chmod((char *)name, (mode_t)perm) == 0 ? OK : FAIL); +- } +- +- /* +- * Set hidden flag for "name". +- */ +- /* ARGSUSED */ +- void +- mch_hide(name) +- char_u *name; +- { +- /* can't hide a file */ +- } +- +- /* +- * return TRUE if "name" is a directory +- * return FALSE if "name" is not a directory +- * return FALSE for error +- */ +- int +- mch_isdir(name) +- char_u *name; +- { +- if (xswi(OS_File, 17, name) & v_flag) +- return FALSE; +- if (r0 == 2 || r0 == 3) +- return TRUE; /* Count image files as directories. */ +- return FALSE; +- } +- +- /* +- * Return 1 if "name" can be executed, 0 if not. +- * Return -1 if unknown. Requires which to work. +- */ +- int +- mch_can_exe(name) +- char_u *name; +- { +- char_u *buf; +- char_u *p; +- int retval; +- +- buf = alloc((unsigned)STRLEN(name) + 7); +- if (buf == NULL) +- return -1; +- sprintf((char *)buf, "which %s", name); +- p = get_cmd_output(buf, NULL, SHELL_SILENT); +- vim_free(buf); +- if (p == NULL) +- return -1; +- /* result can be: "name: Command not found" */ +- retval = (*p != NUL && strstr((char *)p, "not found") == NULL); +- vim_free(p); +- return retval; +- } +- +- /* +- * Check what "name" is: +- * NODE_NORMAL: file or directory (or doesn't exist) +- * NODE_WRITABLE: writable device, socket, fifo, etc. +- * NODE_OTHER: non-writable things +- */ +- int +- mch_nodetype(name) +- char_u *name; +- { +- /* TODO */ +- return NODE_NORMAL; +- } +- +- void +- mch_early_init() +- { +- /* Turn off all the horrible filename munging in UnixLib. */ +- int __riscosify_control = __RISCOSIFY_NO_PROCESS; +- } +- +- void +- mch_exit(r) +- int r; +- { +- settmode(TMODE_COOK); +- exiting = TRUE; +- out_flush(); +- ml_close_all(TRUE); /* remove all memfiles */ +- +- #ifdef FEAT_GUI +- if (gui.in_use) +- gui_exit(r); +- #endif +- swi(OS_NewLine); +- if (old_escape_state != -1) +- swi(OS_Byte, 229, old_escape_state, 0); +- if (old_cursor_state != -1) +- swi(OS_Byte, 4, old_cursor_state); +- exit(r); +- } +- +- void +- mch_settmode(tmode) +- int tmode; /* TMODE_RAW or TMODE_COOK */ +- { +- if (tmode == TMODE_COOK) +- { +- ro_line_mode = TRUE; +- return; +- } +- +- ro_line_mode = FALSE; +- +- if (term_console) +- { +- /* Block cursor. */ +- swi(OS_WriteN, +- "\027\000\012\000\000\000\000\000\000\000", +- 10); +- +- /* Disable the standard cursor key actions. */ +- swi(OS_Byte, 4, 1); +- if (old_cursor_state == -1) +- old_cursor_state = r1; +- } +- +- /* Stop Escape from quitting Vim! */ +- swi(OS_Byte, 229, 1, 0); +- if (old_escape_state == -1) +- old_escape_state = r1; +- } +- +- /* +- * set mouse clicks on or off (only works for xterms) +- */ +- void +- mch_setmouse(on) +- int on; +- { +- } +- +- /* +- * set screen mode, always fails. +- */ +- /* ARGSUSED */ +- int +- mch_screenmode(arg) +- char_u *arg; +- { +- EMSG(_(e_screenmode)); +- return FAIL; +- } +- +- /* +- * Try to get the current window size. +- * Return OK when size could be determined, FAIL otherwise. +- * Simply return results stored by mch_init() if we are the +- * machine's console. If not, we don't know how big the screen is. +- */ +- int +- mch_get_shellsize() +- { +- /* if size changed: screenalloc will allocate new screen buffers */ +- return term_console ? OK : FAIL; +- } +- +- /* +- * Can't change the size. +- * Assume the user knows what he's doing and use the new values. +- */ +- void +- mch_set_shellsize() +- { +- /* Assume the user knows what he's doing and use the new values. */ +- } +- +- /* +- * Rows and/or Columns has changed. +- */ +- void +- mch_new_shellsize() +- { +- /* Nothing to do. */ +- } +- +- int +- mch_call_shell(cmd, options) +- char_u *cmd; +- int options; /* SHELL_*, see vim.h */ +- { +- int retval; +- int tmode = cur_tmode; +- +- if (cmd == NULL) +- cmd = (char_u *) "GOS"; +- +- #ifdef FEAT_GUI +- if (gui.in_use) +- return gui_mch_call_shell(cmd, options); +- #endif +- if (options & SHELL_COOKED) +- settmode(TMODE_COOK); /* set to normal mode */ +- MSG_PUTS("\n"); +- +- /* I don't even want to think about what UnixLib must +- * be doing to allow this to work... +- */ +- retval = system(cmd); +- if (retval && !(options & SHELL_SILENT)) +- EMSG(strerror(EOPSYS)); /* Doesn't seem to set errno? */ +- +- swi(OS_Byte, 229, 1, 0); /* Re-disable escape */ +- if (tmode == TMODE_RAW) +- settmode(TMODE_RAW); /* set to raw mode */ +- return retval ? FAIL : OK; +- } +- +- /* +- * Check for Escape being pressed right now. +- * [ different if !term_console? ] +- */ +- void +- mch_breakcheck() +- { +- if (xswi(OS_Byte, 121, 0xf0) & v_flag) +- return; +- if (r1 == 0xff) +- { +- got_int = TRUE; +- swi(OS_Byte, 15, 1); /* Flush input buffer */ +- } +- } +- +- /* +- * Recursively expand one path component into all matching files and/or +- * directories. +- * "path" has backslashes before chars that are not to be expanded. +- * Return the number of matches found. +- */ +- int +- mch_expandpath(gap, path, flags) +- garray_T *gap; /* Grow array for results. */ +- char_u *path; +- int flags; /* EW_* flags */ +- { +- int got; /* Number of matches. */ +- char_u *pattern; +- +- /* Plan: +- * +- * 1) Get first part of path - no wildcards +- * 2) Get next path element (wildcarded) +- * 3) Get rest of path +- * +- * If (3) is nothing then only the leaf is wildcarded - add to gap +- * Otherwise call recursively for each path in (2), passing (3) +- * +- * This is just the header function. +- */ +- +- /* We must be able to modifiy path, so make a copy */ +- pattern = vim_strsave(path); +- if (pattern == NULL) +- return 0; +- got = expand_section(gap, (char_u *)"", pattern, flags); +- vim_free(pattern); +- return got; +- } +- +- /* +- * expand_section(gap, "$.Dir1.Dir2", "ABBA*.myleaf##") +- * +- * calls expand_section(gap, "$.Dir1.Dir2.ABBA_Gold", "myleaf##") +- * and expand_section(gap, "$.Dir1.Dir2.ABBA_Live", "myleaf##") +- * +- * If rest is just a leaf then all matches are added to gap. +- * +- * Returns number of items added to gap. +- */ +- int +- expand_section(gap, root, rest, flags) +- garray_T *gap; +- char_u *root; /* Non-wildcarded path to search */ +- char_u *rest; /* Wildcarded remainder of path */ +- int flags; /* Add dirs/files/missing objects. */ +- { +- static char_u buf[MAXPATHL]; /* Temporary buffer. */ +- char_u dir[MAXPATHL]; +- int start_element = -1; /* Start of wildcarded element */ +- char_u c; +- int i; +- int got, dir_pos; +- int buflen; /* Chars used in buf[] */ +- int colon = 0; /* Dir ends in ':' */ +- +- buflen = strlen(root); +- STRNCPY(buf, root, buflen); /* Copy root into buffer. */ +- +- /* +- * Find end of nonwildcarded section. +- * Count ':' as a path sep since Vim:Bug* is a valid pathname. +- */ +- +- for (i = 0; c = rest[i]; i++) +- { +- if (c == PATHSEP) +- { +- start_element = i; +- colon = 0; +- } +- if (c == ':') +- { +- start_element = i + 1; +- colon = 1; +- } +- if (c == '#' || c == '*') +- break; +- } +- if (c == 0) +- start_element = i; +- +- /* +- * start_element +> terminator for non-wildcarded section. +- * Transfer this bit into buf. +- */ +- if (buflen + start_element + 4 >= MAXPATHL) +- return 0; /* Buffer full */ +- if (start_element >= 0) +- { +- if (*root && !colon) +- buf[buflen++] = PATHSEP; +- strncpy(buf + buflen, rest, start_element); +- buflen += start_element; +- } +- buf[buflen] = 0; +- +- /* +- * Did we reach the end of the string without hitting any wildcards? +- */ +- if (c == 0) +- { +- /* Yes - add combined path to grow array and return. */ +- addfile(gap, buf, flags); +- return 1; +- } +- +- if (start_element < 0 || !colon) +- start_element++; +- rest += start_element; +- +- /* +- * rest does contain wildcards if we get here. +- * +- * Now : have we reached the leaf names part yet? +- * If so, add all matches (files and dirs) to gap. +- * If not, get next path element and scan all matching directories. +- */ +- +- start_element = -1; +- for (i = 0; rest[i]; i++) +- { +- if (rest[i] == '.') +- { +- start_element = i; +- rest[i] = 0; /* Break string here. */ +- break; +- } +- } +- +- /* If start_element is -1 then we are matching leaf names */ +- +- r3 = 0; /* Number of objs read. */ +- dir_pos = 0; /* Position through directory. */ +- got = 0; /* Files added so far. */ +- while (dir_pos != -1) +- { +- buf[buflen] = 0; +- if (xswi(OS_GBPB, 9, +- buf, /* Directory to scan. */ +- buf + buflen + (1 - colon), /* Buffer for result. */ +- 1, /* Number of objects to read. */ +- dir_pos, /* Search position. */ +- MAXPATHL - 2 - buflen, /* Size of result buffer. */ +- rest) /* Wildcarded leafname. */ +- & v_flag) +- { +- EMSG(r0 + 4); +- r4 = -1; +- } +- dir_pos = r4; /* r4 corrupted by addfile() */ +- if (r3 > 0) +- { +- char_u *path = buf; +- if (buflen == 0) +- path++; /* Don't do '.File' */ +- else if (!colon) +- buf[buflen] = '.'; /* Join path and leaf */ +- +- /* Path -> full path of object found */ +- if (start_element == -1) +- { +- addfile(gap, path, flags); +- got++; +- } +- else +- { +- /* Scan into subdirectories and images; ignore files */ +- swi(OS_File, 17, path); +- if (r0 == 2 || r0 == 3) +- got += expand_section(gap, +- path, +- rest + start_element + 1, +- flags); +- } +- } +- } +- +- /* Restore the dot if we removed it. */ +- if (start_element >= 0) +- rest[start_element] = '.'; +- return got; +- } +- +- /* +- * mch_expand_wildcards() - this code does wild-card pattern matching using +- * the shell. It isn't used under RISC OS. +- * +- * return OK for success, FAIL for error (you may lose some memory) and put +- * an error message in *file. +- * +- * num_pat is number of input patterns +- * pat is array of pointers to input patterns +- * num_file is pointer to number of matched file names +- * file is pointer to array of pointers to matched file names +- */ +- int +- mch_expand_wildcards(num_pat, pat, num_file, file, flags) +- int num_pat; +- char_u **pat; +- int *num_file; +- char_u ***file; +- int flags; /* EW_* flags */ +- { +- /* This doesn't get called unless SPECIAL_WILDCHAR is defined. */ +- return FAIL; +- } +- +- /* +- * Return TRUE if "p" contains wildcards which can be expanded by +- * mch_expandpath(). +- */ +- int +- mch_has_exp_wildcard(p) +- char_u *p; +- { +- if (vim_strpbrk((char_u *)"*#", p)) +- return TRUE; +- return FALSE; +- } +- +- /* Return TRUE if "p" contains wildcards. */ +- int +- mch_has_wildcard(p) +- char_u *p; +- { +- if (vim_strpbrk((char_u *)"*#`", p)) +- return TRUE; +- return FALSE; +- } +- +- int /* see Unix unlink(2) */ +- mch_remove(file) +- char_u *file; /* Name of file to delete. */ +- { +- if (xswi(OS_FSControl, 27, file, 0, 0) & v_flag) +- return EXIT_FAILURE; +- return EXIT_SUCCESS; +- } +- +- /* Try to make existing scripts work without modification. +- * Return a pointer to the new string (freed by caller), or NULL +- * +- * Two main cases: +- * - Absolute : $VIM/syntax/help.vim +- * - Relative : Adfs::4.$.!Vim.Resources.Syntax/help.vim +- */ +- char_u * +- mch_munge_fname(fname) +- char_u *fname; +- { +- char_u c; +- int len; +- char_u *retval; +- +- retval = fname = vim_strsave(fname); +- if (fname == NULL) +- return NULL; +- +- if (strncmp(fname, "$VIM/", 5) == 0) +- { +- strncpy(fname, "Vim:", 4); +- for (fname += 5; c = *fname; fname++) +- { +- if (c == '.') +- break; +- if (c == '/') +- fname[-1] = '.'; +- else +- fname[-1] = c; +- } +- fname[-1] = '\0'; +- } +- else +- { +- /* Check to see if the file exists without modification. */ +- if (xswi(OS_File, 17, fname) & v_flag) +- r0 == 0; /* Invalid filename? */ +- if (r0) +- return retval; +- +- len = strlen(fname); +- if (strcmp(fname + len - 4, ".vim") == 0) +- { +- fname[len - 4] = '\0'; +- for (; c = *fname; fname++) +- { +- if (c == '/') +- *fname = '.'; +- } +- } +- } +- return retval; +- } +- +- /* QuickFix reads munged names from the error file. +- * Correct them. +- */ +- int +- ro_buflist_add(old_name) +- char_u *old_name; /* Name of file found by quickfix */ +- { +- char_u *fname; +- char_u *leaf; /* Pointer to start of leaf in old_name */ +- char_u *ptr; +- char_u c; +- int retval; +- +- if (old_name == NULL) +- return buflist_add(NULL, 0); +- +- /* Copy the name so we can mess around with it. */ +- fname = vim_strsave(old_name); +- if (fname == NULL) +- /* Out of memory - can't modify name */ +- return buflist_add(old_name, 0); +- +- /* Change `dir/main.c' into `dir.c.main' */ +- leaf = fname; +- for (ptr = fname; c = *ptr; ptr++) +- { +- if (c == '/') +- { +- leaf = ptr + 1; +- *ptr = '.'; +- } +- else if (c == '.') +- break; +- } +- if (c == '.') +- { +- /* Change `main.c' into `c.main' +- * | | +- * leaf ptr +- */ +- ptr += old_name - fname; +- *ptr = '\0'; +- sprintf(leaf, +- "%s.%s", +- ptr + 1, +- leaf - fname + old_name); +- } +- +- retval = buflist_add(fname, 0); +- free(fname); +- return retval; +- } +- +- /* Change the current directory. +- * Strip trailing dots to make it easier to use with filename completion. +- * Return 0 for success, -1 for failure. +- */ +- int +- mch_chdir(dir) +- char_u *dir; +- { +- int length; +- int retval; +- char_u *new_dir; +- +- if (p_verbose >= 5) +- { +- verbose_enter(); +- smsg((char_u *)"chdir(%s)", dir); +- verbose_leave(); +- } +- length = strlen(dir); +- if (dir[length - 1] != '.') +- return chdir(dir); /* No trailing dots - nothing to do. */ +- new_dir = vim_strsave(dir); +- if (new_dir == NULL) +- return chdir(dir); /* Can't allocate memory. */ +- +- while (new_dir[--length] == '.') +- new_dir[length] = '\0'; +- +- retval = chdir(new_dir); +- vim_free(new_dir); +- return retval; +- } +- +- /* Examine the named file, and set the 'osfiletype' option +- * (in curbuf) to the file's type. +- */ +- void +- mch_read_filetype(file) +- char_u *file; +- { +- int type; +- char_u type_string[9]; +- int i; +- +- if (xswi(OS_File, 23, file) & v_flag) +- type = 0xfff; /* Default to Text */ +- else +- type = r6; +- +- /* Type is the numerical value - see if we have a textual equivalent */ +- swi(OS_FSControl, 18, 0, type); +- ((int *) type_string)[0] = r2; +- ((int *) type_string)[1] = r3; +- type_string[8] = 0; +- for (i = 0; type_string[i] > ' '; i++) +- ; +- type_string[i] = 0; +- +- set_string_option_direct("osfiletype", -1, type_string, OPT_FREE, 0); +- return; +- } +- +- void +- mch_set_filetype(file, type) +- char_u *file; +- char_u *type; +- { +- if (xswi(OS_FSControl, 31, type) & v_flag) +- { +- EMSG(_("E366: Invalid 'osfiletype' option - using Text")); +- r2 = 0xfff; +- } +- +- swi(OS_File, 18, file, r2); +- } +- +- /* Return TRUE if the file's type matches 'type' +- * RISC OS types always start with '&' +- */ +- int +- mch_check_filetype(fname, type) +- char_u *fname; +- char_u *type; +- { +- int value; +- char *end; +- +- if (*type != '&') +- return FALSE; +- +- value = strtol(type + 1, &end, 16); +- if (*end) +- return FALSE; /* Invalid type (report error?) */ +- +- if (xswi(OS_File, 23, fname) & v_flag) +- return FALSE; /* Invalid filename? */ +- +- return (r0 && r6 == value); +- } +--- 0 ---- +*** ../vim-7.3.186/runtime/doc/os_risc.txt 2010-08-15 21:57:16.000000000 +0200 +--- runtime/doc/os_risc.txt 2011-05-10 16:19:25.000000000 +0200 +*************** +*** 1,322 **** +! *os_risc.txt* For Vim version 7.3. Last change: 2010 Aug 07 + + + VIM REFERENCE MANUAL by Thomas Leonard + + + *riscos* *RISCOS* *RISC-OS* +! This file contains the particularities for the RISC OS version of Vim. + +- The RISC OS port is a completely new port and is not based on the old "archi" +- port. + +- 1. File locations |riscos-locations| +- 2. Filename munging |riscos-munging| +- 3. Command-line use |riscos-commandline| +- 4. Desktop (GUI) use |riscos-gui| +- 5. Remote use (telnet) |riscos-remote| +- 6. Temporary files |riscos-temp-files| +- 7. Interrupting |riscos-interrupt| +- 8. Memory usage |riscos-memory| +- 9. Filetypes |riscos-filetypes| +- 10. The shell |riscos-shell| +- 11. Porting new releases |riscos-porting| +- +- If I've missed anything, email me and I'll try to fix it. In fact, even if I +- haven't missed anything then email me anyway to give me some confidence that it +- actually works! +- +- Thomas Leonard <tal197@ecs.soton.ac.uk> +- +- [these URLs no longer work...] +- Port homepage: http://www.ecs.soton.ac.uk/~tal197/ +- or try: http://www.soton.ac.uk/~tal197/ +- +- ============================================================================== +- *riscos-locations* +- 1. File locations +- +- The Vim executable and shared resource files are all stored inside the !Vim +- application directory. +- +- When !Vim is first seen by the filer, it aliases the *vi and *ex commands to +- run the command-line versions of Vim (see |riscos-commandline|). +- +- !Vim.Resources and !Vim.Resources2 contain the files from the standard Vim +- distribution, but modified slightly to work within the limits of ADFS, plus +- some extra files such as the window templates. +- +- User choices are read from "Choices:*" and are saved to "<Choices$Write>.*". +- If you have the new !Boot structure then these should be set up already. If +- not, set Choices$Path to a list of directories to search when looking for +- user configuration files. Set Choices$Write to the directory you want files +- to be saved into (so your search patterns and marks can be remembered between +- sessions). +- +- ============================================================================== +- *riscos-munging* +- 2. Filename munging +- +- All pathname munging is disabled by default, so Vim should behave like a +- normal RISC OS application now. So, if you want to edit "doc/html" then you +- actually type "*vi doc/html". +- +- The only times munging is done is when: +- +- - Searching included files from C programs, since these are always munged. +- See |[I|. +- Note: make sure you are in the right directory when you use this +- command (i.e. the one with subdirectories "c" and "h"). +- +- - Sourcing files using |:so|. +- Paths starting "$VIM/" are munged like this: +- +- $VIM/syntax/help.vim -> Vim:syntax.help +- +- Also, files ending in ".vim" have their extensions removed, and slashes +- replaced with dots. +- +- Some tag files and script files may have to be edited to work under this port. +- +- ============================================================================== +- *riscos-commandline* +- 3. Command-line use +- +- To use Vim from the command-line use the "*vi" command (or "*ex" for +- |Ex-mode|). +- +- Type "*vi -h" for a list of options. +- +- Running the command-line version of Vim in a large high-color mode may cause +- the scrolling to be very slow. Either change to a mode with fewer colors or +- use the GUI version. +- +- Also, holding down Ctrl will slow it down even more, and Ctrl-Shift will +- freeze it, as usual for text programs. +- +- ============================================================================== +- *riscos-gui* +- 4. Desktop use +- +- Limitations: +- +- - Left scrollbars don't work properly (right and bottom are fine). +- - Doesn't increase scroll speed if it gets behind. +- +- You can resize the window by dragging the lower-right corner, even though +- there is no icon shown there. +- +- You can use the --rows and --columns arguments to specify the initial size of +- the Vim window, like this: > +- +- *Vi -g --rows 20 --columns 80 +- +- The global clipboard is supported, so you can select some text and then +- paste it directly into another application (provided it supports the +- clipboard too). +- +- Clicking Menu now opens a menu like a normal RISC OS program. Hold down Shift +- when clicking Menu to paste (from the global clipboard). +- +- Dragging a file to the window replaces the CURRENT buffer (the one with the +- cursor, NOT the one you dragged to) with the file. +- +- Dragging with Ctrl held down causes a new Vim window to be opened for the +- file (see |:sp|). +- +- Dragging a file in with Shift held down in insert mode inserts the pathname of +- the file. +- +- :browse :w opens a standard RISC OS save box. +- :browse :e opens a directory viewer. +- +- For fonts, you have the choice of the system font, an outline font, the system +- font via ZapRedraw and any of the Zap fonts via ZapRedraw: > +- +- :set guifont= +- < To use the system font via the VDU drivers. Supports +- bold and underline. +- > +- :set guifont=Corpus.Medium +- < Use the named outline font. You can use any font, but +- only monospaced ones like Corpus look right. +- > +- :set guifont=Corpus.Medium:w8:h12:b:i +- < As before, but with size of 8 point by 12 point, and +- in bold italic. +- If only one of width and height is given then that +- value is used for both. If neither is given then 10 +- point is used. +- +- Thanks to John Kortink, Vim can use the ZapRedraw module. Start the font name +- with "!" (or "!!" for double height), like this: > +- +- :set guifont=!! +- < Use the system font, but via ZapRedraw. This gives a +- faster redraw on StrongARM processors, but you can't +- get bold or italic text. Double height. +- > +- :set guifont=!script +- < Uses the named Zap font (a directory in VimFont$Path). +- The redraw is the same speed as for "!!", but you get +- a nicer looking font. +- Only the "man+" and "script" fonts are supplied +- currently, but you can use any of the Zap fonts if +- they are in VimFont$Path. +- Vim will try to load font files "0", "B", "I" and "IB" +- from the named directory. Only "0" (normal style) MUST +- be present. Link files are not currently supported. +- +- Note that when using ZapRedraw the edit bar is drawn in front of the character +- you are on rather than behind it. Also redraw is incorrect for screen modes +- with eigen values of 0. If the font includes control characters then you can +- get Vim to display them by changing the 'isprint' option. +- +- If you find the scrolling is too slow on your machine, try experimenting +- with the 'scrolljump' and 'ttyscroll' options. +- +- In particular, StrongARM users may find that: > +- +- :set ttyscroll=0 +- +- makes scrolling faster in high-color modes. +- +- ============================================================================= +- *riscos-remote* +- 5. Remote use (telnet) +- +- I have included a built-in termcap entry, but you can edit the termcap file to +- allow other codes to be used if you want to use Vim from a remote terminal. +- +- Although I do not have an internet connection to my Acorn, I have managed to +- run Vim in a FreeTerm window using the loopback connection. +- +- It seems to work pretty well now, using "*vi -T ansi". +- +- ============================================================================== +- *riscos-temp-files* +- 6. Temporary files +- +- If Vim crashes then the swap and backup files (if any) will be in the +- directories set with the 'directory' and 'bdir' options. By default the swap +- files are in <Wimp$ScrapDir> (i.e. inside !Scrap) and backups are in the +- directory you were saving to. Vim will allow you to try and recover the file +- when you next try to edit it. +- +- To see a list of swap files, press <F12> and type "*vi -r". +- +- Vim no longer brings up ATTENTION warnings if you try to edit two files with +- the same name in different directories. +- +- However, it also no longer warns if you try to edit the same file twice (with +- two copies of Vim), though you will still be warned when you save that the +- datestamp has changed. +- +- ============================================================================== +- *riscos-interrupt* +- 7. Interrupting +- +- To break out of a looping macro, or similar, hold down Escape in the +- command-line version, or press CTRL-C in the GUI version. +- +- ============================================================================== +- *riscos-memory* +- 8. Memory usage +- +- Vim will use dynamic areas on RISC OS 3.5 or later. If you can use them on +- older machines then edit the !RunTxt and GVim files. I don't know what UnixLib +- does by default on these machines so I'm playing safe. +- +- It doesn't work at all well without dynamic areas, since it can't change its +- memory allocation once running. Hence you should edit "!Vim.GVim" and +- "!Vim.!RunTxt" to choose the best size for you. You probably need at least +- about 1400K. +- +- ============================================================================== +- *riscos-filetypes* +- 9. Filetypes +- +- You can now specify that autocommands are only executed for files of certain +- types. The filetype is given in the form &xxx, when xxx is the filetype. +- +- Filetypes must be specified by number (e.g. &fff for Text). +- +- The system has changed from version 5.3. The new sequence of events is: +- +- - A file is loaded. |'osfiletype'| is set to the RISC OS filetype. +- - Based on the filetype and pathname, Vim will try to set |'filetype'| to the +- Vim-type of the file. +- - Setting this option may load syntax files and perform other actions. +- - Saving the file will give it a filetype of |'osfiletype'|. +- +- Some examples may make this clearer: +- +- Kind of file loaded osfiletype filetype ~ +- C code "c.hellow" Text (&fff) C +- LaTeX document LaTeX (&2a8) TeX +- Draw document DrawFile (&aff) (not changed) +- +- ============================================================================== +- *riscos-shell* +- 10. The shell +- +- - Bangs (!s) are only replaced if they are followed by a space or end-of-line, +- since many pathnames contain them. +- +- - You can prefix the command with "~", which stops any output from being +- displayed. This also means that you don't have to press <Enter> afterwards, +- and stops the screen from being redrawn. {only in the GUI version} +- +- ============================================================================== +- *riscos-porting* +- 11. Porting new releases to RISC OS +- +- Downloading everything you need: +- +- - Get the latest source distribution (see www.vim.org) +- - Get the runtime environment files (e.g. these help files) +- - Get the RISC OS binary distribution (if possible) +- +- +- Unarchiving: +- +- - Create a raFS disk and put the archives on it +- - Un-gzip them +- - Un-tar them (*tar xELf 50 archive/tar) +- +- +- Recompiling the sources: +- +- - Create c, s, and h directories. +- - Put all the header files in "h". \ +- - Put all the C files in "c". | And lose the extensions +- - Put the assembler file ("swis/s") in "s". / +- - Rename all the files in "proto" to "h", like this: +- raFS::VimSrc.source.proto.file/pro +- becomes +- raFS::VimSrc.source.h.file_pro +- - In the files "h.proto" and "c.termlib", search and replace +- .pro" +- with +- _pro.h" +- - Create a simple Makefile if desired and do "*make -k". +- Use "CC = gcc -DRISCOS -DUSE_GUI -O2 -x c" in the Makefile. +- - Save the binary as !Vim.Vim in the binary distribution. +- +- +- Updating the run-time environment: +- +- - Replace old or missing files inside !Vim.Resources with the +- new files. +- - Remove files in "doc" not ending in "/txt", except for "tags". +- - Lose the extensions from the files in "doc". +- - Edit the "doc.tags" file. Remove extensions from the second column: > +- :%s/^\(.[^\t]*\t.*\)\.txt\t/\1\t/ +- - Remove extensions from the syntax files. Split them into two directories +- to avoid the 77 entry limit on old ADFS filesystems. +- - Edit "Vim:FileType" to match "*.c.*" as well as "*/c" and so on. +- Add filetype checking too. +- - Edit "Vim:Menu" and remove all the keys from the menus: > +- :%s/<Tab>[^ \t]*// +- < + vim:tw=78:ts=8:ft=help:norl: +--- 1,12 ---- +! *os_risc.txt* For Vim version 7.3. Last change: 2011 May 10 + + + VIM REFERENCE MANUAL by Thomas Leonard + + + *riscos* *RISCOS* *RISC-OS* +! The RISC OS support has been removed from Vim with patch 7.3.187. +! If you would like to use Vim on RISC OS get the files from before that patch. + + + vim:tw=78:ts=8:ft=help:norl: +*** ../vim-7.3.186/src/version.c 2011-05-10 16:12:40.000000000 +0200 +--- src/version.c 2011-05-10 16:37:20.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 187, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +81. At social functions you introduce your husband as "my domain server." + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.188 b/source/ap/vim/patches/7.3.188 new file mode 100644 index 00000000..f5845430 --- /dev/null +++ b/source/ap/vim/patches/7.3.188 @@ -0,0 +1,184 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.188 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.188 +Problem: More RISC OS files to remove. +Solution: Remove them. Update the file list. +Files: src/proto/gui_riscos.pro, src/proto/os_riscos.pro, Filelist + + +*** ../vim-7.3.187/src/proto/gui_riscos.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/gui_riscos.pro 1970-01-01 01:00:00.000000000 +0100 +*************** +*** 1,66 **** +- /* Prototypes for gui_riscos.c +- * Based on gui_x11_pro.h (10 March 2002 version) +- */ +- void gui_mch_prepare __ARGS((int *argc, char **argv)); +- int gui_mch_init_check __ARGS((void)); +- int gui_mch_init __ARGS((void)); +- void gui_mch_uninit __ARGS((void)); +- void gui_mch_new_colors __ARGS((void)); +- int gui_mch_open __ARGS((void)); +- void gui_init_tooltip_font __ARGS((void)); +- void gui_init_menu_font __ARGS((void));void gui_mch_exit __ARGS((int rc)); +- int gui_mch_get_winpos __ARGS((int *x, int *y)); +- void gui_mch_set_winpos __ARGS((int x, int y)); +- void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height)); +- void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h)); +- int gui_mch_init_font __ARGS((char_u *font_name, int do_fontset)); +- GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing)); +- int gui_mch_adjust_charheight __ARGS((void)); +- void gui_mch_set_font __ARGS((GuiFont font)); +- void gui_mch_set_fontset __ARGS((GuiFontset fontset)); +- void gui_mch_free_font __ARGS((GuiFont font)); +- void gui_mch_free_fontset __ARGS((GuiFontset fontset)); +- GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int giveErrorIfMissing, int fixed_width)); +- guicolor_T gui_mch_get_color __ARGS((char_u *reqname)); +- void gui_mch_set_fg_color __ARGS((guicolor_T color)); +- void gui_mch_set_bg_color __ARGS((guicolor_T color)); +- void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags)); +- int gui_mch_haskey __ARGS((char_u *name)); +- void gui_mch_beep __ARGS((void)); +- void gui_mch_flash __ARGS((int msec)); +- void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc)); +- void gui_mch_iconify __ARGS((void)); +- void gui_mch_set_foreground __ARGS((void)); +- void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color)); +- void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color)); +- void gui_mch_update __ARGS((void)); +- int gui_mch_wait_for_chars __ARGS((long wtime)); +- void gui_mch_flush __ARGS((void)); +- void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2)); +- void gui_mch_clear_all __ARGS((void)); +- void gui_mch_delete_lines __ARGS((int row, int num_lines)); +- void gui_mch_insert_lines __ARGS((int row, int num_lines)); +- void clip_mch_lose_selection __ARGS((VimClipboard *cbd)); +- int clip_mch_own_selection __ARGS((VimClipboard *cbd)); +- void clip_mch_request_selection __ARGS((VimClipboard *cbd)); +- void clip_mch_set_selection __ARGS((VimClipboard *cbd)); +- void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey)); +- void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden)); +- void gui_mch_draw_menubar __ARGS((void)); +- void gui_mch_set_blinking __ARGS((long waittime, long on, long off)); +- void gui_mch_stop_blink __ARGS((void)); +- void gui_mch_start_blink __ARGS((void)); +- void process_event __ARGS((int event, int *block)); +- void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu)); +- long_u gui_mch_get_rgb __ARGS((guicolor_T pixel)); +- void gui_mch_getmouse __ARGS((int *x, int *y)); +- void gui_mch_setmouse __ARGS((int x, int y)); +- void gui_mch_drawsign __ARGS((int row, int col, int typenr)); +- void gui_mch_destroy_sign __ARGS((XImage *sign)); +- void gui_mch_mousehide __ARGS((int hide)); +- void mch_set_mouse_shape __ARGS((int shape)); +- void gui_mch_menu_set_tip __ARGS((vimmenu_T *menu)); +- +- void ro_redraw_title __ARGS((int window)); +- int ro_ok_to_quit __ARGS((void)); +- /* vim: set ft=c : */ +--- 0 ---- +*** ../vim-7.3.187/src/proto/os_riscos.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/os_riscos.pro 1970-01-01 01:00:00.000000000 +0100 +*************** +*** 1,49 **** +- /* os_riscos.c */ +- void mch_write __ARGS((char_u *s, int len)); +- int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt)); +- int mch_char_avail __ARGS((void)); +- long_u mch_avail_mem __ARGS((int special)); +- void mch_delay __ARGS((long msec, int ignoreinput)); +- void mch_suspend __ARGS((void)); +- void mch_init __ARGS((void)); +- int mch_check_win __ARGS((int argc, char **argv)); +- int mch_input_isatty __ARGS((void)); +- int mch_can_restore_title __ARGS((void)); +- int mch_can_restore_icon __ARGS((void)); +- void mch_settitle __ARGS((char_u *title, char_u *icon)); +- void mch_restore_title __ARGS((int which)); +- int mch_get_user_name __ARGS((char_u *s, int len)); +- void mch_get_host_name __ARGS((char_u *s, int len)); +- long mch_get_pid __ARGS((void)); +- int mch_dirname __ARGS((char_u *buf, int len)); +- int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force)); +- int mch_isFullName __ARGS((char_u *fname)); +- long mch_getperm __ARGS((char_u *name)); +- int mch_setperm __ARGS((char_u *name, long perm)); +- void mch_hide __ARGS((char_u *name)); +- int mch_isdir __ARGS((char_u *name)); +- int mch_can_exe __ARGS((char_u *name)); +- int mch_nodetype __ARGS((char_u *name)); +- void mch_early_init __ARGS((void)); +- void mch_exit __ARGS((int r)); +- void mch_settmode __ARGS((int tmode)); +- void mch_setmouse __ARGS((int on)); +- int mch_screenmode __ARGS((char_u *arg)); +- int mch_get_shellsize __ARGS((void)); +- void mch_set_shellsize __ARGS((void)); +- void mch_new_shellsize __ARGS((void)); +- int mch_call_shell __ARGS((char_u *cmd, int options)); +- void mch_breakcheck __ARGS((void)); +- int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags)); +- int expand_section __ARGS((garray_T *gap, char_u *root, char_u *rest, int flags)); +- int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags)); +- int mch_has_exp_wildcard __ARGS((char_u *p)); +- int mch_has_wildcard __ARGS((char_u *p)); +- int mch_remove __ARGS((char_u *file)); +- char_u *mch_munge_fname __ARGS((char_u *fname)); +- int ro_buflist_add __ARGS((char_u *old_name)); +- int mch_chdir __ARGS((char_u *dir)); +- void mch_read_filetype __ARGS((char_u *file)); +- void mch_set_filetype __ARGS((char_u *file, char_u *type)); +- int mch_check_filetype __ARGS((char_u *fname, char_u *type)); +- /* vim: set ft=c : */ +--- 0 ---- +*** ../vim-7.3.187/Filelist 2011-03-22 18:10:34.000000000 +0100 +--- Filelist 2011-05-10 17:19:21.000000000 +0200 +*************** +*** 428,435 **** + README_os390.txt \ + src/Make_mint.mak \ + src/Make_ro.mak \ +- src/gui_riscos.c \ +- src/gui_riscos.h \ + src/if_sniff.c \ + src/infplist.xml \ + src/link.390 \ +--- 428,433 ---- +*************** +*** 437,446 **** + src/os_beos.h \ + src/os_beos.rsrc \ + src/os_mint.h \ +- src/os_riscos.c \ +- src/os_riscos.h \ +- src/proto/gui_riscos.pro \ +- src/proto/os_riscos.pro \ + src/os_vms_fix.com \ + src/toolbar.phi \ + +--- 435,440 ---- +*** ../vim-7.3.187/src/version.c 2011-05-10 16:41:13.000000000 +0200 +--- src/version.c 2011-05-10 17:20:50.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 188, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +83. Batteries in the TV remote now last for months. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.189 b/source/ap/vim/patches/7.3.189 new file mode 100644 index 00000000..f7a9667c --- /dev/null +++ b/source/ap/vim/patches/7.3.189 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.189 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.189 (after 7.3.186) +Problem: Can't build without +clipboard feature. (Christian Ebert) +Solution: Add the missing #ifdef. +Files: src/normal.c + + +*** ../vim-7.3.188/src/normal.c 2011-05-10 16:12:40.000000000 +0200 +--- src/normal.c 2011-05-10 17:25:26.000000000 +0200 +*************** +*** 1204,1212 **** +--- 1204,1215 ---- + #ifdef FEAT_EVAL + { + int regname = 0; ++ + /* Adjust the register according to 'clipboard', so that when + * "unnamed" is present it becomes '*' or '+' instead of '"'. */ ++ # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); ++ # endif + set_reg_var(regname); + } + #endif +*** ../vim-7.3.188/src/version.c 2011-05-10 17:21:34.000000000 +0200 +--- src/version.c 2011-05-10 17:29:21.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 189, + /**/ + +-- +If your nose runs, and your feet smell, you might be upside down. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.190 b/source/ap/vim/patches/7.3.190 new file mode 100644 index 00000000..4adef8ab --- /dev/null +++ b/source/ap/vim/patches/7.3.190 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.190 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.190 +Problem: When there is a "containedin" syntax argument highlighting may be + wrong. (Radek) +Solution: Reset current_next_list. (Ben Schmidt) +Files: src/syntax.c + + +*** ../vim-7.3.189/src/syntax.c 2011-04-11 16:56:29.000000000 +0200 +--- src/syntax.c 2011-05-19 12:02:43.000000000 +0200 +*************** +*** 2566,2571 **** +--- 2566,2574 ---- + #endif + update_si_attr(current_state.ga_len - 1); + ++ /* nextgroup= should not match in the end pattern */ ++ current_next_list = NULL; ++ + /* what matches next may be different now, clear it */ + next_match_idx = 0; + next_match_col = MAXCOL; +*** ../vim-7.3.189/src/version.c 2011-05-10 17:29:28.000000000 +0200 +--- src/version.c 2011-05-19 12:13:28.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 190, + /**/ + +-- +From "know your smileys": + :'-D Laughing so much that they're crying + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.191 b/source/ap/vim/patches/7.3.191 new file mode 100644 index 00000000..14b63cea --- /dev/null +++ b/source/ap/vim/patches/7.3.191 @@ -0,0 +1,526 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.191 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.191 +Problem: Still some RISC OS stuff to remove. +Solution: Remove files and lines. (Hong Xu) + Remove the 'osfiletype' option code. +Files: README_extra.txt, src/Make_ro.mak, src/INSTALL, src/Makefile, + src/buffer.c, src/eval.c, src/feature.h, src/option.c, + src/option.h, src/structs.h, src/version.c, src/pty.c, Filelist + + +*** ../vim-7.3.190/README_extra.txt 2010-08-15 21:57:32.000000000 +0200 +--- README_extra.txt 2011-05-19 12:35:16.000000000 +0200 +*************** +*** 13,21 **** + + src/os_amiga.* Files for the Amiga port. + +- src/gui_riscos.* +- src/os_riscos.* Files for the RISC OS port. +- + src/gui_beos.* + src/os_beos.* Files for the BeOS port. + +--- 13,18 ---- +*** ../vim-7.3.190/src/Make_ro.mak 2010-08-15 21:57:27.000000000 +0200 +--- src/Make_ro.mak 1970-01-01 01:00:00.000000000 +0100 +*************** +*** 1,135 **** +- # +- # Makefile for Vim on RISC OS - Andy Wingate +- # +- +- GCC = gcc -mthrowback +- CFLAGS = -DRISCOS -DFEAT_GUI +- CC = $(GCC) $(CFLAGS) -O2 +- # -DUP_BC_PC_EXTERN for term.c needed as BC defined in termlib.c and term.c +- +- TERMFLAG = -DUP_BC_PC_EXTERN +- +- ASMFLAGS = -throwback -objasm -gcc +- +- OBJS = o.buffer o.charset o.diff o.digraph o.edit o.eval o.ex_cmds o.ex_cmds2 \ +- o.ex_docmd o.ex_eval o.ex_getln o.fileio o.fold o.getchar \ +- o.hardcopy o.hashtab o.main o.mark o.mbyte \ +- o.memfile o.memline o.menu o.message o.misc1 o.misc2 o.move \ +- o.normal o.ops o.option o.popupmnu o.quickfix o.regexp o.screen \ +- o.search \ +- o.spell o.syntax o.tag o.term o.termlib o.ui o.undo o.version \ +- o.window o.os_riscos o.swis o.gui o.gui_riscos +- +- Vim: $(OBJS) +- $(GCC) -o Vim $(OBJS) +- +- install: Vim +- squeeze -v Vim @.!Vim.Vim +- +- clean: +- create o.!fake! 0 +- wipe o.* ~cf +- remove Vim +- +- o.swis: s.swis +- as $(ASMFLAGS) -o o.swis s.swis +- +- # Rules for object files +- +- o.%: c.% +- $(CC) -c $< -o $@ +- +- o.buffer: c.buffer +- +- o.charset: c.charset +- +- o.digraph: c.digraph +- +- o.diff: c.diff +- +- o.edit: c.edit +- +- o.eval: c.eval +- +- o.ex_cmds: c.ex_cmds +- +- o.ex_cmds2: c.ex_cmds2 +- +- o.ex_docmd: c.ex_docmd +- +- o.ex_eval: c.ex_eval +- +- o.ex_getln: c.ex_getln +- +- o.fileio: c.fileio +- +- o.fold: c.fold +- +- o.getchar: c.getchar +- +- o.hardcopy: c.hardcopy +- +- o.hashtab: c.hashtab +- +- o.gui: c.gui +- +- o.gui_riscos: c.gui_riscos +- +- o.main: c.main +- +- o.mark: c.mark +- +- o.mbyte: c.mbyte +- +- o.memfile: c.memfile +- +- o.memline: c.memline +- +- o.menu: c.menu +- +- o.message: c.message +- +- o.misc1: c.misc1 +- +- o.misc2: c.misc2 +- +- o.move: c.move +- +- o.normal: c.normal +- +- o.ops: c.ops +- +- o.option: c.option +- +- o.os_riscos: c.os_riscos +- +- o.pty: c.pty +- +- o.popupmnu: c.popupmnu +- +- o.quickfix: c.quickfix +- +- o.regexp: c.regexp +- +- o.screen: c.screen +- +- o.search: c.search +- +- o.spell: c.spell +- +- o.syntax: c.syntax +- +- o.tag: c.tag +- +- o.term: c.term +- $(CC) $(TERMFLAG) -c c.term -o o.term +- +- o.termlib: c.termlib +- +- o.ui: c.ui +- +- o.undo: c.undo +- +- o.version: c.version +- +- o.window: c.window +--- 0 ---- +*** ../vim-7.3.190/src/INSTALL 2010-08-15 21:57:28.000000000 +0200 +--- src/INSTALL 2011-05-19 12:36:17.000000000 +0200 +*************** +*** 6,14 **** + Contents: + 1. Generic + 2. Unix +! 3. RISC OS +! 4. OS/2 (with EMX 0.9b) +! 5. Atari MiNT + + See INSTALLami.txt for Amiga + See INSTALLmac.txt for Macintosh +--- 6,13 ---- + Contents: + 1. Generic + 2. Unix +! 3. OS/2 (with EMX 0.9b) +! 4. Atari MiNT + + See INSTALLami.txt for Amiga + See INSTALLmac.txt for Macintosh +*************** +*** 174,198 **** + ./configure --without-local-dir + + +! 3. RISC OS +! ============= +! +! Much file renaming is needed before you can compile anything. +! You'll need UnixLib to link against, GCC and GNU make. +! +! I suggest you get the RISC OS binary distribution, which includes the +! Templates file and the loader. +! +! Try here: http://www.ecs.soton.ac.uk/~tal197 +! +! Do +! :help riscos +! +! within the editor for more information, or read the +! ../runtime/doc/os_risc.txt help file. +! +! +! 4. OS/2 + ======= + + Summary: +--- 173,179 ---- + ./configure --without-local-dir + + +! 3. OS/2 + ======= + + Summary: +*************** +*** 237,243 **** + Check ../runtime/doc/os_os2.txt for additional info on running Vim. + + +! 5. Atari MiNT + ============= + + [NOTE: this is quite old, it might not work anymore] +--- 218,224 ---- + Check ../runtime/doc/os_os2.txt for additional info on running Vim. + + +! 4. Atari MiNT + ============= + + [NOTE: this is quite old, it might not work anymore] +*** ../vim-7.3.190/src/Makefile 2011-04-01 13:05:37.000000000 +0200 +--- src/Makefile 2011-05-19 12:37:52.000000000 +0200 +*************** +*** 29,35 **** + # - Uncomment the line "CONF_OPT_X = --without-x" if you have X11 but + # want to disable using X11 libraries. This speeds up starting Vim, + # but the window title will not be set and the X11 selection can not +! # used. + # - Uncomment the line "CONF_OPT_XSMP = --disable-xsmp" if you have the + # X11 Session Management Protocol (XSMP) library (libSM) but do not + # want to use it. +--- 29,35 ---- + # - Uncomment the line "CONF_OPT_X = --without-x" if you have X11 but + # want to disable using X11 libraries. This speeds up starting Vim, + # but the window title will not be set and the X11 selection can not +! # be used. + # - Uncomment the line "CONF_OPT_XSMP = --disable-xsmp" if you have the + # X11 Session Management Protocol (XSMP) library (libSM) but do not + # want to use it. +*************** +*** 730,741 **** + ### USL for Unix Systems Laboratories (SYSV 4.2) + #EXTRA_DEFS = -DUSL + +- ### RISCos on MIPS without X11 +- #EXTRA_DEFS = -DMIPS +- +- ### RISCos on MIPS with X11 +- #EXTRA_LIBS = -lsun +- + ### (6) A/UX 3.1.1 with gcc (Jim Jagielski) + #CC= gcc -D_POSIX_SOURCE + #CFLAGS= -O2 +--- 730,735 ---- +*************** +*** 1633,1639 **** + RSRC_DIR = os_mac_rsrc + + PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \ +! os_mswin.pro os_beos.pro os_vms.pro os_riscos.pro $(PERL_PRO) + + # Default target is making the executable and tools + all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE) +--- 1627,1633 ---- + RSRC_DIR = os_mac_rsrc + + PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \ +! os_mswin.pro os_beos.pro os_vms.pro $(PERL_PRO) + + # Default target is making the executable and tools + all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE) +*** ../vim-7.3.190/src/buffer.c 2011-05-05 17:32:40.000000000 +0200 +--- src/buffer.c 2011-05-19 13:09:25.000000000 +0200 +*************** +*** 1808,1816 **** + #ifdef FEAT_AUTOCMD + clear_string_option(&buf->b_p_ft); + #endif +- #ifdef FEAT_OSFILETYPE +- clear_string_option(&buf->b_p_oft); +- #endif + #ifdef FEAT_CINDENT + clear_string_option(&buf->b_p_cink); + clear_string_option(&buf->b_p_cino); +--- 1808,1813 ---- +*** ../vim-7.3.190/src/eval.c 2011-05-10 16:41:13.000000000 +0200 +--- src/eval.c 2011-05-19 13:09:43.000000000 +0200 +*************** +*** 12076,12084 **** + #ifdef FEAT_OLE + "ole", + #endif +- #ifdef FEAT_OSFILETYPE +- "osfiletype", +- #endif + #ifdef FEAT_PATH_EXTRA + "path_extra", + #endif +--- 12076,12081 ---- +*** ../vim-7.3.190/src/feature.h 2010-08-15 21:57:31.000000000 +0200 +--- src/feature.h 2011-05-19 13:09:56.000000000 +0200 +*************** +*** 506,520 **** + #endif + + /* +- * +osfiletype filetype checking in autocommand patterns. +- * Only on systems that support filetypes (RISC OS). +- */ +- #if 0 +- # define FEAT_OSFILETYPE +- # define DFLT_OFT "Text" +- #endif +- +- /* + * +viminfo reading/writing the viminfo file. Takes about 8Kbyte + * of code. + * VIMINFO_FILE Location of user .viminfo file (should start with $). +--- 506,511 ---- +*** ../vim-7.3.190/src/option.c 2011-04-28 17:24:54.000000000 +0200 +--- src/option.c 2011-05-19 13:11:42.000000000 +0200 +*************** +*** 140,148 **** + #define PV_MOD OPT_BUF(BV_MOD) + #define PV_MPS OPT_BUF(BV_MPS) + #define PV_NF OPT_BUF(BV_NF) +- #ifdef FEAT_OSFILETYPE +- # define PV_OFT OPT_BUF(BV_OFT) +- #endif + #ifdef FEAT_COMPL_FUNC + # define PV_OFU OPT_BUF(BV_OFU) + #endif +--- 140,145 ---- +*************** +*** 337,345 **** + static int p_mod; + static char_u *p_mps; + static char_u *p_nf; +- #ifdef FEAT_OSFILETYPE +- static char_u *p_oft; +- #endif + static int p_pi; + #ifdef FEAT_TEXTOBJ + static char_u *p_qe; +--- 334,339 ---- +*************** +*** 1901,1914 **** + (char_u *)NULL, PV_NONE, + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, + {"osfiletype", "oft", P_STRING|P_ALLOCED|P_VI_DEF, +- #ifdef FEAT_OSFILETYPE +- (char_u *)&p_oft, PV_OFT, +- {(char_u *)DFLT_OFT, (char_u *)0L} +- #else + (char_u *)NULL, PV_NONE, +! {(char_u *)0L, (char_u *)0L} +! #endif +! SCRIPTID_INIT}, + {"paragraphs", "para", P_STRING|P_VI_DEF, + (char_u *)&p_para, PV_NONE, + {(char_u *)"IPLPPPQPP TPHPLIPpLpItpplpipbp", +--- 1895,1902 ---- + (char_u *)NULL, PV_NONE, + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, + {"osfiletype", "oft", P_STRING|P_ALLOCED|P_VI_DEF, + (char_u *)NULL, PV_NONE, +! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, + {"paragraphs", "para", P_STRING|P_VI_DEF, + (char_u *)&p_para, PV_NONE, + {(char_u *)"IPLPPPQPP TPHPLIPpLpItpplpipbp", +*************** +*** 5282,5290 **** + #ifdef FEAT_AUTOCMD + check_string_option(&buf->b_p_ft); + #endif +- #ifdef FEAT_OSFILETYPE +- check_string_option(&buf->b_p_oft); +- #endif + #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT) + check_string_option(&buf->b_p_cinw); + #endif +--- 5270,5275 ---- +*************** +*** 9665,9673 **** + case PV_MA: return (char_u *)&(curbuf->b_p_ma); + case PV_MOD: return (char_u *)&(curbuf->b_changed); + case PV_NF: return (char_u *)&(curbuf->b_p_nf); +- #ifdef FEAT_OSFILETYPE +- case PV_OFT: return (char_u *)&(curbuf->b_p_oft); +- #endif + case PV_PI: return (char_u *)&(curbuf->b_p_pi); + #ifdef FEAT_TEXTOBJ + case PV_QE: return (char_u *)&(curbuf->b_p_qe); +--- 9650,9655 ---- +*************** +*** 10018,10026 **** + /* Don't copy 'filetype', it must be detected */ + buf->b_p_ft = empty_option; + #endif +- #ifdef FEAT_OSFILETYPE +- buf->b_p_oft = vim_strsave(p_oft); +- #endif + buf->b_p_pi = p_pi; + #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT) + buf->b_p_cinw = vim_strsave(p_cinw); +--- 10000,10005 ---- +*** ../vim-7.3.190/src/option.h 2011-02-12 13:59:55.000000000 +0100 +--- src/option.h 2011-05-19 13:11:46.000000000 +0200 +*************** +*** 984,992 **** + , BV_MOD + , BV_MPS + , BV_NF +- #ifdef FEAT_OSFILETYPE +- , BV_OFT +- #endif + #ifdef FEAT_COMPL_FUNC + , BV_OFU + #endif +--- 984,989 ---- +*** ../vim-7.3.190/src/structs.h 2011-05-10 16:41:13.000000000 +0200 +--- src/structs.h 2011-05-19 13:11:58.000000000 +0200 +*************** +*** 1530,1538 **** + int b_p_ml_nobin; /* b_p_ml saved for binary mode */ + int b_p_ma; /* 'modifiable' */ + char_u *b_p_nf; /* 'nrformats' */ +- #ifdef FEAT_OSFILETYPE +- char_u *b_p_oft; /* 'osfiletype' */ +- #endif + int b_p_pi; /* 'preserveindent' */ + #ifdef FEAT_TEXTOBJ + char_u *b_p_qe; /* 'quoteescape' */ +--- 1530,1535 ---- +*** ../vim-7.3.190/src/version.c 2011-05-19 12:14:03.000000000 +0200 +--- src/version.c 2011-05-19 13:26:42.000000000 +0200 +*************** +*** 426,436 **** + "-ole", + # endif + #endif +- #ifdef FEAT_OSFILETYPE +- "+osfiletype", +- #else +- "-osfiletype", +- #endif + #ifdef FEAT_PATH_EXTRA + "+path_extra", + #else +--- 426,431 ---- +*** ../vim-7.3.190/src/pty.c 2011-04-11 14:24:33.000000000 +0200 +--- src/pty.c 2011-05-19 12:43:26.000000000 +0200 +*************** +*** 123,130 **** + static void initmaster __ARGS((int)); + + /* +! * Open all ptys with O_NOCTTY, just to be on the safe side +! * (RISCos mips breaks otherwise) + */ + #ifndef O_NOCTTY + # define O_NOCTTY 0 +--- 123,129 ---- + static void initmaster __ARGS((int)); + + /* +! * Open all ptys with O_NOCTTY, just to be on the safe side. + */ + #ifndef O_NOCTTY + # define O_NOCTTY 0 +*** ../vim-7.3.190/Filelist 2011-05-10 17:21:34.000000000 +0200 +--- Filelist 2011-05-19 13:37:25.000000000 +0200 +*************** +*** 427,433 **** + $(SRC_VMS) \ + README_os390.txt \ + src/Make_mint.mak \ +- src/Make_ro.mak \ + src/if_sniff.c \ + src/infplist.xml \ + src/link.390 \ +--- 427,432 ---- +*** ../vim-7.3.190/src/version.c 2011-05-19 12:14:03.000000000 +0200 +--- src/version.c 2011-05-19 13:26:42.000000000 +0200 +*************** +*** 716,717 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 191, + /**/ + +-- +From "know your smileys": + :-& Eating spaghetti + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.192 b/source/ap/vim/patches/7.3.192 new file mode 100644 index 00000000..5dab19b4 --- /dev/null +++ b/source/ap/vim/patches/7.3.192 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.192 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.192 +Problem: Ex command ":s/ \?/ /g" splits multi-byte characters into bytes. + (Dominique Pelle) +Solution: Advance over whole character instead of one byte. +Files: src/ex_cmds.c + + +*** ../vim-7.3.191/src/ex_cmds.c 2011-05-10 16:41:13.000000000 +0200 +--- src/ex_cmds.c 2011-05-19 14:23:33.000000000 +0200 +*************** +*** 4625,4631 **** + * for a match in this line again. */ + skip_match = TRUE; + else +! ++matchcol; /* search for a match at next column */ + goto skip; + } + +--- 4625,4639 ---- + * for a match in this line again. */ + skip_match = TRUE; + else +! { +! /* search for a match at next column */ +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! matchcol += mb_ptr2len(sub_firstline + matchcol); +! else +! #endif +! ++matchcol; +! } + goto skip; + } + +*** ../vim-7.3.191/src/version.c 2011-05-19 13:40:47.000000000 +0200 +--- src/version.c 2011-05-19 14:28:44.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 192, + /**/ + +-- +From "know your smileys": + :-F Bucktoothed vampire with one tooth missing + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.193 b/source/ap/vim/patches/7.3.193 new file mode 100644 index 00000000..acee9ec0 --- /dev/null +++ b/source/ap/vim/patches/7.3.193 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.193 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.193 +Problem: In the command line window ":close" doesn't work properly. (Tony + Mechelynck) +Solution: Use Ctrl_C instead of K_IGNORE for cmdwin_result. (Jean-Rene + David) +Files: src/ex_docmd.c, src/ex_getln.c + + +*** ../vim-7.3.192/src/ex_docmd.c 2011-05-10 16:41:13.000000000 +0200 +--- src/ex_docmd.c 2011-05-19 14:42:56.000000000 +0200 +*************** +*** 6472,6478 **** + { + # ifdef FEAT_CMDWIN + if (cmdwin_type != 0) +! cmdwin_result = K_IGNORE; + else + # endif + if (!text_locked() +--- 6472,6478 ---- + { + # ifdef FEAT_CMDWIN + if (cmdwin_type != 0) +! cmdwin_result = Ctrl_C; + else + # endif + if (!text_locked() +*** ../vim-7.3.192/src/ex_getln.c 2011-04-28 17:21:49.000000000 +0200 +--- src/ex_getln.c 2011-05-19 14:42:56.000000000 +0200 +*************** +*** 6324,6329 **** +--- 6324,6335 ---- + ccline.cmdbuff = vim_strsave((char_u *)"qa"); + cmdwin_result = CAR; + } ++ else if (cmdwin_result == Ctrl_C) ++ { ++ /* :q or :close, don't execute any command ++ * and don't modify the cmd window. */ ++ ccline.cmdbuff = NULL; ++ } + else + ccline.cmdbuff = vim_strsave(ml_get_curline()); + if (ccline.cmdbuff == NULL) +*** ../vim-7.3.192/src/version.c 2011-05-19 14:30:07.000000000 +0200 +--- src/version.c 2011-05-19 14:48:12.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 193, + /**/ + +-- +There's no place like $(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 /// diff --git a/source/ap/vim/patches/7.3.194 b/source/ap/vim/patches/7.3.194 new file mode 100644 index 00000000..5a73c009 --- /dev/null +++ b/source/ap/vim/patches/7.3.194 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.194 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.194 +Problem: When "b" is a symlink to directory "a", resolve("b/") doesn't + result in "a/". (ZyX) +Solution: Remove the trailing slash. (Jean-Rene David) +Files: src/eval.c + + +*** ../vim-7.3.193/src/eval.c 2011-05-19 13:40:47.000000000 +0200 +--- src/eval.c 2011-05-19 14:55:27.000000000 +0200 +*************** +*** 14980,14986 **** +--- 14980,14989 ---- + + len = STRLEN(p); + if (len > 0 && after_pathsep(p, p + len)) ++ { + has_trailing_pathsep = TRUE; ++ p[len - 1] = NUL; /* the trailing slash breaks readlink() */ ++ } + + q = getnextcomp(p); + if (*q != NUL) +*** ../vim-7.3.193/src/version.c 2011-05-19 14:50:49.000000000 +0200 +--- src/version.c 2011-05-19 14:54:40.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 194, + /**/ + +-- +Momento mori, ergo carpe diem + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.195 b/source/ap/vim/patches/7.3.195 new file mode 100644 index 00000000..ba1fc219 --- /dev/null +++ b/source/ap/vim/patches/7.3.195 @@ -0,0 +1,199 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.195 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.195 +Problem: "} else" causes following lines to be indented too much. (Rouben + Rostamian) +Solution: Better detection for the "else". (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.194/src/misc1.c 2011-05-10 16:41:13.000000000 +0200 +--- src/misc1.c 2011-05-19 16:30:28.000000000 +0200 +*************** +*** 5482,5489 **** + * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or + * '}'. + * Don't consider "} else" a terminated line. +! * Don't consider a line where there are unmatched opening braces before '}', +! * ';' or ',' a terminated line. + * Return the character terminating the line (ending char's have precedence if + * both apply in order to determine initializations). + */ +--- 5482,5489 ---- + * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or + * '}'. + * Don't consider "} else" a terminated line. +! * If a line begins with an "else", only consider it terminated if no unmatched +! * opening braces follow (handle "else { foo();" correctly). + * Return the character terminating the line (ending char's have precedence if + * both apply in order to determine initializations). + */ +*************** +*** 5493,5513 **** + int incl_open; /* include '{' at the end as terminator */ + int incl_comma; /* recognize a trailing comma */ + { +! char_u found_start = 0; +! unsigned n_open = 0; + + s = cin_skipcomment(s); + + if (*s == '{' || (*s == '}' && !cin_iselse(s))) + found_start = *s; + + while (*s) + { + /* skip over comments, "" strings and 'c'haracters */ + s = skip_string(cin_skipcomment(s)); + if (*s == '}' && n_open > 0) + --n_open; +! if (n_open == 0 + && (*s == ';' || *s == '}' || (incl_comma && *s == ',')) + && cin_nocode(s + 1)) + return *s; +--- 5493,5517 ---- + int incl_open; /* include '{' at the end as terminator */ + int incl_comma; /* recognize a trailing comma */ + { +! char_u found_start = 0; +! unsigned n_open = 0; +! int is_else = FALSE; + + s = cin_skipcomment(s); + + if (*s == '{' || (*s == '}' && !cin_iselse(s))) + found_start = *s; + ++ if (!found_start) ++ is_else = cin_iselse(s); ++ + while (*s) + { + /* skip over comments, "" strings and 'c'haracters */ + s = skip_string(cin_skipcomment(s)); + if (*s == '}' && n_open > 0) + --n_open; +! if ((!is_else || n_open == 0) + && (*s == ';' || *s == '}' || (incl_comma && *s == ',')) + && cin_nocode(s + 1)) + return *s; +*** ../vim-7.3.194/src/testdir/test3.in 2011-05-10 13:38:23.000000000 +0200 +--- src/testdir/test3.in 2011-05-19 16:29:01.000000000 +0200 +*************** +*** 1345,1351 **** + + STARTTEST + :set cino& +! 2kdd=][ + ENDTEST + + void func(void) +--- 1345,1351 ---- + + STARTTEST + :set cino& +! 2kdd=4][ + ENDTEST + + void func(void) +*************** +*** 1359,1364 **** +--- 1359,1392 ---- + printf("Foo!\n"); + } + ++ void func1(void) ++ { ++ char* tab[] = {"foo", "bar", ++ "baz", "quux", ++ "this line used", "to be indented incorrectly"}; ++ foo(); ++ } ++ ++ void func2(void) ++ { ++ int tab[] = ++ {1, 2, ++ 3, 4, ++ 5, 6}; ++ ++ printf("This line used to be indented incorrectly.\n"); ++ } ++ ++ void func3(void) ++ { ++ int tab[] = { ++ 1, 2, ++ 3, 4, ++ 5, 6}; ++ ++ printf("Don't you dare indent this line incorrectly!\n); ++ } ++ + STARTTEST + :set cino& + 2kdd=][ +*** ../vim-7.3.194/src/testdir/test3.ok 2011-05-10 13:38:23.000000000 +0200 +--- src/testdir/test3.ok 2011-05-19 16:29:01.000000000 +0200 +*************** +*** 1216,1221 **** +--- 1216,1249 ---- + printf("Foo!\n"); + } + ++ void func1(void) ++ { ++ char* tab[] = {"foo", "bar", ++ "baz", "quux", ++ "this line used", "to be indented incorrectly"}; ++ foo(); ++ } ++ ++ void func2(void) ++ { ++ int tab[] = ++ {1, 2, ++ 3, 4, ++ 5, 6}; ++ ++ printf("This line used to be indented incorrectly.\n"); ++ } ++ ++ void func3(void) ++ { ++ int tab[] = { ++ 1, 2, ++ 3, 4, ++ 5, 6}; ++ ++ printf("Don't you dare indent this line incorrectly!\n); ++ } ++ + + void func(void) + { +*** ../vim-7.3.194/src/version.c 2011-05-19 14:59:07.000000000 +0200 +--- src/version.c 2011-05-19 16:34:16.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 195, + /**/ + +-- +I AM THANKFUL... +...for the taxes that I pay because it means that I am employed. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.196 b/source/ap/vim/patches/7.3.196 new file mode 100644 index 00000000..0d6be8c9 --- /dev/null +++ b/source/ap/vim/patches/7.3.196 @@ -0,0 +1,224 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.196 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.196 +Problem: Can't intercept a character that is going to be inserted. +Solution: Add the InsertCharPre autocommand event. (Jakson A. Aquino) +Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt, + runtime/doc/map.txt, src/edit.c, src/eval.c, src/fileio.c, + src/vim.h + + +*** ../mercurial/vim73/runtime/doc/autocmd.txt 2011-04-28 19:01:26.000000000 +0200 +--- runtime/doc/autocmd.txt 2011-05-19 17:12:17.000000000 +0200 +*************** +*** 299,304 **** +--- 299,306 ---- + |InsertEnter| starting Insert mode + |InsertChange| when typing <Insert> while in Insert or Replace mode + |InsertLeave| when leaving Insert mode ++ |InsertCharPre| when a character was typed in Insert mode, before ++ inserting it + + |ColorScheme| after loading a color scheme + +*************** +*** 657,662 **** +--- 659,675 ---- + indicates the new mode. + Be careful not to move the cursor or do + anything else that the user does not expect. ++ *InsertCharPre* ++ InsertCharPre When a character is typed in Insert mode, ++ before inserting the char. ++ The |v:char| variable indicates the char typed ++ and can be changed during the event to insert ++ a different character. When |v:char| is set ++ to more than one character this text is ++ inserted literally. ++ It is not allowed to change the text |textlock|. ++ The event is not triggered when 'paste' is ++ set. + *InsertEnter* + InsertEnter Just before starting Insert mode. Also for + Replace mode and Virtual Replace mode. The +*** ../mercurial/vim73/runtime/doc/eval.txt 2011-05-19 12:22:41.000000000 +0200 +--- runtime/doc/eval.txt 2011-05-19 16:55:58.000000000 +0200 +*************** +*** 1293,1298 **** +--- 1293,1299 ---- + *v:char* *char-variable* + v:char Argument for evaluating 'formatexpr' and used for the typed + character when using <expr> in an abbreviation |:map-<expr>|. ++ It is also used by the |InsertPreChar| event. + + *v:charconvert_from* *charconvert_from-variable* + v:charconvert_from +*** ../mercurial/vim73/runtime/doc/map.txt 2011-05-10 17:17:38.000000000 +0200 +--- runtime/doc/map.txt 2011-05-19 16:40:34.000000000 +0200 +*************** +*** 226,232 **** + + For abbreviations |v:char| is set to the character that was typed to trigger + the abbreviation. You can use this to decide how to expand the {lhs}. You +! can't change v:char and you should not insert it. + + Be very careful about side effects! The expression is evaluated while + obtaining characters, you may very well make the command dysfunctional. +--- 226,232 ---- + + For abbreviations |v:char| is set to the character that was typed to trigger + the abbreviation. You can use this to decide how to expand the {lhs}. You +! you should not either insert or change the v:char. + + Be very careful about side effects! The expression is evaluated while + obtaining characters, you may very well make the command dysfunctional. +*** ../mercurial/vim73/src/edit.c 2011-05-10 14:22:10.000000000 +0200 +--- src/edit.c 2011-05-19 17:20:53.000000000 +0200 +*************** +*** 1381,1390 **** + goto do_intr; + #endif + + /* + * Insert a nomal character. + */ +! normalchar: + #ifdef FEAT_SMARTINDENT + /* Try to perform smart-indenting. */ + ins_try_si(c); +--- 1381,1425 ---- + goto do_intr; + #endif + ++ normalchar: + /* + * Insert a nomal character. + */ +! #ifdef FEAT_AUTOCMD +! if (!p_paste) +! { +! /* Trigger the InsertCharPre event. Lock the text to avoid +! * weird things from happening. */ +! set_vim_var_char(c); +! ++textlock; +! if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, +! FALSE, curbuf)) +! { +! /* Get the new value of v:char. If it is more than one +! * character insert it literally. */ +! char_u *s = get_vim_var_str(VV_CHAR); +! if (MB_CHARLEN(s) > 1) +! { +! if (stop_arrow() != FAIL) +! { +! ins_str(s); +! AppendToRedobuffLit(s, -1); +! } +! c = NUL; +! } +! else +! c = PTR2CHAR(s); +! } +! +! set_vim_var_string(VV_CHAR, NULL, -1); +! --textlock; +! +! /* If the new value is an empty string then don't insert a +! * char. */ +! if (c == NUL) +! break; +! } +! #endif + #ifdef FEAT_SMARTINDENT + /* Try to perform smart-indenting. */ + ins_try_si(c); +*************** +*** 3491,3501 **** + return; + } + p += len; +! #ifdef FEAT_MBYTE +! c = mb_ptr2char(p); +! #else +! c = *p; +! #endif + ins_compl_addleader(c); + } + +--- 3526,3532 ---- + return; + } + p += len; +! c = PTR2CHAR(p); + ins_compl_addleader(c); + } + +*** ../mercurial/vim73/src/eval.c 2011-05-19 14:59:07.000000000 +0200 +--- src/eval.c 2011-05-19 16:40:39.000000000 +0200 +*************** +*** 352,358 **** + {VV_NAME("swapname", VAR_STRING), VV_RO}, + {VV_NAME("swapchoice", VAR_STRING), 0}, + {VV_NAME("swapcommand", VAR_STRING), VV_RO}, +! {VV_NAME("char", VAR_STRING), VV_RO}, + {VV_NAME("mouse_win", VAR_NUMBER), 0}, + {VV_NAME("mouse_lnum", VAR_NUMBER), 0}, + {VV_NAME("mouse_col", VAR_NUMBER), 0}, +--- 352,358 ---- + {VV_NAME("swapname", VAR_STRING), VV_RO}, + {VV_NAME("swapchoice", VAR_STRING), 0}, + {VV_NAME("swapcommand", VAR_STRING), VV_RO}, +! {VV_NAME("char", VAR_STRING), 0}, + {VV_NAME("mouse_win", VAR_NUMBER), 0}, + {VV_NAME("mouse_lnum", VAR_NUMBER), 0}, + {VV_NAME("mouse_col", VAR_NUMBER), 0}, +*** ../mercurial/vim73/src/fileio.c 2011-05-10 16:41:13.000000000 +0200 +--- src/fileio.c 2011-05-19 16:40:39.000000000 +0200 +*************** +*** 7662,7667 **** +--- 7662,7668 ---- + {"InsertChange", EVENT_INSERTCHANGE}, + {"InsertEnter", EVENT_INSERTENTER}, + {"InsertLeave", EVENT_INSERTLEAVE}, ++ {"InsertCharPre", EVENT_INSERTCHARPRE}, + {"MenuPopup", EVENT_MENUPOPUP}, + {"QuickFixCmdPost", EVENT_QUICKFIXCMDPOST}, + {"QuickFixCmdPre", EVENT_QUICKFIXCMDPRE}, +*** ../mercurial/vim73/src/vim.h 2011-05-10 16:41:13.000000000 +0200 +--- src/vim.h 2011-05-19 16:40:39.000000000 +0200 +*************** +*** 1274,1279 **** +--- 1274,1280 ---- + EVENT_WINENTER, /* after entering a window */ + EVENT_WINLEAVE, /* before leaving a window */ + EVENT_ENCODINGCHANGED, /* after changing the 'encoding' option */ ++ EVENT_INSERTCHARPRE, /* before inserting a char */ + EVENT_CURSORHOLD, /* cursor in same position for a while */ + EVENT_CURSORHOLDI, /* idem, in Insert mode */ + EVENT_FUNCUNDEFINED, /* if calling a function which doesn't exist */ +*** ../vim-7.3.195/src/version.c 2011-05-19 16:35:05.000000000 +0200 +--- src/version.c 2011-05-19 17:15:41.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 196, + /**/ + +-- +I AM THANKFUL... +...for the mess to clean after a party because it means I have +been surrounded by friends. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.197 b/source/ap/vim/patches/7.3.197 new file mode 100644 index 00000000..c33a2cb2 --- /dev/null +++ b/source/ap/vim/patches/7.3.197 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.197 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.197 +Problem: When a QuickfixCmdPost event removes all errors, Vim still tries + to jump to the first error, resulting in E42. +Solution: Get the number of error after the autocmd event. (Mike Lundy) +Files: src/quickfix.c + + +*** ../mercurial/vim73/src/quickfix.c 2011-05-10 16:41:13.000000000 +0200 +--- src/quickfix.c 2011-05-19 17:34:11.000000000 +0200 +*************** +*** 2813,2829 **** + (eap->cmdidx != CMD_grepadd + && eap->cmdidx != CMD_lgrepadd), + *eap->cmdlinep); + #ifdef FEAT_AUTOCMD + if (au_name != NULL) + apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, + curbuf->b_fname, TRUE, curbuf); + #endif + if (res > 0 && !eap->forceit) +- { +- if (wp != NULL) +- qi = GET_LOC_LIST(wp); + qf_jump(qi, 0, 0, FALSE); /* display first error */ +- } + + mch_remove(fname); + vim_free(fname); +--- 2813,2833 ---- + (eap->cmdidx != CMD_grepadd + && eap->cmdidx != CMD_lgrepadd), + *eap->cmdlinep); ++ if (wp != NULL) ++ qi = GET_LOC_LIST(wp); + #ifdef FEAT_AUTOCMD + if (au_name != NULL) ++ { + apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, + curbuf->b_fname, TRUE, curbuf); ++ if (qi->qf_curlist < qi->qf_listcount) ++ res = qi->qf_lists[qi->qf_curlist].qf_count; ++ else ++ res = 0; ++ } + #endif + if (res > 0 && !eap->forceit) + qf_jump(qi, 0, 0, FALSE); /* display first error */ + + mch_remove(fname); + vim_free(fname); +*** ../vim-7.3.196/src/version.c 2011-05-19 17:25:36.000000000 +0200 +--- src/version.c 2011-05-19 17:41:50.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 197, + /**/ + +-- +I AM THANKFUL... +...for the clothes that fit a little too snug because it +means I have more than enough to eat. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.198 b/source/ap/vim/patches/7.3.198 new file mode 100644 index 00000000..5ef4a8aa --- /dev/null +++ b/source/ap/vim/patches/7.3.198 @@ -0,0 +1,403 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.198 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.198 +Problem: No completion for ":lang". +Solution: Get locales to complete from. (Dominique Pelle) +Files: src/eval.c, src/ex_cmds2.c, src/ex_getln.c, + src/proto/ex_cmds2.pro, src/proto/ex_getln.pro, src/vim.h + + +*** ../mercurial/vim73/src/eval.c 2011-05-19 17:25:36.000000000 +0200 +--- src/eval.c 2011-05-19 17:52:02.000000000 +0200 +*************** +*** 911,916 **** +--- 911,917 ---- + hash_clear(&compat_hashtab); + + free_scriptnames(); ++ free_locales(); + + /* global variables */ + vars_clear(&globvarht); +*** ../mercurial/vim73/src/ex_cmds2.c 2011-05-10 16:41:13.000000000 +0200 +--- src/ex_cmds2.c 2011-05-19 18:16:54.000000000 +0200 +*************** +*** 1476,1482 **** + #endif + + /* +! * Ask the user what to do when abondoning a changed buffer. + * Must check 'write' option first! + */ + void +--- 1476,1482 ---- + #endif + + /* +! * Ask the user what to do when abandoning a changed buffer. + * Must check 'write' option first! + */ + void +*************** +*** 4153,4158 **** +--- 4153,4234 ---- + } + + # if defined(FEAT_CMDL_COMPL) || defined(PROTO) ++ ++ static char_u **locales = NULL; /* Array of all available locales */ ++ static int did_init_locales = FALSE; ++ ++ static void init_locales __ARGS((void)); ++ static char_u **find_locales __ARGS((void)); ++ ++ /* ++ * Lazy initialization of all available locales. ++ */ ++ static void ++ init_locales() ++ { ++ if (!did_init_locales) ++ { ++ did_init_locales = TRUE; ++ locales = find_locales(); ++ } ++ } ++ ++ /* Return an array of strings for all available locales + NULL for the ++ * last element. Return NULL in case of error. */ ++ static char_u ** ++ find_locales() ++ { ++ garray_T locales_ga; ++ char_u *loc; ++ ++ /* Find all available locales by running command "locale -a". If this ++ * doesn't work we won't have completion. */ ++ char_u *locale_a = get_cmd_output((char_u *)"locale -a", ++ NULL, SHELL_SILENT); ++ if (locale_a == NULL) ++ return NULL; ++ ga_init2(&locales_ga, sizeof(char_u *), 20); ++ ++ /* Transform locale_a string where each locale is separated by "\n" ++ * into an array of locale strings. */ ++ loc = (char_u *)strtok((char *)locale_a, "\n"); ++ ++ while (loc != NULL) ++ { ++ if (ga_grow(&locales_ga, 1) == FAIL) ++ break; ++ loc = vim_strsave(loc); ++ if (loc == NULL) ++ break; ++ ++ ((char_u **)locales_ga.ga_data)[locales_ga.ga_len++] = loc; ++ loc = (char_u *)strtok(NULL, "\n"); ++ } ++ vim_free(locale_a); ++ if (ga_grow(&locales_ga, 1) == FAIL) ++ { ++ ga_clear(&locales_ga); ++ return NULL; ++ } ++ ((char_u **)locales_ga.ga_data)[locales_ga.ga_len] = NULL; ++ return (char_u **)locales_ga.ga_data; ++ } ++ ++ # if defined(EXITFREE) || defined(PROTO) ++ void ++ free_locales() ++ { ++ int i; ++ if (locales != NULL) ++ { ++ for (i = 0; locales[i] != NULL; i++) ++ vim_free(locales[i]); ++ vim_free(locales); ++ locales = NULL; ++ } ++ } ++ # endif ++ + /* + * Function given to ExpandGeneric() to obtain the possible arguments of the + * ":language" command. +*************** +*** 4168,4174 **** + return (char_u *)"ctype"; + if (idx == 2) + return (char_u *)"time"; +! return NULL; + } + # endif + +--- 4244,4268 ---- + return (char_u *)"ctype"; + if (idx == 2) + return (char_u *)"time"; +! +! init_locales(); +! if (locales == NULL) +! return NULL; +! return locales[idx - 3]; +! } +! +! /* +! * Function given to ExpandGeneric() to obtain the available locales. +! */ +! char_u * +! get_locales(xp, idx) +! expand_T *xp UNUSED; +! int idx; +! { +! init_locales(); +! if (locales == NULL) +! return NULL; +! return locales[idx]; + } + # endif + +*** ../mercurial/vim73/src/ex_getln.c 2011-05-19 14:50:49.000000000 +0200 +--- src/ex_getln.c 2011-05-19 18:18:49.000000000 +0200 +*************** +*** 4571,4618 **** + int context; + char_u *((*func)__ARGS((expand_T *, int))); + int ic; + } tab[] = + { +! {EXPAND_COMMANDS, get_command_name, FALSE}, +! {EXPAND_BEHAVE, get_behave_arg, TRUE}, + #ifdef FEAT_USR_CMDS +! {EXPAND_USER_COMMANDS, get_user_commands, FALSE}, +! {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE}, +! {EXPAND_USER_NARGS, get_user_cmd_nargs, FALSE}, +! {EXPAND_USER_COMPLETE, get_user_cmd_complete, FALSE}, + #endif + #ifdef FEAT_EVAL +! {EXPAND_USER_VARS, get_user_var_name, FALSE}, +! {EXPAND_FUNCTIONS, get_function_name, FALSE}, +! {EXPAND_USER_FUNC, get_user_func_name, FALSE}, +! {EXPAND_EXPRESSION, get_expr_name, FALSE}, + #endif + #ifdef FEAT_MENU +! {EXPAND_MENUS, get_menu_name, FALSE}, +! {EXPAND_MENUNAMES, get_menu_names, FALSE}, + #endif + #ifdef FEAT_SYN_HL +! {EXPAND_SYNTAX, get_syntax_name, TRUE}, + #endif +! {EXPAND_HIGHLIGHT, get_highlight_name, TRUE}, + #ifdef FEAT_AUTOCMD +! {EXPAND_EVENTS, get_event_name, TRUE}, +! {EXPAND_AUGROUP, get_augroup_name, TRUE}, + #endif + #ifdef FEAT_CSCOPE +! {EXPAND_CSCOPE, get_cscope_name, TRUE}, + #endif + #ifdef FEAT_SIGNS +! {EXPAND_SIGN, get_sign_name, TRUE}, + #endif + #ifdef FEAT_PROFILE +! {EXPAND_PROFILE, get_profile_name, TRUE}, + #endif + #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ + && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) +! {EXPAND_LANGUAGE, get_lang_arg, TRUE}, + #endif +! {EXPAND_ENV_VARS, get_env_name, TRUE}, + }; + int i; + +--- 4571,4620 ---- + int context; + char_u *((*func)__ARGS((expand_T *, int))); + int ic; ++ int escaped; + } tab[] = + { +! {EXPAND_COMMANDS, get_command_name, FALSE, TRUE}, +! {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE}, + #ifdef FEAT_USR_CMDS +! {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE}, +! {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE}, +! {EXPAND_USER_NARGS, get_user_cmd_nargs, FALSE, TRUE}, +! {EXPAND_USER_COMPLETE, get_user_cmd_complete, FALSE, TRUE}, + #endif + #ifdef FEAT_EVAL +! {EXPAND_USER_VARS, get_user_var_name, FALSE, TRUE}, +! {EXPAND_FUNCTIONS, get_function_name, FALSE, TRUE}, +! {EXPAND_USER_FUNC, get_user_func_name, FALSE, TRUE}, +! {EXPAND_EXPRESSION, get_expr_name, FALSE, TRUE}, + #endif + #ifdef FEAT_MENU +! {EXPAND_MENUS, get_menu_name, FALSE, TRUE}, +! {EXPAND_MENUNAMES, get_menu_names, FALSE, TRUE}, + #endif + #ifdef FEAT_SYN_HL +! {EXPAND_SYNTAX, get_syntax_name, TRUE, TRUE}, + #endif +! {EXPAND_HIGHLIGHT, get_highlight_name, TRUE, TRUE}, + #ifdef FEAT_AUTOCMD +! {EXPAND_EVENTS, get_event_name, TRUE, TRUE}, +! {EXPAND_AUGROUP, get_augroup_name, TRUE, TRUE}, + #endif + #ifdef FEAT_CSCOPE +! {EXPAND_CSCOPE, get_cscope_name, TRUE, TRUE}, + #endif + #ifdef FEAT_SIGNS +! {EXPAND_SIGN, get_sign_name, TRUE, TRUE}, + #endif + #ifdef FEAT_PROFILE +! {EXPAND_PROFILE, get_profile_name, TRUE, TRUE}, + #endif + #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ + && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) +! {EXPAND_LANGUAGE, get_lang_arg, TRUE, FALSE}, +! {EXPAND_LOCALES, get_locales, TRUE, FALSE}, + #endif +! {EXPAND_ENV_VARS, get_env_name, TRUE, TRUE}, + }; + int i; + +*************** +*** 4626,4632 **** + { + if (tab[i].ic) + regmatch.rm_ic = TRUE; +! ret = ExpandGeneric(xp, ®match, num_file, file, tab[i].func); + break; + } + } +--- 4628,4635 ---- + { + if (tab[i].ic) + regmatch.rm_ic = TRUE; +! ret = ExpandGeneric(xp, ®match, num_file, file, +! tab[i].func, tab[i].escaped); + break; + } + } +*************** +*** 4648,4660 **** + * Returns OK when no problems encountered, FAIL for error (out of memory). + */ + int +! ExpandGeneric(xp, regmatch, num_file, file, func) + expand_T *xp; + regmatch_T *regmatch; + int *num_file; + char_u ***file; + char_u *((*func)__ARGS((expand_T *, int))); + /* returns a string from the list */ + { + int i; + int count = 0; +--- 4651,4664 ---- + * Returns OK when no problems encountered, FAIL for error (out of memory). + */ + int +! ExpandGeneric(xp, regmatch, num_file, file, func, escaped) + expand_T *xp; + regmatch_T *regmatch; + int *num_file; + char_u ***file; + char_u *((*func)__ARGS((expand_T *, int))); + /* returns a string from the list */ ++ int escaped; + { + int i; + int count = 0; +*************** +*** 4679,4685 **** + { + if (round) + { +! str = vim_strsave_escaped(str, (char_u *)" \t\\."); + (*file)[count] = str; + #ifdef FEAT_MENU + if (func == get_menu_names && str != NULL) +--- 4683,4692 ---- + { + if (round) + { +! if (escaped) +! str = vim_strsave_escaped(str, (char_u *)" \t\\."); +! else +! str = vim_strsave(str); + (*file)[count] = str; + #ifdef FEAT_MENU + if (func == get_menu_names && str != NULL) +*** ../mercurial/vim73/src/proto/ex_cmds2.pro 2010-05-15 21:22:11.000000000 +0200 +--- src/proto/ex_cmds2.pro 2011-05-19 17:53:52.000000000 +0200 +*************** +*** 83,87 **** +--- 83,89 ---- + char_u *get_mess_lang __ARGS((void)); + void set_lang_var __ARGS((void)); + void ex_language __ARGS((exarg_T *eap)); ++ void free_locales __ARGS((void)); + char_u *get_lang_arg __ARGS((expand_T *xp, int idx)); ++ char_u *get_locales __ARGS((expand_T *xp, int idx)); + /* vim: set ft=c : */ +*** ../mercurial/vim73/src/proto/ex_getln.pro 2010-08-16 21:23:30.000000000 +0200 +--- src/proto/ex_getln.pro 2011-05-19 17:54:00.000000000 +0200 +*************** +*** 31,37 **** + char_u *addstar __ARGS((char_u *fname, int len, int context)); + void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col)); + int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches)); +! int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)))); + char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options)); + void init_history __ARGS((void)); + int get_histtype __ARGS((char_u *name)); +--- 31,37 ---- + char_u *addstar __ARGS((char_u *fname, int len, int context)); + void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col)); + int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches)); +! int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)), int escaped)); + char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options)); + void init_history __ARGS((void)); + int get_histtype __ARGS((char_u *name)); +*** ../mercurial/vim73/src/vim.h 2011-05-19 17:25:36.000000000 +0200 +--- src/vim.h 2011-05-19 17:52:02.000000000 +0200 +*************** +*** 779,784 **** +--- 779,785 ---- + #define EXPAND_FILETYPE 37 + #define EXPAND_FILES_IN_PATH 38 + #define EXPAND_OWNSYNTAX 39 ++ #define EXPAND_LOCALES 40 + + /* Values for exmode_active (0 is no exmode) */ + #define EXMODE_NORMAL 1 +*** ../vim-7.3.197/src/version.c 2011-05-19 17:42:54.000000000 +0200 +--- src/version.c 2011-05-19 18:24:58.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 198, + /**/ + +-- +The primary purpose of the DATA statement is to give names to constants; +instead of referring to pi as 3.141592653589793 at every appearance, the +variable PI can be given that value with a DATA statement and used instead +of the longer form of the constant. This also simplifies modifying the +program, should the value of pi change. + -- FORTRAN manual for Xerox Computers + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.199 b/source/ap/vim/patches/7.3.199 new file mode 100644 index 00000000..8bdd97ab --- /dev/null +++ b/source/ap/vim/patches/7.3.199 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.199 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.199 +Problem: MS-Windows: Compilation problem of OLE with MingW compiler. +Solution: Put #ifdef around declarations. (Guopeng Wen) +Files: src/if_ole.h + + +*** ../mercurial/vim73/src/if_ole.h 2010-05-15 21:22:11.000000000 +0200 +--- src/if_ole.h 2011-05-25 12:05:50.000000000 +0200 +*************** +*** 46,53 **** + /* header files for imported files */ + #include "oaidl.h" + +! void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t); +! void __RPC_USER MIDL_user_free( void __RPC_FAR * ); + + #ifndef __IVim_INTERFACE_DEFINED__ + #define __IVim_INTERFACE_DEFINED__ +--- 46,56 ---- + /* header files for imported files */ + #include "oaidl.h" + +! #ifndef __MIDL_user_allocate_free_DEFINED__ +! #define __MIDL_user_allocate_free_DEFINED__ +! void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t); +! void __RPC_USER MIDL_user_free( void __RPC_FAR * ); +! #endif + + #ifndef __IVim_INTERFACE_DEFINED__ + #define __IVim_INTERFACE_DEFINED__ +*** ../vim-7.3.198/src/version.c 2011-05-19 18:26:34.000000000 +0200 +--- src/version.c 2011-05-25 12:08:54.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 199, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +104. When people ask about the Presidential Election you ask "Which country?" + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.200 b/source/ap/vim/patches/7.3.200 new file mode 100644 index 00000000..60194711 --- /dev/null +++ b/source/ap/vim/patches/7.3.200 @@ -0,0 +1,75 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.200 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.200 (after 7.3.198) +Problem: CTRL-D doesn't complete :lang. +Solution: Add the missing part of the change. (Dominique Pelle) +Files: src/ex_docmd.c + + +*** ../mercurial/vim73/src/ex_docmd.c 2011-05-19 14:50:49.000000000 +0200 +--- src/ex_docmd.c 2011-05-25 12:45:02.000000000 +0200 +*************** +*** 3861,3873 **** + #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ + && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) + case CMD_language: +! if (*skiptowhite(arg) == NUL) + { + xp->xp_context = EXPAND_LANGUAGE; + xp->xp_pattern = arg; + } + else +! xp->xp_context = EXPAND_NOTHING; + break; + #endif + #if defined(FEAT_PROFILE) +--- 3861,3884 ---- + #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ + && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) + case CMD_language: +! p = skiptowhite(arg); +! if (*p == NUL) + { + xp->xp_context = EXPAND_LANGUAGE; + xp->xp_pattern = arg; + } + else +! { +! if ( STRNCMP(arg, "messages", p - arg) == 0 +! || STRNCMP(arg, "ctype", p - arg) == 0 +! || STRNCMP(arg, "time", p - arg) == 0) +! { +! xp->xp_context = EXPAND_LOCALES; +! xp->xp_pattern = skipwhite(p); +! } +! else +! xp->xp_context = EXPAND_NOTHING; +! } + break; + #endif + #if defined(FEAT_PROFILE) +*** ../vim-7.3.199/src/version.c 2011-05-25 12:09:46.000000000 +0200 +--- src/version.c 2011-05-25 12:49:49.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 200, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +105. When someone asks you for your address, you tell them your URL. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.201 b/source/ap/vim/patches/7.3.201 new file mode 100644 index 00000000..0481afd8 --- /dev/null +++ b/source/ap/vim/patches/7.3.201 @@ -0,0 +1,124 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.201 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.201 (after 7.3.195) +Problem: "} else" still causes following lines to be indented too much. +Solution: Better detection for the "else" block. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../mercurial/vim73/src/misc1.c 2011-05-19 16:35:05.000000000 +0200 +--- src/misc1.c 2011-05-25 13:29:45.000000000 +0200 +*************** +*** 7541,7557 **** + + /* + * When searching for a terminated line, don't use the +! * one between the "if" and the "else". + * Need to use the scope of this "else". XXX + * If whilelevel != 0 continue looking for a "do {". + */ +! if (cin_iselse(l) +! && whilelevel == 0 +! && ((trypos = find_start_brace(ind_maxcomment)) +! == NULL + || find_match(LOOKFOR_IF, trypos->lnum, +! ind_maxparen, ind_maxcomment) == FAIL)) +! break; + } + + /* +--- 7541,7565 ---- + + /* + * When searching for a terminated line, don't use the +! * one between the "if" and the matching "else". + * Need to use the scope of this "else". XXX + * If whilelevel != 0 continue looking for a "do {". + */ +! if (cin_iselse(l) && whilelevel == 0) +! { +! /* If we're looking at "} else", let's make sure we +! * find the opening brace of the enclosing scope, +! * not the one from "if () {". */ +! if (*l == '}') +! curwin->w_cursor.col = +! (l - ml_get_curline()) + 1; +! +! if ((trypos = find_start_brace(ind_maxcomment)) +! == NULL + || find_match(LOOKFOR_IF, trypos->lnum, +! ind_maxparen, ind_maxcomment) == FAIL) +! break; +! } + } + + /* +*** ../mercurial/vim73/src/testdir/test3.in 2011-05-19 16:35:05.000000000 +0200 +--- src/testdir/test3.in 2011-05-25 13:23:51.000000000 +0200 +*************** +*** 1413,1418 **** +--- 1413,1433 ---- + } + + STARTTEST ++ :set cino& ++ 2kdd=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ for (int i = 0; i < 10; ++i) ++ if (i & 1) { ++ foo(1); ++ } else ++ foo(0); ++ baz(); ++ } ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/start of AUTO/,$wq! test.out + ENDTEST +*** ../mercurial/vim73/src/testdir/test3.ok 2011-05-19 16:35:05.000000000 +0200 +--- src/testdir/test3.ok 2011-05-25 13:23:51.000000000 +0200 +*************** +*** 1262,1264 **** +--- 1262,1275 ---- + foo(); + } + ++ ++ void func(void) ++ { ++ for (int i = 0; i < 10; ++i) ++ if (i & 1) { ++ foo(1); ++ } else ++ foo(0); ++ baz(); ++ } ++ +*** ../vim-7.3.200/src/version.c 2011-05-25 12:51:17.000000000 +0200 +--- src/version.c 2011-05-25 13:33:16.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 201, + /**/ + +-- +Laughing helps. It's like jogging on the inside. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.202 b/source/ap/vim/patches/7.3.202 new file mode 100644 index 00000000..1289e085 --- /dev/null +++ b/source/ap/vim/patches/7.3.202 @@ -0,0 +1,868 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.202 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.202 +Problem: Cannot influence the indent inside a namespace. +Solution: Add the "N" 'cino' parameter. (Konstantin Lepa) +Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, + src/testdir/test3.ok + + +*** ../mercurial/vim73/runtime/doc/indent.txt 2011-04-28 19:01:26.000000000 +0200 +--- runtime/doc/indent.txt 2011-05-25 14:35:37.000000000 +0200 +*************** +*** 128,140 **** + used CTRL-T or CTRL-D. + + *cinoptions-values* +! The 'cinoptions' option sets how Vim performs indentation. In the list below, + "N" represents a number of your choice (the number can be negative). When + there is an 's' after the number, Vim multiplies the number by 'shiftwidth': + "1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc. You can use a +! decimal point, too: "-0.5s" is minus half a 'shiftwidth'. The examples below +! assume a 'shiftwidth' of 4. +! + >N Amount added for "normal" indent. Used after a line that should + increase the indent (lines starting with "if", an opening brace, + etc.). (default 'shiftwidth'). +--- 128,147 ---- + used CTRL-T or CTRL-D. + + *cinoptions-values* +! The 'cinoptions' option sets how Vim performs indentation. The value after +! the option character can be one of these (N is any number): +! N indent N spaces +! -N indent N spaces to the left +! Ns N times 'shiftwidth spaces +! -Ns N times 'shiftwidth spaces to the left +! +! In the list below, + "N" represents a number of your choice (the number can be negative). When + there is an 's' after the number, Vim multiplies the number by 'shiftwidth': + "1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc. You can use a +! decimal point, too: "-0.5s" is minus half a 'shiftwidth'. +! The examples below assume a 'shiftwidth' of 4. +! *cino->* + >N Amount added for "normal" indent. Used after a line that should + increase the indent (lines starting with "if", an opening brace, + etc.). (default 'shiftwidth'). +*************** +*** 145,150 **** +--- 152,158 ---- + foo; foo; foo; + } } } + < ++ *cino-e* + eN Add N to the prevailing indent inside a set of braces if the + opening brace at the End of the line (more precise: is not the + first character in a line). This is useful if you want a +*************** +*** 160,165 **** +--- 168,174 ---- + bar; bar; bar; + } } } + < ++ *cino-n* + nN Add N to the prevailing indent for a statement after an "if", + "while", etc., if it is NOT inside a set of braces. This is + useful if you want a different indent when there is no '{' +*************** +*** 174,179 **** +--- 183,189 ---- + bar; bar; bar; + } } } + < ++ *cino-f* + fN Place the first opening brace of a function or other block in + column N. This applies only for an opening brace that is not + inside other braces and is at the start of the line. What comes +*************** +*** 184,189 **** +--- 194,200 ---- + { { { + int foo; int foo; int foo; + < ++ *cino-{* + {N Place opening braces N characters from the prevailing indent. + This applies only for opening braces that are inside other + braces. (default 0). +*************** +*** 193,198 **** +--- 204,210 ---- + { { { + foo; foo; foo; + < ++ *cino-}* + }N Place closing braces N characters from the matching opening + brace. (default 0). + +*************** +*** 202,207 **** +--- 214,220 ---- + foo; foo; foo; + } } } + < ++ *cino-^* + ^N Add N to the prevailing indent inside a set of braces if the + opening brace is in column 0. This can specify a different + indent for whole of a function (some may like to set it to a +*************** +*** 216,221 **** +--- 229,235 ---- + } } } + } } } + < ++ *cino-L* + LN Controls placement of jump labels. If N is negative, the label + will be placed at column 1. If N is non-negative, the indent of + the label will be the prevailing indent minus N. (default -1). +*************** +*** 229,234 **** +--- 243,249 ---- + } } } + } } } + < ++ *cino-:* + :N Place case labels N characters from the indent of the switch(). + (default 'shiftwidth'). + +*************** +*** 240,245 **** +--- 255,261 ---- + default: default: + } } + < ++ *cino-=* + =N Place statements occurring after a case label N characters from + the indent of the label. (default 'shiftwidth'). + +*************** +*** 247,252 **** +--- 263,269 ---- + case 11: case 11: a = a + 1; + a = a + 1; b = b + 1; + < ++ *cino-l* + lN If N != 0 Vim will align with a case label instead of the + statement after it in the same line. + +*************** +*** 256,261 **** +--- 273,279 ---- + break; break; + } } + < ++ *cino-b* + bN If N != 0 Vim will align a final "break" with the case label, + so that case..break looks like a sort of block. (default: 0). + When using 1, consider adding "0=break" to 'cinkeys'. +*************** +*** 272,277 **** +--- 290,296 ---- + break; break; + } } + < ++ *cino-g* + gN Place C++ scope declarations N characters from the indent of the + block they are in. (default 'shiftwidth'). A scope declaration + can be "public:", "protected:" or "private:". +*************** +*** 283,288 **** +--- 302,308 ---- + private: private: + } } + < ++ *cino-h* + hN Place statements occurring after a C++ scope declaration N + characters from the indent of the label. (default + 'shiftwidth'). +*************** +*** 291,296 **** +--- 311,331 ---- + public: public: a = a + 1; + a = a + 1; b = b + 1; + < ++ *cino-N* ++ NN Indent inside C++ namespace N characters extra compared to a ++ normal block. (default 0). ++ ++ cino= cino=N-s > ++ namespace { namespace { ++ void function(); void function(); ++ } } ++ ++ namespace my namespace my ++ { { ++ void function(); void function(); ++ } } ++ < ++ *cino-p* + pN Parameter declarations for K&R-style function declarations will + be indented N characters from the margin. (default + 'shiftwidth'). +*************** +*** 300,305 **** +--- 335,341 ---- + int a; int a; int a; + char b; char b; char b; + < ++ *cino-t* + tN Indent a function return type declaration N characters from the + margin. (default 'shiftwidth'). + +*************** +*** 307,312 **** +--- 343,349 ---- + int int int + func() func() func() + < ++ *cino-i* + iN Indent C++ base class declarations and constructor + initializations, if they start in a new line (otherwise they + are aligned at the right side of the ':'). +*************** +*** 330,335 **** +--- 368,374 ---- + a = b + 9 * a = b + 9 * + c; c; + < ++ *cino-c* + cN Indent comment lines after the comment opener, when there is no + other text with which to align, N characters from the comment + opener. (default 3). See also |format-comments|. +*************** +*** 339,344 **** +--- 378,384 ---- + text. text. + */ */ + < ++ *cino-C* + CN When N is non-zero, indent comment lines by the amount specified + with the c flag above even if there is other text behind the + comment opener. (default 0). +*************** +*** 349,360 **** +--- 389,402 ---- + ********/ ********/ + < (Example uses ":set comments& comments-=s1:/* comments^=s0:/*") + ++ *cino-/* + /N Indent comment lines N characters extra. (default 0). + cino= cino=/4 > + a = b; a = b; + /* comment */ /* comment */ + c = d; c = d; + < ++ *cino-(* + (N When in unclosed parentheses, indent N characters from the line + with the unclosed parentheses. Add a 'shiftwidth' for every + unclosed parentheses. When N is 0 or the unclosed parentheses +*************** +*** 370,375 **** +--- 412,418 ---- + (c2 || c3)) (c2 || c3)) + { { + < ++ *cino-u* + uN Same as (N, but for one level deeper. (default 'shiftwidth'). + + cino= cino=u2 > +*************** +*** 377,382 **** +--- 420,426 ---- + && (c22345 && (c22345 + || c3)) || c3)) + < ++ *cino-U* + UN When N is non-zero, do not ignore the indenting specified by + ( or u in case that the unclosed parentheses is the first + non-white character in its line. (default 0). +*************** +*** 388,393 **** +--- 432,438 ---- + c3 c3 + ) && c4; ) && c4; + < ++ *cino-2* + wN When in unclosed parentheses and N is non-zero and either + using "(0" or "u0", respectively, or using "U0" and the unclosed + parentheses is the first non-white character in its line, line +*************** +*** 400,405 **** +--- 445,451 ---- + || c3)) || c3)) + foo; foo; + < ++ *cino-W* + WN When in unclosed parentheses and N is non-zero and either + using "(0" or "u0", respectively and the unclosed parentheses is + the last non-white character in its line and it is not the +*************** +*** 414,419 **** +--- 460,466 ---- + a_short_line(argument, a_short_line(argument, + argument); argument); + < ++ *cino-m* + mN When N is non-zero, line up a line starting with a closing + parentheses with the first character of the line with the + matching opening parentheses. (default 0). +*************** +*** 428,433 **** +--- 475,481 ---- + ) ) + foo; foo; + < ++ *cino-M* + MN When N is non-zero, line up a line starting with a closing + parentheses with the first character of the previous line. + (default 0). +*************** +*** 437,443 **** + cond2 cond2 + ) ) + < +! *java-cinoptions* *java-indenting* + jN Indent java anonymous classes correctly. The value 'N' is + currently unused but must be non-zero (e.g. 'j1'). 'j1' will + indent for example the following code snippet correctly: > +--- 485,491 ---- + cond2 cond2 + ) ) + < +! *java-cinoptions* *java-indenting* *cino-j* + jN Indent java anonymous classes correctly. The value 'N' is + currently unused but must be non-zero (e.g. 'j1'). 'j1' will + indent for example the following code snippet correctly: > +*************** +*** 448,454 **** + } + }); + < +! *javascript-cinoptions* *javascript-indenting* + JN Indent JavaScript object declarations correctly by not confusing + them with labels. The value 'N' is currently unused but must be + non-zero (e.g. 'J1'). > +--- 496,502 ---- + } + }); + < +! *javascript-cinoptions* *javascript-indenting* *cino-J* + JN Indent JavaScript object declarations correctly by not confusing + them with labels. The value 'N' is currently unused but must be + non-zero (e.g. 'J1'). > +*************** +*** 483,489 **** + + + The defaults, spelled out in full, are: +! cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,ps,ts,is,+s, + c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0 + + Vim puts a line in column 1 if: +--- 534,540 ---- + + + The defaults, spelled out in full, are: +! cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, + c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0 + + Vim puts a line in column 1 if: +*** ../mercurial/vim73/src/misc1.c 2011-05-25 13:33:59.000000000 +0200 +--- src/misc1.c 2011-05-25 14:57:31.000000000 +0200 +*************** +*** 4959,4964 **** +--- 4959,4965 ---- + static int corr_ind_maxparen __ARGS((int ind_maxparen, pos_T *startpos)); + static int find_last_paren __ARGS((char_u *l, int start, int end)); + static int find_match __ARGS((int lookfor, linenr_T ourscope, int ind_maxparen, int ind_maxcomment)); ++ static int cin_is_cpp_namespace __ARGS((char_u *)); + + static int ind_hash_comment = 0; /* # starts a comment */ + +*************** +*** 5221,5226 **** +--- 5222,5271 ---- + return (*(s = cin_skipcomment(s + i)) == ':' && s[1] != ':'); + } + ++ /* Maximum number of lines to search back for a "namespace" line. */ ++ #define FIND_NAMESPACE_LIM 20 ++ ++ /* ++ * Recognize a "namespace" scope declaration. ++ */ ++ static int ++ cin_is_cpp_namespace(s) ++ char_u *s; ++ { ++ char_u *p; ++ int has_name = FALSE; ++ ++ s = cin_skipcomment(s); ++ if (STRNCMP(s, "namespace", 9) == 0 && (s[9] == NUL || !vim_iswordc(s[9]))) ++ { ++ p = cin_skipcomment(skipwhite(s + 9)); ++ while (*p != NUL) ++ { ++ if (vim_iswhite(*p)) ++ { ++ has_name = TRUE; /* found end of a name */ ++ p = cin_skipcomment(skipwhite(p)); ++ } ++ else if (*p == '{') ++ { ++ break; ++ } ++ else if (vim_iswordc(*p)) ++ { ++ if (has_name) ++ return FALSE; /* word character after skipping past name */ ++ ++p; ++ } ++ else ++ { ++ return FALSE; ++ } ++ } ++ return TRUE; ++ } ++ return FALSE; ++ } ++ + /* + * Return a pointer to the first non-empty non-comment character after a ':'. + * Return NULL if not found. +*************** +*** 6296,6301 **** +--- 6341,6351 ---- + */ + int ind_keep_case_label = 0; + ++ /* ++ * handle C++ namespace ++ */ ++ int ind_cpp_namespace = 0; ++ + pos_T cur_curpos; + int amount; + int scope_amount; +*************** +*** 6336,6341 **** +--- 6386,6392 ---- + int n; + int iscase; + int lookfor_break; ++ int lookfor_cpp_namespace = FALSE; + int cont_amount = 0; /* amount for continuation line */ + int original_line_islabel; + +*************** +*** 6409,6414 **** +--- 6460,6466 ---- + case 'J': ind_js = n; break; + case 'l': ind_keep_case_label = n; break; + case '#': ind_hash_comment = n; break; ++ case 'N': ind_cpp_namespace = n; break; + } + if (*options == ',') + ++options; +*************** +*** 6976,6986 **** +--- 7028,7051 ---- + if (start_brace == BRACE_IN_COL0) /* '{' is in column 0 */ + { + amount = ind_open_left_imag; ++ lookfor_cpp_namespace = TRUE; ++ } ++ else if (start_brace == BRACE_AT_START && ++ lookfor_cpp_namespace) /* '{' is at start */ ++ { ++ ++ lookfor_cpp_namespace = TRUE; + } + else + { + if (start_brace == BRACE_AT_END) /* '{' is at end of line */ ++ { + amount += ind_open_imag; ++ ++ l = skipwhite(ml_get_curline()); ++ if (cin_is_cpp_namespace(l)) ++ amount += ind_cpp_namespace; ++ } + else + { + /* Compensate for adding ind_open_extra later. */ +*************** +*** 7151,7156 **** +--- 7216,7261 ---- + else + amount += ind_continuation; + } ++ else if (lookfor_cpp_namespace) ++ { ++ if (curwin->w_cursor.lnum == ourscope) ++ continue; ++ ++ if (curwin->w_cursor.lnum == 0 ++ || curwin->w_cursor.lnum ++ < ourscope - FIND_NAMESPACE_LIM) ++ break; ++ ++ l = ml_get_curline(); ++ ++ /* ++ * If we're in a comment now, skip to the start of the ++ * comment. ++ */ ++ trypos = find_start_comment(ind_maxcomment); ++ if (trypos != NULL) ++ { ++ curwin->w_cursor.lnum = trypos->lnum + 1; ++ curwin->w_cursor.col = 0; ++ continue; ++ } ++ ++ /* ++ * Skip preprocessor directives and blank lines. ++ */ ++ if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum)) ++ continue; ++ ++ if (cin_is_cpp_namespace(l)) ++ { ++ amount += ind_cpp_namespace; ++ break; ++ } ++ ++ if (cin_nocode(l)) ++ continue; ++ ++ } + else if (lookfor != LOOKFOR_TERM + && lookfor != LOOKFOR_CPP_BASECLASS) + { +*** ../mercurial/vim73/src/testdir/test3.in 2011-05-25 13:33:59.000000000 +0200 +--- src/testdir/test3.in 2011-05-25 14:47:31.000000000 +0200 +*************** +*** 799,804 **** +--- 799,867 ---- + df */ + hello + } ++ ++ /* valid namespaces with normal indent */ ++ namespace ++ { ++ { ++ 111111111111; ++ } ++ } ++ namespace /* test */ ++ { ++ 11111111111111111; ++ } ++ namespace // test ++ { ++ 111111111111111111; ++ } ++ namespace ++ { ++ 111111111111111111; ++ } ++ namespace test ++ { ++ 111111111111111111; ++ } ++ namespace{ ++ 111111111111111111; ++ } ++ namespace test{ ++ 111111111111111111; ++ } ++ namespace { ++ 111111111111111111; ++ } ++ namespace test { ++ 111111111111111111; ++ namespace test2 { ++ 22222222222222222; ++ } ++ } ++ ++ /* invalid namespaces use block indent */ ++ namespace test test2 { ++ 111111111111111111111; ++ } ++ namespace11111111111 { ++ 111111111111; ++ } ++ namespace() { ++ 1111111111111; ++ } ++ namespace() ++ { ++ 111111111111111111; ++ } ++ namespace test test2 ++ { ++ 1111111111111111111; ++ } ++ namespace111111111 ++ { ++ 111111111111111111; ++ } ++ + /* end of AUTO */ + + STARTTEST +*************** +*** 1428,1433 **** +--- 1491,1566 ---- + } + + STARTTEST ++ :set cino=N-s ++ /namespaces ++ =/^NAMESPACEEND ++ ENDTEST ++ ++ /* valid namespaces with normal indent */ ++ namespace ++ { ++ { ++ 111111111111; ++ } ++ } ++ namespace /* test */ ++ { ++ 11111111111111111; ++ } ++ namespace // test ++ { ++ 111111111111111111; ++ } ++ namespace ++ { ++ 111111111111111111; ++ } ++ namespace test ++ { ++ 111111111111111111; ++ } ++ namespace{ ++ 111111111111111111; ++ } ++ namespace test{ ++ 111111111111111111; ++ } ++ namespace { ++ 111111111111111111; ++ } ++ namespace test { ++ 111111111111111111; ++ namespace test2 { ++ 22222222222222222; ++ } ++ } ++ ++ /* invalid namespaces use block indent */ ++ namespace test test2 { ++ 111111111111111111111; ++ } ++ namespace11111111111 { ++ 111111111111; ++ } ++ namespace() { ++ 1111111111111; ++ } ++ namespace() ++ { ++ 111111111111111111; ++ } ++ namespace test test2 ++ { ++ 1111111111111111111; ++ } ++ namespace111111111 ++ { ++ 111111111111111111; ++ } ++ NAMESPACEEND ++ ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/start of AUTO/,$wq! test.out + ENDTEST +*** ../mercurial/vim73/src/testdir/test3.ok 2011-05-25 13:33:59.000000000 +0200 +--- src/testdir/test3.ok 2011-05-25 14:48:02.000000000 +0200 +*************** +*** 787,792 **** +--- 787,855 ---- + df */ + hello + } ++ ++ /* valid namespaces with normal indent */ ++ namespace ++ { ++ { ++ 111111111111; ++ } ++ } ++ namespace /* test */ ++ { ++ 11111111111111111; ++ } ++ namespace // test ++ { ++ 111111111111111111; ++ } ++ namespace ++ { ++ 111111111111111111; ++ } ++ namespace test ++ { ++ 111111111111111111; ++ } ++ namespace{ ++ 111111111111111111; ++ } ++ namespace test{ ++ 111111111111111111; ++ } ++ namespace { ++ 111111111111111111; ++ } ++ namespace test { ++ 111111111111111111; ++ namespace test2 { ++ 22222222222222222; ++ } ++ } ++ ++ /* invalid namespaces use block indent */ ++ namespace test test2 { ++ 111111111111111111111; ++ } ++ namespace11111111111 { ++ 111111111111; ++ } ++ namespace() { ++ 1111111111111; ++ } ++ namespace() ++ { ++ 111111111111111111; ++ } ++ namespace test test2 ++ { ++ 1111111111111111111; ++ } ++ namespace111111111 ++ { ++ 111111111111111111; ++ } ++ + /* end of AUTO */ + + +*************** +*** 1273,1275 **** +--- 1336,1403 ---- + baz(); + } + ++ ++ /* valid namespaces with normal indent */ ++ namespace ++ { ++ { ++ 111111111111; ++ } ++ } ++ namespace /* test */ ++ { ++ 11111111111111111; ++ } ++ namespace // test ++ { ++ 111111111111111111; ++ } ++ namespace ++ { ++ 111111111111111111; ++ } ++ namespace test ++ { ++ 111111111111111111; ++ } ++ namespace{ ++ 111111111111111111; ++ } ++ namespace test{ ++ 111111111111111111; ++ } ++ namespace { ++ 111111111111111111; ++ } ++ namespace test { ++ 111111111111111111; ++ namespace test2 { ++ 22222222222222222; ++ } ++ } ++ ++ /* invalid namespaces use block indent */ ++ namespace test test2 { ++ 111111111111111111111; ++ } ++ namespace11111111111 { ++ 111111111111; ++ } ++ namespace() { ++ 1111111111111; ++ } ++ namespace() ++ { ++ 111111111111111111; ++ } ++ namespace test test2 ++ { ++ 1111111111111111111; ++ } ++ namespace111111111 ++ { ++ 111111111111111111; ++ } ++ NAMESPACEEND ++ ++ +*** ../vim-7.3.201/src/version.c 2011-05-25 13:33:59.000000000 +0200 +--- src/version.c 2011-05-25 15:14:20.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 202, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +107. When using your phone you forget that you don't have to use your + keyboard. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.203 b/source/ap/vim/patches/7.3.203 new file mode 100644 index 00000000..62c29897 --- /dev/null +++ b/source/ap/vim/patches/7.3.203 @@ -0,0 +1,102 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.203 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.203 +Problem: MS-Windows: Can't run an external command without a console window. +Solution: Support ":!start /b cmd". (Xaizek) +Files: runtime/doc/os_win32.txt, src/os_win32.c + + +*** ../mercurial/vim73/src/os_win32.c 2011-05-05 18:31:54.000000000 +0200 +--- src/os_win32.c 2011-05-25 16:45:31.000000000 +0200 +*************** +*** 3401,3406 **** +--- 3401,3407 ---- + { + STARTUPINFO si; + PROCESS_INFORMATION pi; ++ DWORD flags = CREATE_NEW_CONSOLE; + + si.cb = sizeof(si); + si.lpReserved = NULL; +*************** +*** 3418,3423 **** +--- 3419,3440 ---- + si.dwFlags = STARTF_USESHOWWINDOW; + si.wShowWindow = SW_SHOWMINNOACTIVE; + } ++ else if ((STRNICMP(cmdbase, "/b", 2) == 0) ++ && vim_iswhite(cmdbase[2])) ++ { ++ cmdbase = skipwhite(cmdbase + 2); ++ flags = CREATE_NO_WINDOW; ++ si.dwFlags = STARTF_USESTDHANDLES; ++ si.hStdInput = CreateFile("\\\\.\\NUL", // File name ++ GENERIC_READ, // Access flags ++ 0, // Share flags ++ NULL, // Security att. ++ OPEN_EXISTING, // Open flags ++ FILE_ATTRIBUTE_NORMAL, // File att. ++ NULL); // Temp file ++ si.hStdOutput = si.hStdInput; ++ si.hStdError = si.hStdInput; ++ } + + /* When the command is in double quotes, but 'shellxquote' is + * empty, keep the double quotes around the command. +*************** +*** 3445,3451 **** + NULL, // Process security attributes + NULL, // Thread security attributes + FALSE, // Inherit handles +! CREATE_NEW_CONSOLE, // Creation flags + NULL, // Environment + NULL, // Current directory + &si, // Startup information +--- 3462,3468 ---- + NULL, // Process security attributes + NULL, // Thread security attributes + FALSE, // Inherit handles +! flags, // Creation flags + NULL, // Environment + NULL, // Current directory + &si, // Startup information +*************** +*** 3458,3463 **** +--- 3475,3485 ---- + EMSG(_("E371: Command not found")); + #endif + } ++ if (si.hStdInput != NULL) ++ { ++ /* Close the handle to \\.\NUL */ ++ CloseHandle(si.hStdInput); ++ } + /* Close the handles to the subprocess, so that it goes away */ + CloseHandle(pi.hThread); + CloseHandle(pi.hProcess); +*** ../vim-7.3.202/src/version.c 2011-05-25 15:16:06.000000000 +0200 +--- src/version.c 2011-05-25 17:05:59.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 203, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +108. While reading a magazine, you look for the Zoom icon for a better + look at a photograph. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.204 b/source/ap/vim/patches/7.3.204 new file mode 100644 index 00000000..b2b63602 --- /dev/null +++ b/source/ap/vim/patches/7.3.204 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.204 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.204 (after 7.3.201) +Problem: Compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/misc1.c + + +*** ../mercurial/vim73/src/misc1.c 2011-05-25 15:16:06.000000000 +0200 +--- src/misc1.c 2011-05-25 17:25:10.000000000 +0200 +*************** +*** 7657,7663 **** + * not the one from "if () {". */ + if (*l == '}') + curwin->w_cursor.col = +! (l - ml_get_curline()) + 1; + + if ((trypos = find_start_brace(ind_maxcomment)) + == NULL +--- 7657,7663 ---- + * not the one from "if () {". */ + if (*l == '}') + curwin->w_cursor.col = +! (colnr_T)(l - ml_get_curline()) + 1; + + if ((trypos = find_start_brace(ind_maxcomment)) + == NULL +*** ../vim-7.3.203/src/version.c 2011-05-25 17:06:16.000000000 +0200 +--- src/version.c 2011-05-25 17:29:32.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 204, + /**/ + +-- +In a world without walls and borders, who needs windows and gates? + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.205 b/source/ap/vim/patches/7.3.205 new file mode 100644 index 00000000..b49a040e --- /dev/null +++ b/source/ap/vim/patches/7.3.205 @@ -0,0 +1,93 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.205 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.205 +Problem: Syntax "extend" doesn't work correctly. +Solution: Avoid calling check_state_ends() recursively (Ben Schmidt) +Files: src/syntax.c + + +*** ../mercurial/vim73/src/syntax.c 2011-05-19 12:14:03.000000000 +0200 +--- src/syntax.c 2011-05-25 17:47:46.000000000 +0200 +*************** +*** 990,996 **** +--- 990,999 ---- + * previous line and regions that have "keepend". + */ + if (current_state.ga_len > 0) ++ { + syn_update_ends(TRUE); ++ check_state_ends(); ++ } + + next_match_idx = -1; + ++current_line_id; +*************** +*** 1064,1070 **** + } + } + check_keepend(); +- check_state_ends(); + } + + /**************************************** +--- 1067,1072 ---- +*************** +*** 2533,2539 **** + check_state_ends() + { + stateitem_T *cur_si; +! int had_extend = FALSE; + + cur_si = &CUR_STATE(current_state.ga_len - 1); + for (;;) +--- 2535,2541 ---- + check_state_ends() + { + stateitem_T *cur_si; +! int had_extend; + + cur_si = &CUR_STATE(current_state.ga_len - 1); + for (;;) +*************** +*** 2586,2593 **** + + /* When the ended item has "extend", another item with + * "keepend" now needs to check for its end. */ +! if (cur_si->si_flags & HL_EXTEND) +! had_extend = TRUE; + + pop_current_state(); + +--- 2588,2594 ---- + + /* When the ended item has "extend", another item with + * "keepend" now needs to check for its end. */ +! had_extend = (cur_si->si_flags & HL_EXTEND); + + pop_current_state(); + +*** ../vim-7.3.204/src/version.c 2011-05-25 17:29:40.000000000 +0200 +--- src/version.c 2011-05-25 17:52:57.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 205, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +110. You actually volunteer to become your employer's webmaster. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.206 b/source/ap/vim/patches/7.3.206 new file mode 100644 index 00000000..8a91f0ae --- /dev/null +++ b/source/ap/vim/patches/7.3.206 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.206 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.206 +Problem: 64bit MS-Windows compiler warning. +Solution: Use HandleToLong() instead of type cast. (Mike Williams) +Files: src/gui_w32.c + + +*** ../mercurial/vim73/src/gui_w32.c 2011-01-17 20:08:04.000000000 +0100 +--- src/gui_w32.c 2011-05-25 21:14:10.000000000 +0200 +*************** +*** 1575,1581 **** + + #ifdef FEAT_EVAL + /* set the v:windowid variable */ +! set_vim_var_nr(VV_WINDOWID, (long)s_hwnd); + #endif + + theend: +--- 1575,1581 ---- + + #ifdef FEAT_EVAL + /* set the v:windowid variable */ +! set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd)); + #endif + + theend: +*** ../vim-7.3.205/src/version.c 2011-05-25 17:56:23.000000000 +0200 +--- src/version.c 2011-05-25 21:16:17.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 206, + /**/ + +-- +FIXME and XXX are two common keywords used to mark broken or incomplete code +not only since XXX as a sex reference would grab everybody's attention but +simply due to the fact that Vim would highlight these words. + -- Hendrik Scholz + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.207 b/source/ap/vim/patches/7.3.207 new file mode 100644 index 00000000..95b335ec --- /dev/null +++ b/source/ap/vim/patches/7.3.207 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.207 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.207 +Problem: Can't compile with MSVC with pentium4 and 64 bit. +Solution: Only use SSE2 for 32 bit. (Mike Williams) +Files: src/Make_mvc.mak + + +*** ../mercurial/vim73/src/Make_mvc.mak 2011-02-15 18:06:11.000000000 +0100 +--- src/Make_mvc.mak 2011-06-04 11:59:38.000000000 +0200 +*************** +*** 409,416 **** + CPUARG = + !endif + !else +! # VC8/9 only allows specifying SSE architecture +! !if "$(CPUNR)" == "pentium4" + CPUARG = /arch:SSE2 + !endif + !endif +--- 409,416 ---- + CPUARG = + !endif + !else +! # VC8/9/10 only allows specifying SSE architecture but only for 32bit +! !if "$(ASSEMBLY_ARCHITECTURE)" == "x86" && "$(CPUNR)" == "pentium4" + CPUARG = /arch:SSE2 + !endif + !endif +*** ../vim-7.3.206/src/version.c 2011-05-25 21:18:02.000000000 +0200 +--- src/version.c 2011-06-12 20:30:30.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 207, + /**/ + +-- +"The question of whether computers can think is just like the question +of whether submarines can swim." -- Edsger W. Dijkstra + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.208 b/source/ap/vim/patches/7.3.208 new file mode 100644 index 00000000..c5a79295 --- /dev/null +++ b/source/ap/vim/patches/7.3.208 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.208 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.208 +Problem: Early terminated if statement. +Solution: Remove the semicolon. (Lech Lorens) +Files: src/gui_mac.c + + +*** ../mercurial/vim73/src/gui_mac.c 2011-01-17 20:08:04.000000000 +0100 +--- src/gui_mac.c 2011-06-06 05:35:46.000000000 +0200 +*************** +*** 1840,1846 **** + p.v -= gui.scrollbar_height; + p.v -= p.v % gui.char_height; + p.v += 2 * gui.border_width; +! if (gui.which_scrollbars[SBAR_BOTTOM]); + p.v += gui.scrollbar_height; + + ZoomWindowIdeal(whichWindow, thePart, &p); +--- 1840,1846 ---- + p.v -= gui.scrollbar_height; + p.v -= p.v % gui.char_height; + p.v += 2 * gui.border_width; +! if (gui.which_scrollbars[SBAR_BOTTOM]) + p.v += gui.scrollbar_height; + + ZoomWindowIdeal(whichWindow, thePart, &p); +*** ../vim-7.3.207/src/version.c 2011-06-12 20:31:25.000000000 +0200 +--- src/version.c 2011-06-12 20:33:00.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 208, + /**/ + +-- +Keep America beautiful. Swallow your beer cans. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.209 b/source/ap/vim/patches/7.3.209 new file mode 100644 index 00000000..afd4ab82 --- /dev/null +++ b/source/ap/vim/patches/7.3.209 @@ -0,0 +1,95 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.209 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.209 +Problem: MSVC Install instructions point to wrong batch file. +Solution: Add a batch file for use with MSVC 10. +Files: src/msvc2010.bat, src/INSTALLpc.txt, Filelist + + +*** ../mercurial/vim73/src/msvc2010.bat 2011-06-12 20:35:31.000000000 +0200 +--- src/msvc2010.bat 2011-06-09 05:08:35.000000000 +0200 +*************** +*** 0 **** +--- 1,7 ---- ++ @echo off ++ rem To be used on MS-Windows for Visual C++ 2010 Express Edition ++ rem aka Microsoft Visual Studio 10.0. ++ rem See INSTALLpc.txt for information. ++ @echo on ++ ++ call "%VS100COMNTOOLS%%vsvars32.bat" +*** ../mercurial/vim73/src/INSTALLpc.txt 2010-08-16 21:23:30.000000000 +0200 +--- src/INSTALLpc.txt 2011-06-08 06:47:46.000000000 +0200 +*************** +*** 28,35 **** + 9. MS-DOS + + The currently preferred method is using the free Visual C++ Toolkit 2008 +! |msvc-2008-express|. If you need the executable to run on Windows 98 or ME, +! use the 2003 one |msvc-2003-toolkit|. + + + 1. Microsoft Visual C++ +--- 28,36 ---- + 9. MS-DOS + + The currently preferred method is using the free Visual C++ Toolkit 2008 +! |msvc-2008-express|, the produced binary runs on most MS-Windows systems. If +! you need the executable to run on Windows 98 or ME, use the 2003 one +! |msvc-2003-toolkit|. + + + 1. Microsoft Visual C++ +*************** +*** 176,182 **** + http://www.microsoft.com/express/vc/Default.aspx + This includes the IDE and the debugger. + +! To set the environment execute the msvc2008.bat script. You can then build + Vim with Make_mvc.mak. + + +--- 177,183 ---- + http://www.microsoft.com/express/vc/Default.aspx + This includes the IDE and the debugger. + +! To set the environment execute the msvc2010.bat script. You can then build + Vim with Make_mvc.mak. + + +*** ../mercurial/vim73/Filelist 2011-05-19 13:40:47.000000000 +0200 +--- Filelist 2011-06-09 05:17:25.000000000 +0200 +*************** +*** 262,267 **** +--- 262,268 ---- + src/bigvim.bat \ + src/msvcsetup.bat \ + src/msvc2008.bat \ ++ src/msvc2010.bat \ + src/dimm.idl \ + src/dlldata.c \ + src/dosinst.c \ +*** ../vim-7.3.208/src/version.c 2011-06-12 20:33:30.000000000 +0200 +--- src/version.c 2011-06-12 20:34:44.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 209, + /**/ + +-- +"Hit any key to continue" is a lie. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.210 b/source/ap/vim/patches/7.3.210 new file mode 100644 index 00000000..f02fe6fe --- /dev/null +++ b/source/ap/vim/patches/7.3.210 @@ -0,0 +1,182 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.210 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.210 +Problem: Can't always find the file when using cscope. +Solution: Add the 'cscoperelative' option. (Raghavendra D Prabhu) +Files: runtime/doc/if_cscop.txt, runtime/doc/options.txt, + src/if_cscope.c, src/options.c, src/options.h + + +*** ../mercurial/vim73/runtime/doc/if_cscop.txt 2010-09-30 21:38:08.000000000 +0200 +--- runtime/doc/if_cscop.txt 2011-06-12 19:54:26.000000000 +0200 +*************** +*** 271,276 **** +--- 271,285 ---- + :set cst + :set nocst + < ++ *cscoperelative* *csre* ++ If 'cscoperelative' set, then in absence of a prefix given to cscope (prefx ++ is the argument to -P option of cscope), basename of cscope.out location ++ (usually the project root directory) will be used as the prefix to construt ++ absolute path.The default is off. Note: This option is only effective when ++ cscope (cscopeprg) is initialized without a prefix path (-P). Examples: > ++ :set csre ++ :set nocsre ++ < + *cscopetagorder* *csto* + The value of 'csto' determines the order in which |:cstag| performs a search. + If 'csto' is set to zero, cscope database(s) are searched first, followed +*** ../mercurial/vim73/runtime/doc/options.txt 2011-05-19 12:22:41.000000000 +0200 +--- runtime/doc/options.txt 2011-06-12 20:00:10.000000000 +0200 +*************** +*** 2209,2214 **** +--- 2209,2224 ---- + Specifies whether to use quickfix window to show cscope results. + See |cscopequickfix|. + ++ *'cscoperelative'* *'csre'* ++ 'cscoperelative' 'csre' boolean (default off) ++ global ++ {not available when compiled without the |+cscope| ++ feature} ++ {not in Vi} ++ In the absence of a prefix (-P) for cscope. setting this option enables ++ to use the basename of cscope.out path as the prefix. ++ See |cscoperelative|. ++ + *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'* + 'cscopetag' 'cst' boolean (default off) + global +*** ../mercurial/vim73/src/if_cscope.c 2011-05-05 16:41:19.000000000 +0200 +--- src/if_cscope.c 2011-06-12 20:25:17.000000000 +0200 +*************** +*** 2471,2512 **** + */ + static char * + cs_resolve_file(i, name) +! int i; + char *name; + { +! char *fullname; +! int len; + + /* +! * ppath is freed when we destroy the cscope connection. +! * fullname is freed after cs_make_vim_style_matches, after it's been +! * copied into the tag buffer used by vim + */ + len = (int)(strlen(name) + 2); + if (csinfo[i].ppath != NULL) + len += (int)strlen(csinfo[i].ppath); + + if ((fullname = (char *)alloc(len)) == NULL) + return NULL; + +! /* +! * note/example: this won't work if the cscope output already starts + * "../.." and the prefix path is also "../..". if something like this +! * happens, you are screwed up and need to fix how you're using cscope. +! */ +! if (csinfo[i].ppath != NULL && +! (strncmp(name, csinfo[i].ppath, strlen(csinfo[i].ppath)) != 0) && +! (name[0] != '/') + #ifdef WIN32 +! && name[0] != '\\' && name[1] != ':' + #endif +! ) + (void)sprintf(fullname, "%s/%s", csinfo[i].ppath, name); + else + (void)sprintf(fullname, "%s", name); + + return fullname; +! } /* cs_resolve_file */ + + + /* +--- 2471,2531 ---- + */ + static char * + cs_resolve_file(i, name) +! int i; + char *name; + { +! char *fullname; +! int len; +! char_u *csdir = NULL; + + /* +! * Ppath is freed when we destroy the cscope connection. +! * Fullname is freed after cs_make_vim_style_matches, after it's been +! * copied into the tag buffer used by Vim. + */ + len = (int)(strlen(name) + 2); + if (csinfo[i].ppath != NULL) + len += (int)strlen(csinfo[i].ppath); ++ else if (p_csre && csinfo[i].fname != NULL) ++ { ++ /* If 'cscoperelative' is set and ppath is not set, use cscope.out ++ * path in path resolution. */ ++ csdir = alloc(MAXPATHL); ++ if (csdir != NULL) ++ { ++ vim_strncpy(csdir, (char_u *)csinfo[i].fname, ++ gettail((char_u *)csinfo[i].fname) - 1 - (char_u *)csinfo[i].fname); ++ len += (int)STRLEN(csdir); ++ } ++ } + + if ((fullname = (char *)alloc(len)) == NULL) + return NULL; + +! /* Note/example: this won't work if the cscope output already starts + * "../.." and the prefix path is also "../..". if something like this +! * happens, you are screwed up and need to fix how you're using cscope. */ +! if (csinfo[i].ppath != NULL +! && (strncmp(name, csinfo[i].ppath, strlen(csinfo[i].ppath)) != 0) +! && (name[0] != '/') + #ifdef WIN32 +! && name[0] != '\\' && name[1] != ':' + #endif +! ) + (void)sprintf(fullname, "%s/%s", csinfo[i].ppath, name); ++ else if (csdir != NULL && csinfo[i].fname != NULL && STRLEN(csdir) > 0) ++ { ++ /* Check for csdir to be non empty to avoid empty path concatenated to ++ * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */ ++ vim_free(fullname); ++ fullname = concat_fnames(csdir, (char_u *)name, TRUE); ++ } + else + (void)sprintf(fullname, "%s", name); + ++ vim_free(csdir); + return fullname; +! } + + + /* +*** ../vim-7.3.209/src/version.c 2011-06-12 20:36:00.000000000 +0200 +--- src/version.c 2011-06-12 20:37:48.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 210, + /**/ + +-- +Apathy Error: Don't bother striking any key. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.211 b/source/ap/vim/patches/7.3.211 new file mode 100644 index 00000000..4760c106 --- /dev/null +++ b/source/ap/vim/patches/7.3.211 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.211 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.211 (after 7.3.210) +Problem: Compiler warning. +Solution: Add type cast. +Files: src/if_cscope.c + + +*** ../mercurial/vim73/src/if_cscope.c 2011-06-12 20:42:17.000000000 +0200 +--- src/if_cscope.c 2011-06-12 21:22:53.000000000 +0200 +*************** +*** 2518,2524 **** + /* Check for csdir to be non empty to avoid empty path concatenated to + * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */ + vim_free(fullname); +! fullname = concat_fnames(csdir, (char_u *)name, TRUE); + } + else + (void)sprintf(fullname, "%s", name); +--- 2518,2524 ---- + /* Check for csdir to be non empty to avoid empty path concatenated to + * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */ + vim_free(fullname); +! fullname = (char *)concat_fnames(csdir, (char_u *)name, TRUE); + } + else + (void)sprintf(fullname, "%s", name); +*** ../vim-7.3.210/src/version.c 2011-06-12 20:42:17.000000000 +0200 +--- src/version.c 2011-06-12 21:24:03.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 211, + /**/ + +-- +Did you ever see a "Hit any key to continue" message in a music piece? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.212 b/source/ap/vim/patches/7.3.212 new file mode 100644 index 00000000..d5086db0 --- /dev/null +++ b/source/ap/vim/patches/7.3.212 @@ -0,0 +1,243 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.212 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.212 +Problem: With Python 3.2 ":py3" fails. +Solution: Move PyEval_InitThreads() to after Py_Initialize(). (Roland + Puntaier) Check abiflags in configure. (Andreas Behr) +Files: src/if_python3.c, src/auto/configure, src/configure.in + + +*** ../mercurial/vim73/src/if_python3.c 2011-02-25 15:18:46.000000000 +0100 +--- src/if_python3.c 2011-06-11 04:24:49.000000000 +0200 +*************** +*** 547,560 **** + Py_SetPythonHome(PYTHON3_HOME); + #endif + +- /* initialise threads */ +- PyEval_InitThreads(); +- + #if !defined(MACOS) || defined(MACOS_X_UNIX) + Py_Initialize(); + #else + PyMac_Initialize(); + #endif + + #ifdef DYNAMIC_PYTHON3 + get_py3_exceptions(); +--- 547,559 ---- + Py_SetPythonHome(PYTHON3_HOME); + #endif + + #if !defined(MACOS) || defined(MACOS_X_UNIX) + Py_Initialize(); + #else + PyMac_Initialize(); + #endif ++ /* initialise threads, must be after Py_Initialize() */ ++ PyEval_InitThreads(); + + #ifdef DYNAMIC_PYTHON3 + get_py3_exceptions(); +*** ../mercurial/vim73/src/auto/configure 2011-05-10 15:41:59.000000000 +0200 +--- src/auto/configure 2011-06-12 21:33:16.000000000 +0200 +*************** +*** 5505,5510 **** +--- 5505,5527 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_version" >&5 + $as_echo "$vi_cv_var_python3_version" >&6; } + ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's abiflags" >&5 ++ $as_echo_n "checking Python's abiflags... " >&6; } ++ if test "${vi_cv_var_python3_abiflags+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++ else ++ ++ vi_cv_var_python3_abiflags= ++ if ${vi_cv_path_python3} -c \ ++ "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)" ++ then ++ vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \ ++ "import sys; print(sys.abiflags)"` ++ fi ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_abiflags" >&5 ++ $as_echo "$vi_cv_var_python3_abiflags" >&6; } ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5 + $as_echo_n "checking Python's install prefix... " >&6; } + if test "${vi_cv_path_python3_pfx+set}" = set; then : +*************** +*** 5555,5563 **** + else + + vi_cv_path_python3_conf= + for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do + for subdir in lib64 lib share; do +! d="${path}/${subdir}/python${vi_cv_var_python3_version}/config" + if test -d "$d" && test -f "$d/config.c"; then + vi_cv_path_python3_conf="$d" + fi +--- 5572,5584 ---- + else + + vi_cv_path_python3_conf= ++ config_dir="config" ++ if test "${vi_cv_var_python3_abiflags}" != ""; then ++ config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" ++ fi + for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do + for subdir in lib64 lib share; do +! d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}" + if test -d "$d" && test -f "$d/config.c"; then + vi_cv_path_python3_conf="$d" + fi +*************** +*** 5592,5598 **** + eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" + rm -f -- "${tmp_mkf}" + vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" +! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS} ${python3_LINKFORSHARED}" + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` + +--- 5613,5619 ---- + eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" + rm -f -- "${tmp_mkf}" + vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" +! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` + +*************** +*** 5601,5609 **** + + 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} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + else +! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" + if test "x$MACOSX" = "xyes"; then +--- 5622,5630 ---- + + 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}\\\"" + else +! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" + if test "x$MACOSX" = "xyes"; then +*** ../mercurial/vim73/src/configure.in 2011-05-10 15:41:59.000000000 +0200 +--- src/configure.in 2011-06-12 21:31:18.000000000 +0200 +*************** +*** 992,997 **** +--- 992,1008 ---- + ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'` + ]]) + ++ dnl -- get abiflags for python 3.2 or higher (PEP 3149) ++ AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags, ++ [ ++ vi_cv_var_python3_abiflags= ++ if ${vi_cv_path_python3} -c \ ++ "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)" ++ then ++ vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \ ++ "import sys; print(sys.abiflags)"` ++ fi ]) ++ + dnl -- find where python3 thinks it was installed + AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx, + [ vi_cv_path_python3_pfx=` +*************** +*** 1021,1029 **** + AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf, + [ + vi_cv_path_python3_conf= + for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do + for subdir in lib64 lib share; do +! d="${path}/${subdir}/python${vi_cv_var_python3_version}/config" + if test -d "$d" && test -f "$d/config.c"; then + vi_cv_path_python3_conf="$d" + fi +--- 1032,1044 ---- + AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf, + [ + vi_cv_path_python3_conf= ++ config_dir="config" ++ if test "${vi_cv_var_python3_abiflags}" != ""; then ++ config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" ++ fi + for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do + for subdir in lib64 lib share; do +! d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}" + if test -d "$d" && test -f "$d/config.c"; then + vi_cv_path_python3_conf="$d" + fi +*************** +*** 1055,1061 **** + eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" + rm -f -- "${tmp_mkf}" + vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" +! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS} ${python3_LINKFORSHARED}" + dnl remove -ltermcap, it can conflict with an earlier -lncurses + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` +--- 1070,1076 ---- + eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" + rm -f -- "${tmp_mkf}" + vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" +! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" + dnl remove -ltermcap, it can conflict with an earlier -lncurses + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` +*************** +*** 1063,1071 **** + + 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} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + else +! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" + dnl For Mac OSX 10.2 config.o is included in the Python library. +--- 1078,1086 ---- + + 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}\\\"" + else +! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" + dnl For Mac OSX 10.2 config.o is included in the Python library. +*** ../vim-7.3.211/src/version.c 2011-06-12 21:24:56.000000000 +0200 +--- src/version.c 2011-06-12 21:35:31.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 212, + /**/ + +-- +In Joseph Heller's novel "Catch-22", the main character tries to get out of a +war by proving he is crazy. But the mere fact he wants to get out of the war +only shows he isn't crazy -- creating the original "Catch-22". + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.213 b/source/ap/vim/patches/7.3.213 new file mode 100644 index 00000000..d3ef325e --- /dev/null +++ b/source/ap/vim/patches/7.3.213 @@ -0,0 +1,142 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.213 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.213 +Problem: Javascript object literal is not indented correctly. +Solution: Make a special case for when "J1" is in 'cino'. (Luc Deschenaux) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../mercurial/vim73/src/misc1.c 2011-05-25 17:29:40.000000000 +0200 +--- src/misc1.c 2011-06-10 04:58:10.000000000 +0200 +*************** +*** 6965,6971 **** + * ldfd) { + * } + */ +! if ((ind_keep_case_label + && cin_iscase(skipwhite(ml_get_curline()), FALSE))) + amount = get_indent(); + else +--- 6965,6971 ---- + * ldfd) { + * } + */ +! if (ind_js || (ind_keep_case_label + && cin_iscase(skipwhite(ml_get_curline()), FALSE))) + amount = get_indent(); + else +*** ../mercurial/vim73/src/testdir/test3.in 2011-05-25 15:16:06.000000000 +0200 +--- src/testdir/test3.in 2011-06-12 21:44:12.000000000 +0200 +*************** +*** 1492,1501 **** + + STARTTEST + :set cino=N-s +! /namespaces + =/^NAMESPACEEND + ENDTEST + + /* valid namespaces with normal indent */ + namespace + { +--- 1492,1502 ---- + + STARTTEST + :set cino=N-s +! /^NAMESPACESTART + =/^NAMESPACEEND + ENDTEST + ++ NAMESPACESTART + /* valid namespaces with normal indent */ + namespace + { +*************** +*** 1561,1566 **** +--- 1562,1588 ---- + + + STARTTEST ++ :set cino=J1 ++ /^JSSTART ++ =/^JSEND ++ ENDTEST ++ ++ JSSTART ++ var bar = { ++ foo: { ++ that: this, ++ some: ok, ++ }, ++ "bar":{ ++ a : 2, ++ b: "123abc", ++ x: 4, ++ "y": 5 ++ } ++ } ++ JSEND ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/start of AUTO/,$wq! test.out + ENDTEST +*** ../mercurial/vim73/src/testdir/test3.ok 2011-05-25 15:16:06.000000000 +0200 +--- src/testdir/test3.ok 2011-06-12 21:44:26.000000000 +0200 +*************** +*** 1337,1342 **** +--- 1337,1343 ---- + } + + ++ NAMESPACESTART + /* valid namespaces with normal indent */ + namespace + { +*************** +*** 1401,1403 **** +--- 1402,1420 ---- + NAMESPACEEND + + ++ ++ JSSTART ++ var bar = { ++ foo: { ++ that: this, ++ some: ok, ++ }, ++ "bar":{ ++ a : 2, ++ b: "123abc", ++ x: 4, ++ "y": 5 ++ } ++ } ++ JSEND ++ +*** ../vim-7.3.212/src/version.c 2011-06-12 21:37:06.000000000 +0200 +--- src/version.c 2011-06-12 21:48:34.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 213, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +169. You hire a housekeeper for your home page. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.214 b/source/ap/vim/patches/7.3.214 new file mode 100644 index 00000000..a095bbc4 --- /dev/null +++ b/source/ap/vim/patches/7.3.214 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.214 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.214 +Problem: The text displayed by ":z-" isn't exactly like old Vi. +Solution: Add one to the start line number. (ChangZhuo Chen) +Files: src/ex_cmds.c + + +*** ../mercurial/vim73/src/ex_cmds.c 2011-05-19 14:30:07.000000000 +0200 +--- src/ex_cmds.c 2011-05-19 14:23:33.000000000 +0200 +*************** +*** 4097,4104 **** + switch (*kind) + { + case '-': +! start = lnum - bigness * (linenr_T)(x - kind); +! end = start + bigness; + curs = end; + break; + +--- 4097,4104 ---- + switch (*kind) + { + case '-': +! start = lnum - bigness * (linenr_T)(x - kind) + 1; +! end = start + bigness - 1; + curs = end; + break; + +*** ../vim-7.3.213/src/version.c 2011-06-12 21:51:01.000000000 +0200 +--- src/version.c 2011-06-12 22:02:20.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 214, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +170. You introduce your wife as "my_lady@home.wife" and refer to your + children as "forked processes." + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.215 b/source/ap/vim/patches/7.3.215 new file mode 100644 index 00000000..24d37fbf --- /dev/null +++ b/source/ap/vim/patches/7.3.215 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.215 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.215 (after 7.3.210) +Problem: Wrong file names in previous patch. (Toothpik) +Solution: Include the option changes. +Files: src/option.c, src/option.h + + +*** ../mercurial/vim73/src/option.c 2011-05-19 13:40:47.000000000 +0200 +--- src/option.c 2011-06-12 19:58:17.000000000 +0200 +*************** +*** 901,906 **** +--- 901,913 ---- + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, ++ {"cscoperelative", "csre", P_BOOL|P_VI_DEF|P_VIM, ++ #ifdef FEAT_CSCOPE ++ (char_u *)&p_csre, PV_NONE, ++ #else ++ (char_u *)NULL, PV_NONE, ++ #endif ++ {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, + {"cscopetag", "cst", P_BOOL|P_VI_DEF|P_VIM, + #ifdef FEAT_CSCOPE + (char_u *)&p_cst, PV_NONE, +*** ../mercurial/vim73/src/option.h 2011-05-19 13:40:47.000000000 +0200 +--- src/option.h 2011-06-12 19:58:49.000000000 +0200 +*************** +*** 391,396 **** +--- 391,397 ---- + EXTERN char_u *p_cpo; /* 'cpoptions' */ + #ifdef FEAT_CSCOPE + EXTERN char_u *p_csprg; /* 'cscopeprg' */ ++ EXTERN int p_csre; /* 'cscoperelative' */ + # ifdef FEAT_QUICKFIX + EXTERN char_u *p_csqf; /* 'cscopequickfix' */ + # define CSQF_CMDS "sgdctefi" +*** ../vim-7.3.214/src/version.c 2011-06-12 22:03:15.000000000 +0200 +--- src/version.c 2011-06-12 22:12:34.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 215, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +171. You invent another person and chat with yourself in empty chat rooms. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.216 b/source/ap/vim/patches/7.3.216 new file mode 100644 index 00000000..a52bc936 --- /dev/null +++ b/source/ap/vim/patches/7.3.216 @@ -0,0 +1,263 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.216 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.216 +Problem: When recovering a file a range of lines is missing. (Charles Jie) +Solution: Reset the index when advancing to the next pointer block. Add a + test to verify recovery works. +Files: src/memline.c, src/testdir/test78.in, src/testdir/test78.ok, + src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + + +*** ../mercurial/vim73/src/memline.c 2011-05-10 16:41:13.000000000 +0200 +--- src/memline.c 2011-06-13 00:56:09.000000000 +0200 +*************** +*** 1507,1512 **** +--- 1507,1513 ---- + bnum = pp->pb_pointer[idx].pe_bnum; + line_count = pp->pb_pointer[idx].pe_line_count; + page_count = pp->pb_pointer[idx].pe_page_count; ++ idx = 0; + continue; + } + } +*** ../mercurial/vim73/src/testdir/test78.in 2011-06-13 01:05:54.000000000 +0200 +--- src/testdir/test78.in 2011-06-13 00:54:48.000000000 +0200 +*************** +*** 0 **** +--- 1,46 ---- ++ Inserts 10000 lines with text to fill the swap file with two levels of pointer ++ blocks. Then recovers from the swap file and checks all text is restored. ++ ++ We need about 10000 lines of 100 characters to get two levels of pointer ++ blocks. ++ ++ STARTTEST ++ :so small.vim ++ :set nocp fileformat=unix undolevels=-1 ++ :e! Xtest ++ ggdG ++ :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789" ++ :let i = 1 ++ :let linecount = 10000 ++ :while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile ++ :preserve ++ :" get the name of the swap file ++ :redir => swapname ++ :swapname ++ :redir END ++ :let swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\1', '') ++ :" make a copy of the swap file in Xswap ++ :set bin ++ :exe 'sp ' . swapname ++ :w! Xswap ++ :echo swapname ++ :set nobin ++ :new ++ :only! ++ :bwipe! Xtest ++ :call rename('Xswap', swapname) ++ :recover Xtest ++ :call delete(swapname) ++ :new ++ :call append(0, 'recovery start') ++ :wincmd w ++ :let linedollar = line('$') ++ :if linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected " . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let linecount = linedollar | endif ++ :let i = 1 ++ :while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call append(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile ++ :q! ++ :call append(line('$'), 'recovery end') ++ :w! test.out ++ :qa! ++ ENDTEST ++ +*** ../mercurial/vim73/src/testdir/test78.ok 2011-06-13 01:05:54.000000000 +0200 +--- src/testdir/test78.ok 2011-06-13 00:25:05.000000000 +0200 +*************** +*** 0 **** +--- 1,3 ---- ++ recovery start ++ ++ recovery end +*** ../mercurial/vim73/src/testdir/Makefile 2011-03-22 18:10:34.000000000 +0100 +--- src/testdir/Makefile 2011-06-13 00:35:46.000000000 +0200 +*************** +*** 25,31 **** + test59.out test60.out test61.out test62.out test63.out \ + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ +! test74.out test75.out test76.out test77.out + + SCRIPTS_GUI = test16.out + +--- 25,31 ---- + test59.out test60.out test61.out test62.out test63.out \ + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ +! test74.out test75.out test76.out test77.out test78.out + + SCRIPTS_GUI = test16.out + +*************** +*** 71,77 **** + fi \ + else echo $* NO OUTPUT >>test.log; \ + fi" +! # -rm -rf X* test.ok viminfo + + test49.out: test49.vim + +--- 71,77 ---- + fi \ + else echo $* NO OUTPUT >>test.log; \ + fi" +! -rm -rf X* test.ok viminfo + + test49.out: test49.vim + +*** ../mercurial/vim73/src/testdir/Make_amiga.mak 2011-03-22 18:10:34.000000000 +0100 +--- src/testdir/Make_amiga.mak 2011-06-13 01:00:42.000000000 +0200 +*************** +*** 28,34 **** + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ +! test76.out test77.out + + .SUFFIXES: .in .out + +--- 28,34 ---- + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ +! test76.out test77.out test78.out + + .SUFFIXES: .in .out + +*************** +*** 125,127 **** +--- 125,128 ---- + test75.out: test75.in + test76.out: test76.in + test77.out: test77.in ++ test78.out: test78.in +*** ../mercurial/vim73/src/testdir/Make_dos.mak 2011-03-22 18:10:34.000000000 +0100 +--- src/testdir/Make_dos.mak 2011-06-13 01:00:55.000000000 +0200 +*************** +*** 28,34 **** + test37.out test38.out test39.out test40.out test41.out \ + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ +! test74.out test75.out test76.out test77.out + + SCRIPTS32 = test50.out test70.out + +--- 28,34 ---- + test37.out test38.out test39.out test40.out test41.out \ + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ +! test74.out test75.out test76.out test77.out test78.out + + SCRIPTS32 = test50.out test70.out + +*** ../mercurial/vim73/src/testdir/Make_ming.mak 2011-03-22 18:10:34.000000000 +0100 +--- src/testdir/Make_ming.mak 2011-06-13 01:01:02.000000000 +0200 +*************** +*** 48,54 **** + test37.out test38.out test39.out test40.out test41.out \ + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ +! test74.out test75.out test76.out test77.out + + SCRIPTS32 = test50.out test70.out + +--- 48,54 ---- + test37.out test38.out test39.out test40.out test41.out \ + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ +! test74.out test75.out test76.out test77.out test78.out + + SCRIPTS32 = test50.out test70.out + +*** ../mercurial/vim73/src/testdir/Make_os2.mak 2011-03-22 18:10:34.000000000 +0100 +--- src/testdir/Make_os2.mak 2011-06-13 01:01:08.000000000 +0200 +*************** +*** 28,34 **** + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ +! test76.out test77.out + + .SUFFIXES: .in .out + +--- 28,34 ---- + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ +! test76.out test77.out test78.out + + .SUFFIXES: .in .out + +*** ../mercurial/vim73/src/testdir/Make_vms.mms 2011-04-28 19:05:01.000000000 +0200 +--- src/testdir/Make_vms.mms 2011-06-13 01:01:29.000000000 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2011 Mar 03 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2011 Jun 13 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 75,81 **** + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ +! test77.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 75,81 ---- + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ +! test77.out test78.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.215/src/version.c 2011-06-12 22:13:37.000000000 +0200 +--- src/version.c 2011-06-13 00:59:02.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 216, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +172. You join listservers just for the extra e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.217 b/source/ap/vim/patches/7.3.217 new file mode 100644 index 00000000..be04b863 --- /dev/null +++ b/source/ap/vim/patches/7.3.217 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.217 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.217 +Problem: Inside an "if" a ":wincmd" causes problems. +Solution: When skipping commands let ":wincmd" skip over its argument. +Files: src/ex_docmd.c + + +*** ../mercurial/vim73/src/ex_docmd.c 2011-05-25 12:51:17.000000000 +0200 +--- src/ex_docmd.c 2011-06-13 01:15:17.000000000 +0200 +*************** +*** 2595,2600 **** +--- 2595,2601 ---- + case CMD_unlet: + case CMD_verbose: + case CMD_vertical: ++ case CMD_wincmd: + break; + + default: goto doend; +*************** +*** 8237,8243 **** + p = skipwhite(p); + if (*p != NUL && *p != '"' && eap->nextcmd == NULL) + EMSG(_(e_invarg)); +! else + { + /* Pass flags on for ":vertical wincmd ]". */ + postponed_split_flags = cmdmod.split; +--- 8238,8244 ---- + p = skipwhite(p); + if (*p != NUL && *p != '"' && eap->nextcmd == NULL) + EMSG(_(e_invarg)); +! else if (!eap->skip) + { + /* Pass flags on for ":vertical wincmd ]". */ + postponed_split_flags = cmdmod.split; +*** ../vim-7.3.216/src/version.c 2011-06-13 01:07:22.000000000 +0200 +--- src/version.c 2011-06-13 01:18:48.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 217, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +173. You keep tracking down the email addresses of all your friends + (even childhood friends). + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.218 b/source/ap/vim/patches/7.3.218 new file mode 100644 index 00000000..1da18d81 --- /dev/null +++ b/source/ap/vim/patches/7.3.218 @@ -0,0 +1,91 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.218 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.218 (after 7.3.212) +Problem: Tiny configuration problem with Python 3. +Solution: Add abiflags in one more place. (Andreas Behr) +Files: src/auto/configure, src/configure.in + + +*** ../mercurial/vim73/src/auto/configure 2011-06-12 21:37:06.000000000 +0200 +--- src/auto/configure 2011-06-13 01:26:50.000000000 +0200 +*************** +*** 5607,5613 **** + @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'" + @echo "python3_LIBS='$(LIBS)'" + @echo "python3_SYSLIBS='$(SYSLIBS)'" +- @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'" + @echo "python3_INSTSONAME='$(INSTSONAME)'" + eof + eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" +--- 5607,5612 ---- +*************** +*** 5624,5630 **** + 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}\\\"" + else +! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" + if test "x$MACOSX" = "xyes"; then +--- 5623,5629 ---- + 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}\\\"" + else +! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" + if test "x$MACOSX" = "xyes"; then +*** ../mercurial/vim73/src/configure.in 2011-06-12 21:37:06.000000000 +0200 +--- src/configure.in 2011-06-13 01:26:35.000000000 +0200 +*************** +*** 1063,1069 **** + @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'" + @echo "python3_LIBS='$(LIBS)'" + @echo "python3_SYSLIBS='$(SYSLIBS)'" +- @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'" + @echo "python3_INSTSONAME='$(INSTSONAME)'" + eof + dnl -- delete the lines from make about Entering/Leaving directory +--- 1063,1068 ---- +*************** +*** 1080,1086 **** + 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}\\\"" + else +! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" + dnl For Mac OSX 10.2 config.o is included in the Python library. +--- 1079,1085 ---- + 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}\\\"" + else +! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" + dnl For Mac OSX 10.2 config.o is included in the Python library. +*** ../vim-7.3.217/src/version.c 2011-06-13 01:19:48.000000000 +0200 +--- src/version.c 2011-06-13 01:29:42.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 218, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +174. You know what a listserv is. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.219 b/source/ap/vim/patches/7.3.219 new file mode 100644 index 00000000..2ec11179 --- /dev/null +++ b/source/ap/vim/patches/7.3.219 @@ -0,0 +1,92 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.219 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.219 +Problem: Can't compile with GTK on Mac. +Solution: Add some #ifdef trickery. (Ben Schmidt) +Files: src/os_mac_conv.c, src/os_macosx.m, src/vim.h + + +*** ../mercurial/vim73/src/os_mac_conv.c 2010-08-16 21:23:30.000000000 +0200 +--- src/os_mac_conv.c 2011-06-13 01:55:17.000000000 +0200 +*************** +*** 14,19 **** +--- 14,21 ---- + */ + + #define NO_X11_INCLUDES ++ #define BalloonEval int /* used in header files */ ++ + #include "vim.h" + #ifndef FEAT_GUI_MAC + # include <CoreServices/CoreServices.h> +*** ../mercurial/vim73/src/os_macosx.m 2010-10-10 17:08:28.000000000 +0200 +--- src/os_macosx.m 2011-06-13 01:58:47.000000000 +0200 +*************** +*** 18,23 **** +--- 18,24 ---- + /* Avoid a conflict for the definition of Boolean between Mac header files and + * X11 header files. */ + #define NO_X11_INCLUDES ++ #define BalloonEval int /* used in header files */ + + #include "vim.h" + #import <Cocoa/Cocoa.h> +*************** +*** 27,35 **** + * Clipboard support for the console. + * Don't include this when building the GUI version, the functions in + * gui_mac.c are used then. TODO: remove those instead? +! * But for MacVim we need these ones. + */ +! #if defined(FEAT_CLIPBOARD) && (!defined(FEAT_GUI) || defined(FEAT_GUI_MACVIM)) + + /* Used to identify clipboard data copied from Vim. */ + +--- 28,36 ---- + * Clipboard support for the console. + * Don't include this when building the GUI version, the functions in + * gui_mac.c are used then. TODO: remove those instead? +! * But for MacVim we do need these ones. + */ +! #if defined(FEAT_CLIPBOARD) && (!defined(FEAT_GUI_ENABLED) || defined(FEAT_GUI_MACVIM)) + + /* Used to identify clipboard data copied from Vim. */ + +*** ../mercurial/vim73/src/vim.h 2011-05-19 18:26:34.000000000 +0200 +--- src/vim.h 2011-06-13 01:57:17.000000000 +0200 +*************** +*** 121,126 **** +--- 121,127 ---- + || defined(FEAT_GUI_W32) \ + || defined(FEAT_GUI_W16) \ + || defined(FEAT_GUI_PHOTON) ++ # define FEAT_GUI_ENABLED /* also defined with NO_X11_INCLUDES */ + # if !defined(FEAT_GUI) && !defined(NO_X11_INCLUDES) + # define FEAT_GUI + # endif +*** ../vim-7.3.218/src/version.c 2011-06-13 01:32:42.000000000 +0200 +--- src/version.c 2011-06-13 02:03:02.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 219, + /**/ + +-- +If Microsoft would build a car... +... the oil, water temperature, and alternator warning lights would +all be replaced by a single "General Protection Fault" warning light. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.220 b/source/ap/vim/patches/7.3.220 new file mode 100644 index 00000000..0122e7fc --- /dev/null +++ b/source/ap/vim/patches/7.3.220 @@ -0,0 +1,1230 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.220 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.220 +Problem: Python 3: vim.error is a 'str' instead of an 'Exception' object, + so 'except' or 'raise' it causes a 'SystemError' exception. + Buffer objects do not support slice assignment. + When exchanging text between Vim and Python, multibyte texts become + gabage or cause Unicode Expceptions, etc. + 'py3file' tries to read in the file as Unicode, sometimes causes + UnicodeDecodeException +Solution: Fix the problems. (lilydjwg) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + + +*** ../mercurial/vim73/src/if_py_both.h 2011-03-22 15:47:18.000000000 +0100 +--- src/if_py_both.h 2011-06-18 23:54:25.000000000 +0200 +*************** +*** 65,74 **** + OutputWrite(PyObject *self, PyObject *args) + { + int len; +! char *str; + int error = ((OutputObject *)(self))->error; + +! if (!PyArg_ParseTuple(args, "s#", &str, &len)) + return NULL; + + Py_BEGIN_ALLOW_THREADS +--- 65,74 ---- + OutputWrite(PyObject *self, PyObject *args) + { + int len; +! char *str = NULL; + int error = ((OutputObject *)(self))->error; + +! if (!PyArg_ParseTuple(args, "es#", p_enc, &str, &len)) + return NULL; + + Py_BEGIN_ALLOW_THREADS +*************** +*** 76,81 **** +--- 76,82 ---- + writer((writefn)(error ? emsg : msg), (char_u *)str, len); + Python_Release_Vim(); + Py_END_ALLOW_THREADS ++ PyMem_Free(str); + + Py_INCREF(Py_None); + return Py_None; +*************** +*** 104,113 **** + for (i = 0; i < n; ++i) + { + PyObject *line = PyList_GetItem(list, i); +! char *str; + PyInt len; + +! if (!PyArg_Parse(line, "s#", &str, &len)) { + PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); + Py_DECREF(list); + return NULL; +--- 105,114 ---- + for (i = 0; i < n; ++i) + { + PyObject *line = PyList_GetItem(list, i); +! char *str = NULL; + PyInt len; + +! if (!PyArg_Parse(line, "es#", p_enc, &str, &len)) { + PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); + Py_DECREF(list); + return NULL; +*************** +*** 118,123 **** +--- 119,125 ---- + writer((writefn)(error ? emsg : msg), (char_u *)str, len); + Python_Release_Vim(); + Py_END_ALLOW_THREADS ++ PyMem_Free(str); + } + + Py_DECREF(list); +*************** +*** 681,686 **** +--- 683,689 ---- + { + const char *str; + char *save; ++ PyObject *bytes; + PyInt len; + PyInt i; + char *p; +*************** +*** 691,698 **** + return NULL; + } + +! str = PyString_AsString(obj); +! len = PyString_Size(obj); + + /* + * Error checking: String must not contain newlines, as we +--- 694,702 ---- + return NULL; + } + +! bytes = PyString_AsBytes(obj); /* for Python 2 this does nothing */ +! str = PyString_AsString(bytes); +! len = PyString_Size(bytes); + + /* + * Error checking: String must not contain newlines, as we +*************** +*** 731,736 **** +--- 735,741 ---- + } + + save[i] = '\0'; ++ PyString_FreeBytes(bytes); /* Python 2 does nothing here */ + + return save; + } +*************** +*** 817,823 **** + invalidate_botline(); + } + +! /* Replace a line in the specified buffer. The line number is + * in Vim format (1-based). The replacement line is given as + * a Python string object. The object is checked for validity + * and correct format. Errors are returned as a value of FAIL. +--- 822,829 ---- + invalidate_botline(); + } + +! /* +! * Replace a line in the specified buffer. The line number is + * in Vim format (1-based). The replacement line is given as + * a Python string object. The object is checked for validity + * and correct format. Errors are returned as a value of FAIL. +*************** +*** 908,913 **** +--- 914,1106 ---- + } + } + ++ /* Replace a range of lines in the specified buffer. The line numbers are in ++ * Vim format (1-based). The range is from lo up to, but not including, hi. ++ * The replacement lines are given as a Python list of string objects. The ++ * list is checked for validity and correct format. Errors are returned as a ++ * value of FAIL. The return value is OK on success. ++ * If OK is returned and len_change is not NULL, *len_change ++ * is set to the change in the buffer length. ++ */ ++ static int ++ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change) ++ { ++ /* First of all, we check the thpe of the supplied Python object. ++ * There are three cases: ++ * 1. NULL, or None - this is a deletion. ++ * 2. A list - this is a replacement. ++ * 3. Anything else - this is an error. ++ */ ++ if (list == Py_None || list == NULL) ++ { ++ PyInt i; ++ PyInt n = (int)(hi - lo); ++ buf_T *savebuf = curbuf; ++ ++ PyErr_Clear(); ++ curbuf = buf; ++ ++ if (u_savedel((linenr_T)lo, (long)n) == FAIL) ++ PyErr_SetVim(_("cannot save undo information")); ++ else ++ { ++ for (i = 0; i < n; ++i) ++ { ++ if (ml_delete((linenr_T)lo, FALSE) == FAIL) ++ { ++ PyErr_SetVim(_("cannot delete line")); ++ break; ++ } ++ } ++ if (buf == curwin->w_buffer) ++ py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n); ++ deleted_lines_mark((linenr_T)lo, (long)i); ++ } ++ ++ curbuf = savebuf; ++ ++ if (PyErr_Occurred() || VimErrorCheck()) ++ return FAIL; ++ ++ if (len_change) ++ *len_change = -n; ++ ++ return OK; ++ } ++ else if (PyList_Check(list)) ++ { ++ PyInt i; ++ PyInt new_len = PyList_Size(list); ++ PyInt old_len = hi - lo; ++ PyInt extra = 0; /* lines added to text, can be negative */ ++ char **array; ++ buf_T *savebuf; ++ ++ if (new_len == 0) /* avoid allocating zero bytes */ ++ array = NULL; ++ else ++ { ++ array = (char **)alloc((unsigned)(new_len * sizeof(char *))); ++ if (array == NULL) ++ { ++ PyErr_NoMemory(); ++ return FAIL; ++ } ++ } ++ ++ for (i = 0; i < new_len; ++i) ++ { ++ PyObject *line = PyList_GetItem(list, i); ++ ++ array[i] = StringToLine(line); ++ if (array[i] == NULL) ++ { ++ while (i) ++ vim_free(array[--i]); ++ vim_free(array); ++ return FAIL; ++ } ++ } ++ ++ savebuf = curbuf; ++ ++ PyErr_Clear(); ++ curbuf = buf; ++ ++ if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL) ++ PyErr_SetVim(_("cannot save undo information")); ++ ++ /* If the size of the range is reducing (ie, new_len < old_len) we ++ * need to delete some old_len. We do this at the start, by ++ * repeatedly deleting line "lo". ++ */ ++ if (!PyErr_Occurred()) ++ { ++ for (i = 0; i < old_len - new_len; ++i) ++ if (ml_delete((linenr_T)lo, FALSE) == FAIL) ++ { ++ PyErr_SetVim(_("cannot delete line")); ++ break; ++ } ++ extra -= i; ++ } ++ ++ /* For as long as possible, replace the existing old_len with the ++ * new old_len. This is a more efficient operation, as it requires ++ * less memory allocation and freeing. ++ */ ++ if (!PyErr_Occurred()) ++ { ++ for (i = 0; i < old_len && i < new_len; ++i) ++ if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], FALSE) ++ == FAIL) ++ { ++ PyErr_SetVim(_("cannot replace line")); ++ break; ++ } ++ } ++ else ++ i = 0; ++ ++ /* Now we may need to insert the remaining new old_len. If we do, we ++ * must free the strings as we finish with them (we can't pass the ++ * responsibility to vim in this case). ++ */ ++ if (!PyErr_Occurred()) ++ { ++ while (i < new_len) ++ { ++ if (ml_append((linenr_T)(lo + i - 1), ++ (char_u *)array[i], 0, FALSE) == FAIL) ++ { ++ PyErr_SetVim(_("cannot insert line")); ++ break; ++ } ++ vim_free(array[i]); ++ ++i; ++ ++extra; ++ } ++ } ++ ++ /* Free any left-over old_len, as a result of an error */ ++ while (i < new_len) ++ { ++ vim_free(array[i]); ++ ++i; ++ } ++ ++ /* Free the array of old_len. All of its contents have now ++ * been dealt with (either freed, or the responsibility passed ++ * to vim. ++ */ ++ vim_free(array); ++ ++ /* Adjust marks. Invalidate any which lie in the ++ * changed range, and move any in the remainder of the buffer. ++ */ ++ mark_adjust((linenr_T)lo, (linenr_T)(hi - 1), ++ (long)MAXLNUM, (long)extra); ++ changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra); ++ ++ if (buf == curwin->w_buffer) ++ py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra); ++ ++ curbuf = savebuf; ++ ++ if (PyErr_Occurred() || VimErrorCheck()) ++ return FAIL; ++ ++ if (len_change) ++ *len_change = new_len - old_len; ++ ++ return OK; ++ } ++ else ++ { ++ PyErr_BadArgument(); ++ return FAIL; ++ } ++ } + + /* Insert a number of lines into the specified buffer after the specifed line. + * The line number is in Vim format (1-based). The lines to be inserted are +*************** +*** 1108,1113 **** +--- 1301,1340 ---- + return -1; + + if (new_end) ++ *new_end = end + len_change; ++ ++ return 0; ++ } ++ ++ static PyInt ++ RBAsSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, PyInt start, PyInt end, PyInt *new_end) ++ { ++ PyInt size; ++ PyInt len_change; ++ ++ /* Self must be a valid buffer */ ++ if (CheckBuffer(self)) ++ return -1; ++ ++ /* Sort out the slice range */ ++ size = end - start + 1; ++ ++ if (lo < 0) ++ lo = 0; ++ else if (lo > size) ++ lo = size; ++ if (hi < 0) ++ hi = 0; ++ if (hi < lo) ++ hi = lo; ++ else if (hi > size) ++ hi = size; ++ ++ if (SetBufferLineList(self->buf, lo + start, hi + start, ++ val, &len_change) == FAIL) ++ return -1; ++ ++ if (new_end) + *new_end = end + len_change; + + return 0; +*** ../mercurial/vim73/src/if_python.c 2011-03-26 18:32:00.000000000 +0100 +--- src/if_python.c 2011-06-19 00:02:15.000000000 +0200 +*************** +*** 56,61 **** +--- 56,65 ---- + + static void init_structs(void); + ++ /* No-op conversion functions, use with care! */ ++ #define PyString_AsBytes(obj) (obj) ++ #define PyString_FreeBytes(obj) ++ + #if !defined(FEAT_PYTHON) && defined(PROTO) + /* Use this to be able to generate prototypes without python being used. */ + # define PyObject Py_ssize_t +*************** +*** 129,134 **** +--- 133,139 ---- + */ + # define PyArg_Parse dll_PyArg_Parse + # define PyArg_ParseTuple dll_PyArg_ParseTuple ++ # define PyMem_Free dll_PyMem_Free + # define PyDict_SetItemString dll_PyDict_SetItemString + # define PyErr_BadArgument dll_PyErr_BadArgument + # define PyErr_Clear dll_PyErr_Clear +*************** +*** 189,194 **** +--- 194,200 ---- + */ + static int(*dll_PyArg_Parse)(PyObject *, char *, ...); + static int(*dll_PyArg_ParseTuple)(PyObject *, char *, ...); ++ static int(*dll_PyMem_Free)(void *); + static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); + static int(*dll_PyErr_BadArgument)(void); + static void(*dll_PyErr_Clear)(void); +*************** +*** 271,276 **** +--- 277,283 ---- + { + {"PyArg_Parse", (PYTHON_PROC*)&dll_PyArg_Parse}, + {"PyArg_ParseTuple", (PYTHON_PROC*)&dll_PyArg_ParseTuple}, ++ {"PyMem_Free", (PYTHON_PROC*)&dll_PyMem_Free}, + {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString}, + {"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument}, + {"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear}, +*************** +*** 833,876 **** + static PyObject *CurrentGetattr(PyObject *, char *); + static int CurrentSetattr(PyObject *, char *, PyObject *); + +- /* Common routines for buffers and line ranges +- * ------------------------------------------- +- */ +- +- static PyInt +- RBAssSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, PyInt start, PyInt end, PyInt *new_end) +- { +- PyInt size; +- PyInt len_change; +- +- /* Self must be a valid buffer */ +- if (CheckBuffer(self)) +- return -1; +- +- /* Sort out the slice range */ +- size = end - start + 1; +- +- if (lo < 0) +- lo = 0; +- else if (lo > size) +- lo = size; +- if (hi < 0) +- hi = 0; +- if (hi < lo) +- hi = lo; +- else if (hi > size) +- hi = size; +- +- if (SetBufferLineList(self->buf, lo + start, hi + start, +- val, &len_change) == FAIL) +- return -1; +- +- if (new_end) +- *new_end = end + len_change; +- +- return 0; +- } +- + static PySequenceMethods BufferAsSeq = { + (PyInquiry) BufferLength, /* sq_length, len(x) */ + (binaryfunc) 0, /* BufferConcat, */ /* sq_concat, x+y */ +--- 840,845 ---- +*************** +*** 1038,1044 **** + static PyInt + BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val) + { +! return RBAssSlice((BufferObject *)(self), lo, hi, val, 1, + (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, + NULL); + } +--- 1007,1013 ---- + static PyInt + BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val) + { +! return RBAsSlice((BufferObject *)(self), lo, hi, val, 1, + (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, + NULL); + } +*************** +*** 1088,1094 **** + static PyInt + RangeAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val) + { +! return RBAssSlice(((RangeObject *)(self))->buf, lo, hi, val, + ((RangeObject *)(self))->start, + ((RangeObject *)(self))->end, + &((RangeObject *)(self))->end); +--- 1057,1063 ---- + static PyInt + RangeAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val) + { +! return RBAsSlice(((RangeObject *)(self))->buf, lo, hi, val, + ((RangeObject *)(self))->start, + ((RangeObject *)(self))->end, + &((RangeObject *)(self))->end); +*************** +*** 1435,1628 **** + * 4. Utility functions for handling the interface between Vim and Python. + */ + +- /* Replace a range of lines in the specified buffer. The line numbers are in +- * Vim format (1-based). The range is from lo up to, but not including, hi. +- * The replacement lines are given as a Python list of string objects. The +- * list is checked for validity and correct format. Errors are returned as a +- * value of FAIL. The return value is OK on success. +- * If OK is returned and len_change is not NULL, *len_change +- * is set to the change in the buffer length. +- */ +- static int +- SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change) +- { +- /* First of all, we check the thpe of the supplied Python object. +- * There are three cases: +- * 1. NULL, or None - this is a deletion. +- * 2. A list - this is a replacement. +- * 3. Anything else - this is an error. +- */ +- if (list == Py_None || list == NULL) +- { +- PyInt i; +- PyInt n = (int)(hi - lo); +- buf_T *savebuf = curbuf; +- +- PyErr_Clear(); +- curbuf = buf; +- +- if (u_savedel((linenr_T)lo, (long)n) == FAIL) +- PyErr_SetVim(_("cannot save undo information")); +- else +- { +- for (i = 0; i < n; ++i) +- { +- if (ml_delete((linenr_T)lo, FALSE) == FAIL) +- { +- PyErr_SetVim(_("cannot delete line")); +- break; +- } +- } +- if (buf == curwin->w_buffer) +- py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n); +- deleted_lines_mark((linenr_T)lo, (long)i); +- } +- +- curbuf = savebuf; +- +- if (PyErr_Occurred() || VimErrorCheck()) +- return FAIL; +- +- if (len_change) +- *len_change = -n; +- +- return OK; +- } +- else if (PyList_Check(list)) +- { +- PyInt i; +- PyInt new_len = PyList_Size(list); +- PyInt old_len = hi - lo; +- PyInt extra = 0; /* lines added to text, can be negative */ +- char **array; +- buf_T *savebuf; +- +- if (new_len == 0) /* avoid allocating zero bytes */ +- array = NULL; +- else +- { +- array = (char **)alloc((unsigned)(new_len * sizeof(char *))); +- if (array == NULL) +- { +- PyErr_NoMemory(); +- return FAIL; +- } +- } +- +- for (i = 0; i < new_len; ++i) +- { +- PyObject *line = PyList_GetItem(list, i); +- +- array[i] = StringToLine(line); +- if (array[i] == NULL) +- { +- while (i) +- vim_free(array[--i]); +- vim_free(array); +- return FAIL; +- } +- } +- +- savebuf = curbuf; +- +- PyErr_Clear(); +- curbuf = buf; +- +- if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL) +- PyErr_SetVim(_("cannot save undo information")); +- +- /* If the size of the range is reducing (ie, new_len < old_len) we +- * need to delete some old_len. We do this at the start, by +- * repeatedly deleting line "lo". +- */ +- if (!PyErr_Occurred()) +- { +- for (i = 0; i < old_len - new_len; ++i) +- if (ml_delete((linenr_T)lo, FALSE) == FAIL) +- { +- PyErr_SetVim(_("cannot delete line")); +- break; +- } +- extra -= i; +- } +- +- /* For as long as possible, replace the existing old_len with the +- * new old_len. This is a more efficient operation, as it requires +- * less memory allocation and freeing. +- */ +- if (!PyErr_Occurred()) +- { +- for (i = 0; i < old_len && i < new_len; ++i) +- if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], FALSE) +- == FAIL) +- { +- PyErr_SetVim(_("cannot replace line")); +- break; +- } +- } +- else +- i = 0; +- +- /* Now we may need to insert the remaining new old_len. If we do, we +- * must free the strings as we finish with them (we can't pass the +- * responsibility to vim in this case). +- */ +- if (!PyErr_Occurred()) +- { +- while (i < new_len) +- { +- if (ml_append((linenr_T)(lo + i - 1), +- (char_u *)array[i], 0, FALSE) == FAIL) +- { +- PyErr_SetVim(_("cannot insert line")); +- break; +- } +- vim_free(array[i]); +- ++i; +- ++extra; +- } +- } +- +- /* Free any left-over old_len, as a result of an error */ +- while (i < new_len) +- { +- vim_free(array[i]); +- ++i; +- } +- +- /* Free the array of old_len. All of its contents have now +- * been dealt with (either freed, or the responsibility passed +- * to vim. +- */ +- vim_free(array); +- +- /* Adjust marks. Invalidate any which lie in the +- * changed range, and move any in the remainder of the buffer. +- */ +- mark_adjust((linenr_T)lo, (linenr_T)(hi - 1), +- (long)MAXLNUM, (long)extra); +- changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra); +- +- if (buf == curwin->w_buffer) +- py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra); +- +- curbuf = savebuf; +- +- if (PyErr_Occurred() || VimErrorCheck()) +- return FAIL; +- +- if (len_change) +- *len_change = new_len - old_len; +- +- return OK; +- } +- else +- { +- PyErr_BadArgument(); +- return FAIL; +- } +- } +- + /* Convert a Vim line into a Python string. + * All internal newlines are replaced by null characters. + * +--- 1404,1409 ---- +*** ../mercurial/vim73/src/if_python3.c 2011-06-12 21:37:06.000000000 +0200 +--- src/if_python3.c 2011-06-19 00:10:42.000000000 +0200 +*************** +*** 70,77 **** + + #define PyInt Py_ssize_t + #define PyString_Check(obj) PyUnicode_Check(obj) +! #define PyString_AsString(obj) _PyUnicode_AsString(obj) +! #define PyString_Size(obj) PyUnicode_GET_SIZE(obj) + #define PyString_FromString(repr) PyUnicode_FromString(repr) + + #if defined(DYNAMIC_PYTHON3) || defined(PROTO) +--- 70,79 ---- + + #define PyInt Py_ssize_t + #define PyString_Check(obj) PyUnicode_Check(obj) +! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)p_enc, NULL); +! #define PyString_FreeBytes(obj) Py_XDECREF(bytes) +! #define PyString_AsString(obj) PyBytes_AsString(obj) +! #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) + #define PyString_FromString(repr) PyUnicode_FromString(repr) + + #if defined(DYNAMIC_PYTHON3) || defined(PROTO) +*************** +*** 99,104 **** +--- 101,107 ---- + # define PyArg_Parse py3_PyArg_Parse + # undef PyArg_ParseTuple + # define PyArg_ParseTuple py3_PyArg_ParseTuple ++ # define PyMem_Free py3_PyMem_Free + # define PyDict_SetItemString py3_PyDict_SetItemString + # define PyErr_BadArgument py3_PyErr_BadArgument + # define PyErr_Clear py3_PyErr_Clear +*************** +*** 140,147 **** +--- 143,155 ---- + # define PyModule_AddObject py3_PyModule_AddObject + # define PyImport_AppendInittab py3_PyImport_AppendInittab + # define _PyUnicode_AsString py3__PyUnicode_AsString ++ # undef PyUnicode_AsEncodedString ++ # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString ++ # undef PyBytes_AsString ++ # define PyBytes_AsString py3_PyBytes_AsString + # define PyObject_GenericGetAttr py3_PyObject_GenericGetAttr + # define PySlice_Type (*py3_PySlice_Type) ++ # define PyErr_NewException py3_PyErr_NewException + # ifdef Py_DEBUG + # define _Py_NegativeRefcount py3__Py_NegativeRefcount + # define _Py_RefTotal (*py3__Py_RefTotal) +*************** +*** 157,164 **** + # define PyModule_Create2 py3_PyModule_Create2 + # undef PyUnicode_FromString + # define PyUnicode_FromString py3_PyUnicode_FromString +! # undef PyUnicode_FromStringAndSize +! # define PyUnicode_FromStringAndSize py3_PyUnicode_FromStringAndSize + + # ifdef Py_DEBUG + # undef PyObject_NEW +--- 165,172 ---- + # define PyModule_Create2 py3_PyModule_Create2 + # undef PyUnicode_FromString + # define PyUnicode_FromString py3_PyUnicode_FromString +! # undef PyUnicode_Decode +! # define PyUnicode_Decode py3_PyUnicode_Decode + + # ifdef Py_DEBUG + # undef PyObject_NEW +*************** +*** 199,205 **** + static int (*py3_PyType_Ready)(PyTypeObject *type); + static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); + static PyObject* (*py3_PyUnicode_FromString)(const char *u); +! static PyObject* (*py3_PyUnicode_FromStringAndSize)(const char *u, Py_ssize_t size); + static long (*py3_PyLong_AsLong)(PyObject *); + static void (*py3_PyErr_SetNone)(PyObject *); + static void (*py3_PyEval_InitThreads)(void); +--- 207,214 ---- + static int (*py3_PyType_Ready)(PyTypeObject *type); + static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); + static PyObject* (*py3_PyUnicode_FromString)(const char *u); +! static PyObject* (*py3_PyUnicode_Decode)(const char *u, Py_ssize_t size, +! const char *encoding, const char *errors); + static long (*py3_PyLong_AsLong)(PyObject *); + static void (*py3_PyErr_SetNone)(PyObject *); + static void (*py3_PyEval_InitThreads)(void); +*************** +*** 207,212 **** +--- 216,222 ---- + static PyThreadState*(*py3_PyEval_SaveThread)(void); + static int (*py3_PyArg_Parse)(PyObject *, char *, ...); + static int (*py3_PyArg_ParseTuple)(PyObject *, char *, ...); ++ static int (*py3_PyMem_Free)(void *); + static int (*py3_Py_IsInitialized)(void); + static void (*py3_PyErr_Clear)(void); + static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *); +*************** +*** 214,224 **** +--- 224,237 ---- + 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); ++ static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors); ++ static char* (*py3_PyBytes_AsString)(PyObject *bytes); + static PyObject* (*py3_PyObject_GenericGetAttr)(PyObject *obj, PyObject *name); + 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_PySlice_Type; ++ static PyObject* (*py3_PyErr_NewException)(char *name, PyObject *base, PyObject *dict); + # ifdef Py_DEBUG + static void (*py3__Py_NegativeRefcount)(const char *fname, int lineno, PyObject *op); + static Py_ssize_t* py3__Py_RefTotal; +*************** +*** 259,264 **** +--- 272,278 ---- + {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome}, + {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize}, + {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, ++ {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free}, + {"PyList_New", (PYTHON_PROC*)&py3_PyList_New}, + {"PyGILState_Ensure", (PYTHON_PROC*)&py3_PyGILState_Ensure}, + {"PyGILState_Release", (PYTHON_PROC*)&py3_PyGILState_Release}, +*************** +*** 289,295 **** + {"PyEval_RestoreThread", (PYTHON_PROC*)&py3_PyEval_RestoreThread}, + {"PyEval_SaveThread", (PYTHON_PROC*)&py3_PyEval_SaveThread}, + {"PyArg_Parse", (PYTHON_PROC*)&py3_PyArg_Parse}, +- {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, + {"Py_IsInitialized", (PYTHON_PROC*)&py3_Py_IsInitialized}, + {"_Py_NoneStruct", (PYTHON_PROC*)&py3__Py_NoneStruct}, + {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear}, +--- 303,308 ---- +*************** +*** 297,307 **** +--- 310,322 ---- + {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject}, + {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, + {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, ++ {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, + {"PyObject_GenericGetAttr", (PYTHON_PROC*)&py3_PyObject_GenericGetAttr}, + {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2}, + {"PyType_GenericAlloc", (PYTHON_PROC*)&py3_PyType_GenericAlloc}, + {"PyType_GenericNew", (PYTHON_PROC*)&py3_PyType_GenericNew}, + {"PySlice_Type", (PYTHON_PROC*)&py3_PySlice_Type}, ++ {"PyErr_NewException", (PYTHON_PROC*)&py3_PyErr_NewException}, + # ifdef Py_DEBUG + {"_Py_NegativeRefcount", (PYTHON_PROC*)&py3__Py_NegativeRefcount}, + {"_Py_RefTotal", (PYTHON_PROC*)&py3__Py_RefTotal}, +*************** +*** 337,343 **** + py3_runtime_link_init(char *libname, int verbose) + { + int i; +! void *ucs_from_string, *ucs_from_string_and_size; + + # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON) + /* Can't have Python and Python3 loaded at the same time. +--- 352,358 ---- + py3_runtime_link_init(char *libname, int verbose) + { + int i; +! void *ucs_from_string, *ucs_decode, *ucs_as_encoded_string; + + # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON) + /* Can't have Python and Python3 loaded at the same time. +*************** +*** 377,395 **** + /* Load unicode functions separately as only the ucs2 or the ucs4 functions + * will be present in the library. */ + ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString"); +! ucs_from_string_and_size = symbol_from_dll(hinstPy3, +! "PyUnicodeUCS2_FromStringAndSize"); +! if (!ucs_from_string || !ucs_from_string_and_size) + { + ucs_from_string = symbol_from_dll(hinstPy3, + "PyUnicodeUCS4_FromString"); +! ucs_from_string_and_size = symbol_from_dll(hinstPy3, +! "PyUnicodeUCS4_FromStringAndSize"); + } +! if (ucs_from_string && ucs_from_string_and_size) + { + py3_PyUnicode_FromString = ucs_from_string; +! py3_PyUnicode_FromStringAndSize = ucs_from_string_and_size; + } + else + { +--- 392,415 ---- + /* Load unicode functions separately as only the ucs2 or the ucs4 functions + * will be present in the library. */ + ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString"); +! ucs_decode = symbol_from_dll(hinstPy3, +! "PyUnicodeUCS2_Decode"); +! ucs_as_encoded_string = symbol_from_dll(hinstPy3, +! "PyUnicodeUCS2_AsEncodedString"); +! if (!ucs_from_string || !ucs_decode || !ucs_as_encoded_string) + { + ucs_from_string = symbol_from_dll(hinstPy3, + "PyUnicodeUCS4_FromString"); +! ucs_decode = symbol_from_dll(hinstPy3, +! "PyUnicodeUCS4_Decode"); +! ucs_as_encoded_string = symbol_from_dll(hinstPy3, +! "PyUnicodeUCS4_AsEncodedString"); + } +! if (ucs_from_string && ucs_decode && ucs_as_encoded_string) + { + py3_PyUnicode_FromString = ucs_from_string; +! py3_PyUnicode_Decode = ucs_decode; +! py3_PyUnicode_AsEncodedString = ucs_as_encoded_string; + } + else + { +*************** +*** 567,574 **** + /* Remove the element from sys.path that was added because of our + * argv[0] value in Py3Init_vim(). Previously we used an empty + * string, but dependinding on the OS we then get an empty entry or +! * the current directory in sys.path. */ +! PyRun_SimpleString("import sys; sys.path = list(filter(lambda x: x != '/must>not&exist', sys.path))"); + + // lock is created and acquired in PyEval_InitThreads() and thread + // state is created in Py_Initialize() +--- 587,597 ---- + /* Remove the element from sys.path that was added because of our + * argv[0] value in Py3Init_vim(). Previously we used an empty + * string, but dependinding on the OS we then get an empty entry or +! * the current directory in sys.path. +! * Only after vim has been imported, the element does exist in +! * sys.path. +! */ +! PyRun_SimpleString("import vim; import sys; sys.path = list(filter(lambda x: not x.endswith('must>not&exist'), sys.path))"); + + // lock is created and acquired in PyEval_InitThreads() and thread + // state is created in Py_Initialize() +*************** +*** 605,610 **** +--- 628,635 ---- + #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) + char *saved_locale; + #endif ++ PyObject *cmdstr; ++ PyObject *cmdbytes; + + #if defined(MACOS) && !defined(MACOS_X_UNIX) + GetPort(&oldPort); +*************** +*** 634,640 **** + + pygilstate = PyGILState_Ensure(); + +! PyRun_SimpleString((char *)(cmd)); + + PyGILState_Release(pygilstate); + +--- 659,671 ---- + + pygilstate = PyGILState_Ensure(); + +! /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause +! * SyntaxError (unicode error). */ +! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)p_enc, NULL); +! cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL); +! Py_XDECREF(cmdstr); +! PyRun_SimpleString(PyBytes_AsString(cmdbytes)); +! Py_XDECREF(cmdbytes); + + PyGILState_Release(pygilstate); + +*************** +*** 693,699 **** + * different options under Windows, meaning that stdio pointers aren't + * compatible between the two. Yuk. + * +! * construct: exec(compile(open('a_filename').read(), 'a_filename', 'exec')) + * + * We need to escape any backslashes or single quotes in the file name, so that + * Python won't mangle the file name. +--- 724,733 ---- + * different options under Windows, meaning that stdio pointers aren't + * compatible between the two. Yuk. + * +! * construct: exec(compile(open('a_filename', 'rb').read(), 'a_filename', 'exec')) +! * +! * Using bytes so that Python can detect the source encoding as it normally +! * does. The doc does not say "compile" accept bytes, though. + * + * We need to escape any backslashes or single quotes in the file name, so that + * Python won't mangle the file name. +*************** +*** 716,723 **** + return; + if (i==0) + { +! strcpy(p,"').read(),'"); +! p += 11; + } + else + { +--- 750,757 ---- + return; + if (i==0) + { +! strcpy(p,"','rb').read(),'"); +! p += 16; + } + else + { +*************** +*** 812,819 **** + + static Py_ssize_t BufferLength(PyObject *); + static PyObject *BufferItem(PyObject *, Py_ssize_t); +- static Py_ssize_t BufferAsItem(PyObject *, Py_ssize_t, PyObject *); + static PyObject* BufferSubscript(PyObject *self, PyObject* idx); + + + /* Line range type - Implementation functions +--- 846,853 ---- + + static Py_ssize_t BufferLength(PyObject *); + static PyObject *BufferItem(PyObject *, Py_ssize_t); + static PyObject* BufferSubscript(PyObject *self, PyObject* idx); ++ static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val); + + + /* Line range type - Implementation functions +*************** +*** 835,841 **** + (ssizeargfunc) 0, /* sq_repeat, x*n */ + (ssizeargfunc) BufferItem, /* sq_item, x[i] */ + 0, /* was_sq_slice, x[i:j] */ +! (ssizeobjargproc) BufferAsItem, /* sq_ass_item, x[i]=v */ + 0, /* sq_ass_slice, x[i:j]=v */ + 0, /* sq_contains */ + 0, /* sq_inplace_concat */ +--- 869,875 ---- + (ssizeargfunc) 0, /* sq_repeat, x*n */ + (ssizeargfunc) BufferItem, /* sq_item, x[i] */ + 0, /* was_sq_slice, x[i:j] */ +! 0, /* sq_ass_item, x[i]=v */ + 0, /* sq_ass_slice, x[i:j]=v */ + 0, /* sq_contains */ + 0, /* sq_inplace_concat */ +*************** +*** 845,851 **** + PyMappingMethods BufferAsMapping = { + /* mp_length */ (lenfunc)BufferLength, + /* mp_subscript */ (binaryfunc)BufferSubscript, +! /* mp_ass_subscript */ (objobjargproc)0, + }; + + +--- 879,885 ---- + PyMappingMethods BufferAsMapping = { + /* mp_length */ (lenfunc)BufferLength, + /* mp_subscript */ (binaryfunc)BufferSubscript, +! /* mp_ass_subscript */ (objobjargproc)BufferAsSubscript, + }; + + +*************** +*** 897,902 **** +--- 931,938 ---- + + if (this->buf && this->buf != INVALID_BUFFER_VALUE) + this->buf->b_python3_ref = NULL; ++ ++ Py_TYPE(self)->tp_free((PyObject*)self); + } + + static PyObject * +*************** +*** 975,989 **** + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count); + } + +- static Py_ssize_t +- BufferAsItem(PyObject *self, Py_ssize_t n, PyObject *val) +- { +- return RBAsItem((BufferObject *)(self), n, val, 1, +- (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, +- NULL); +- } +- +- + static PyObject * + BufferSubscript(PyObject *self, PyObject* idx) + { +--- 1011,1016 ---- +*************** +*** 999,1011 **** + &step, &slicelen) < 0) { + return NULL; + } +! return BufferSlice(self,start,stop+1); + } else { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return NULL; + } + } + + static PySequenceMethods RangeAsSeq = { + (lenfunc) RangeLength, /* sq_length, len(x) */ + (binaryfunc) 0, /* RangeConcat, sq_concat, x+y */ +--- 1026,1064 ---- + &step, &slicelen) < 0) { + return NULL; + } +! return BufferSlice(self,start,stop); + } else { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return NULL; + } + } + ++ static Py_ssize_t ++ BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val) ++ { ++ if (PyLong_Check(idx)) { ++ long n = PyLong_AsLong(idx); ++ return RBAsItem((BufferObject *)(self), n, val, 1, ++ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, ++ NULL); ++ } else if (PySlice_Check(idx)) { ++ Py_ssize_t start, stop, step, slicelen; ++ ++ if (PySlice_GetIndicesEx((PySliceObject *)idx, ++ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, ++ &start, &stop, ++ &step, &slicelen) < 0) { ++ return -1; ++ } ++ return RBAsSlice((BufferObject *)(self), start, stop, val, 1, ++ (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, ++ NULL); ++ } else { ++ PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); ++ return -1; ++ } ++ } ++ + static PySequenceMethods RangeAsSeq = { + (lenfunc) RangeLength, /* sq_length, len(x) */ + (binaryfunc) 0, /* RangeConcat, sq_concat, x+y */ +*************** +*** 1032,1037 **** +--- 1085,1091 ---- + RangeDestructor(PyObject *self) + { + Py_DECREF(((RangeObject *)(self))->buf); ++ Py_TYPE(self)->tp_free((PyObject*)self); + } + + static PyObject * +*************** +*** 1159,1164 **** +--- 1213,1220 ---- + + if (this->win && this->win != INVALID_WINDOW_VALUE) + this->win->w_python3_ref = NULL; ++ ++ Py_TYPE(self)->tp_free((PyObject*)self); + } + + static PyObject * +*************** +*** 1350,1357 **** + PySys_SetArgv(1, argv); + + mod = PyModule_Create(&vimmodule); + +! VimError = Py_BuildValue("s", "vim.error"); + + PyModule_AddObject(mod, "error", VimError); + Py_INCREF((PyObject *)(void *)&TheBufferList); +--- 1406,1416 ---- + PySys_SetArgv(1, argv); + + mod = PyModule_Create(&vimmodule); ++ if (mod == NULL) ++ return NULL; + +! VimError = PyErr_NewException("vim.error", NULL, NULL); +! Py_INCREF(VimError); + + PyModule_AddObject(mod, "error", VimError); + Py_INCREF((PyObject *)(void *)&TheBufferList); +*************** +*** 1404,1410 **** + } + *p = '\0'; + +! result = PyUnicode_FromStringAndSize(tmp, len); + + vim_free(tmp); + return result; +--- 1463,1469 ---- + } + *p = '\0'; + +! result = PyUnicode_Decode(tmp, len, (char *)p_enc, NULL); + + vim_free(tmp); + return result; +*** ../vim-7.3.219/src/version.c 2011-06-13 02:03:55.000000000 +0200 +--- src/version.c 2011-06-19 00:25:38.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 220, + /**/ + +-- +I'm in shape. Round IS a shape. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.221 b/source/ap/vim/patches/7.3.221 new file mode 100644 index 00000000..7211a4a6 --- /dev/null +++ b/source/ap/vim/patches/7.3.221 @@ -0,0 +1,287 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.221 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.221 +Problem: Text from the clipboard is sometimes handled as linewise, but not + consistently. +Solution: Assume the text is linewise when it ends in a CR or NL. +Files: src/gui_gtk_x11.c, src/gui_mac.c, src/ops.c, src/os_msdos.c, + src/os_mswin.c, src/os_qnx.c, src/ui.c + + +*** ../mercurial/vim73/src/gui_gtk_x11.c 2011-02-25 17:10:22.000000000 +0100 +--- src/gui_gtk_x11.c 2011-06-19 00:58:31.000000000 +0200 +*************** +*** 1173,1179 **** + char_u *tmpbuf = NULL; + guchar *tmpbuf_utf8 = NULL; + int len; +! int motion_type; + + if (data->selection == clip_plus.gtk_sel_atom) + cbd = &clip_plus; +--- 1173,1179 ---- + char_u *tmpbuf = NULL; + guchar *tmpbuf_utf8 = NULL; + int len; +! int motion_type = MAUTO; + + if (data->selection == clip_plus.gtk_sel_atom) + cbd = &clip_plus; +*************** +*** 1182,1188 **** + + text = (char_u *)data->data; + len = data->length; +- motion_type = MCHAR; + + if (text == NULL || len <= 0) + { +--- 1182,1187 ---- +*** ../mercurial/vim73/src/gui_mac.c 2011-06-12 20:33:30.000000000 +0200 +--- src/gui_mac.c 2011-06-19 00:59:07.000000000 +0200 +*************** +*** 4671,4677 **** + if (flavor) + type = **textOfClip; + else +! type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR; + + tempclip = lalloc(scrapSize + 1, TRUE); + mch_memmove(tempclip, *textOfClip + flavor, scrapSize); +--- 4671,4677 ---- + if (flavor) + type = **textOfClip; + else +! type = MAUTO; + + tempclip = lalloc(scrapSize + 1, TRUE); + mch_memmove(tempclip, *textOfClip + flavor, scrapSize); +*** ../mercurial/vim73/src/ops.c 2011-04-01 16:28:33.000000000 +0200 +--- src/ops.c 2011-06-19 00:59:39.000000000 +0200 +*************** +*** 5733,5739 **** + } + } + +! /* Convert from the GUI selection string into the '*'/'+' register */ + void + clip_yank_selection(type, str, len, cbd) + int type; +--- 5733,5741 ---- + } + } + +! /* +! * Convert from the GUI selection string into the '*'/'+' register. +! */ + void + clip_yank_selection(type, str, len, cbd) + int type; +*************** +*** 6090,6098 **** + if (yank_type == MBLOCK) + yank_type = MAUTO; + #endif +- if (yank_type == MAUTO) +- yank_type = ((len > 0 && (str[len - 1] == '\n' || str[len - 1] == '\r')) +- ? MLINE : MCHAR); + str_to_reg(y_current, yank_type, str, len, block_len); + + # ifdef FEAT_CLIPBOARD +--- 6092,6097 ---- +*************** +*** 6113,6125 **** + * is appended. + */ + static void +! str_to_reg(y_ptr, type, str, len, blocklen) + struct yankreg *y_ptr; /* pointer to yank register */ +! int type; /* MCHAR, MLINE or MBLOCK */ + char_u *str; /* string to put in register */ + long len; /* length of string */ + long blocklen; /* width of Visual block */ + { + int lnum; + long start; + long i; +--- 6112,6125 ---- + * is appended. + */ + static void +! str_to_reg(y_ptr, yank_type, str, len, blocklen) + struct yankreg *y_ptr; /* pointer to yank register */ +! int yank_type; /* MCHAR, MLINE, MBLOCK, MAUTO */ + char_u *str; /* string to put in register */ + long len; /* length of string */ + long blocklen; /* width of Visual block */ + { ++ int type; /* MCHAR, MLINE or MBLOCK */ + int lnum; + long start; + long i; +*************** +*** 6136,6141 **** +--- 6136,6147 ---- + if (y_ptr->y_array == NULL) /* NULL means empty register */ + y_ptr->y_size = 0; + ++ if (yank_type == MAUTO) ++ type = ((len > 0 && (str[len - 1] == NL || str[len - 1] == CAR)) ++ ? MLINE : MCHAR); ++ else ++ type = yank_type; ++ + /* + * Count the number of lines within the string + */ +*** ../mercurial/vim73/src/os_msdos.c 2010-12-17 18:06:00.000000000 +0100 +--- src/os_msdos.c 2011-06-19 01:00:56.000000000 +0200 +*************** +*** 2232,2238 **** + void + clip_mch_request_selection(VimClipboard *cbd) + { +! int type = MCHAR; + char_u *pAllocated = NULL; + char_u *pClipText = NULL; + int clip_data_format = 0; +--- 2232,2238 ---- + void + clip_mch_request_selection(VimClipboard *cbd) + { +! int type = MAUTO; + char_u *pAllocated = NULL; + char_u *pClipText = NULL; + int clip_data_format = 0; +*************** +*** 2280,2293 **** + { + clip_data_format = CF_TEXT; + pClipText = pAllocated; +- type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR; + } + + else if ((pAllocated = Win16GetClipboardData(CF_OEMTEXT)) != NULL) + { + clip_data_format = CF_OEMTEXT; + pClipText = pAllocated; +- type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR; + } + + /* Did we get anything? */ +--- 2280,2291 ---- +*** ../mercurial/vim73/src/os_mswin.c 2011-01-17 20:08:04.000000000 +0100 +--- src/os_mswin.c 2011-06-19 01:01:51.000000000 +0200 +*************** +*** 1410,1418 **** + { + char_u *temp_clipboard; + +! /* If the type is not known guess it. */ + if (metadata.type == -1) +! metadata.type = (vim_strchr(str, '\n') == NULL) ? MCHAR : MLINE; + + /* Translate <CR><NL> into <NL>. */ + temp_clipboard = crnl_to_nl(str, &str_size); +--- 1410,1418 ---- + { + char_u *temp_clipboard; + +! /* If the type is not known detect it. */ + if (metadata.type == -1) +! metadata.type = MAUTO; + + /* Translate <CR><NL> into <NL>. */ + temp_clipboard = crnl_to_nl(str, &str_size); +*** ../mercurial/vim73/src/os_qnx.c 2010-05-15 21:22:11.000000000 +0200 +--- src/os_qnx.c 2011-06-19 01:02:26.000000000 +0200 +*************** +*** 93,99 **** + clip_length = clip_header->length - 1; + + if( clip_text != NULL && is_type_set == FALSE ) +! type = (strchr( clip_text, '\r' ) != NULL) ? MLINE : MCHAR; + } + + if( (clip_text != NULL) && (clip_length > 0) ) +--- 93,99 ---- + clip_length = clip_header->length - 1; + + if( clip_text != NULL && is_type_set == FALSE ) +! type = MAUTO; + } + + if( (clip_text != NULL) && (clip_length > 0) ) +*** ../mercurial/vim73/src/ui.c 2010-09-21 22:09:28.000000000 +0200 +--- src/ui.c 2011-06-19 01:03:31.000000000 +0200 +*************** +*** 1609,1615 **** + + #if defined(FEAT_HANGULIN) || defined(PROTO) + void +! push_raw_key (s, len) + char_u *s; + int len; + { +--- 1609,1615 ---- + + #if defined(FEAT_HANGULIN) || defined(PROTO) + void +! push_raw_key(s, len) + char_u *s; + int len; + { +*************** +*** 2016,2022 **** + long_u *length; + int *format; + { +! int motion_type; + long_u len; + char_u *p; + char **text_list = NULL; +--- 2016,2022 ---- + long_u *length; + int *format; + { +! int motion_type = MAUTO; + long_u len; + char_u *p; + char **text_list = NULL; +*************** +*** 2036,2042 **** + *(int *)success = FALSE; + return; + } +- motion_type = MCHAR; + p = (char_u *)value; + len = *length; + if (*type == vim_atom) +--- 2036,2041 ---- +*** ../vim-7.3.220/src/version.c 2011-06-19 00:27:46.000000000 +0200 +--- src/version.c 2011-06-19 01:03:59.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 221, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +190. You quickly hand over your wallet, leather jacket, and car keys + during a mugging, then proceed to beat the crap out of your + assailant when he asks for your laptop. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.222 b/source/ap/vim/patches/7.3.222 new file mode 100644 index 00000000..87151b5a --- /dev/null +++ b/source/ap/vim/patches/7.3.222 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.22 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.222 +Problem: Warning for building GvimExt. +Solution: Comment-out the DESCRIPTION line. (Mike Williams) +Files: src/GvimExt/gvimext.def, src/GvimExt/gvimext_ming.def + + +*** ../mercurial/vim73/src/GvimExt/gvimext.def 2010-05-15 21:22:11.000000000 +0200 +--- src/GvimExt/gvimext.def 2011-06-15 03:50:55.000000000 +0200 +*************** +*** 1,7 **** + ;gvimdef.def : Declares the module parameters for the DLL. + + LIBRARY gvimext +! DESCRIPTION 'Vim Shell Extension' + + EXPORTS + DllCanUnloadNow private +--- 1,7 ---- + ;gvimdef.def : Declares the module parameters for the DLL. + + LIBRARY gvimext +! ; DESCRIPTION 'Vim Shell Extension' + + EXPORTS + DllCanUnloadNow private +*** ../mercurial/vim73/src/GvimExt/gvimext_ming.def 2010-05-15 21:22:11.000000000 +0200 +--- src/GvimExt/gvimext_ming.def 2011-06-15 03:51:05.000000000 +0200 +*************** +*** 3,9 **** + ;Hence this is the same file as gvimext.def with private removed + + LIBRARY gvimext +! DESCRIPTION 'Vim Shell Extension build with MinGW' + + EXPORTS + DllCanUnloadNow = DllCanUnloadNow@0 +--- 3,9 ---- + ;Hence this is the same file as gvimext.def with private removed + + LIBRARY gvimext +! ; DESCRIPTION 'Vim Shell Extension build with MinGW' + + EXPORTS + DllCanUnloadNow = DllCanUnloadNow@0 +*** ../vim-7.3.221/src/version.c 2011-06-19 01:14:23.000000000 +0200 +--- src/version.c 2011-06-19 01:26:57.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 222, + /**/ + +-- +What is the difference between a professional and an amateur? +The ark was built by an amateur; professionals gave us the Titanic. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.223 b/source/ap/vim/patches/7.3.223 new file mode 100644 index 00000000..e151c5b7 --- /dev/null +++ b/source/ap/vim/patches/7.3.223 @@ -0,0 +1,387 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.223 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.223 +Problem: MingW cross compilation doesn't work with tiny features. +Solution: Move acp_to_enc(), enc_to_utf16() and utf16_to_enc() outside of + "#ifdef CLIPBOARD". Fix typo in makefile. +Files: src/Make_ming.mak, src/os_mswin.c + + +*** ../mercurial/vim73/src/Make_ming.mak 2010-12-30 14:50:46.000000000 +0100 +--- src/Make_ming.mak 2011-06-19 01:20:16.000000000 +0200 +*************** +*** 87,93 **** + + # If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext + # or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/ +! # uncomment the following, but I can't build a static versión with them, ?-(| + #GETTEXT=c:/gettext-0.10.37-20010430 + #STATIC_GETTEXT=USE_STATIC_GETTEXT + #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT +--- 87,93 ---- + + # If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext + # or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/ +! # uncomment the following, but I can't build a static version with them, ?-(| + #GETTEXT=c:/gettext-0.10.37-20010430 + #STATIC_GETTEXT=USE_STATIC_GETTEXT + #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT +*** ../mercurial/vim73/src/os_mswin.c 2011-06-19 01:14:23.000000000 +0200 +--- src/os_mswin.c 2011-06-19 01:25:23.000000000 +0200 +*************** +*** 1105,1236 **** + return ret; + } + +- #if defined(FEAT_MBYTE) || defined(PROTO) +- /* +- * Note: the following two functions are only guaranteed to work when using +- * valid MS-Windows codepages or when iconv() is available. +- */ +- +- /* +- * Convert "str" from 'encoding' to UTF-16. +- * Input in "str" with length "*lenp". When "lenp" is NULL, use strlen(). +- * Output is returned as an allocated string. "*lenp" is set to the length of +- * the result. A trailing NUL is always added. +- * Returns NULL when out of memory. +- */ +- short_u * +- enc_to_utf16(char_u *str, int *lenp) +- { +- vimconv_T conv; +- WCHAR *ret; +- char_u *allocbuf = NULL; +- int len_loc; +- int length; +- +- if (lenp == NULL) +- { +- len_loc = (int)STRLEN(str) + 1; +- lenp = &len_loc; +- } +- +- if (enc_codepage > 0) +- { +- /* We can do any CP### -> UTF-16 in one pass, and we can do it +- * without iconv() (convert_* may need iconv). */ +- MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length); +- } +- else +- { +- /* Use "latin1" by default, we might be called before we have p_enc +- * set up. Convert to utf-8 first, works better with iconv(). Does +- * nothing if 'encoding' is "utf-8". */ +- conv.vc_type = CONV_NONE; +- if (convert_setup(&conv, p_enc ? p_enc : (char_u *)"latin1", +- (char_u *)"utf-8") == FAIL) +- return NULL; +- if (conv.vc_type != CONV_NONE) +- { +- str = allocbuf = string_convert(&conv, str, lenp); +- if (str == NULL) +- return NULL; +- } +- convert_setup(&conv, NULL, NULL); +- +- length = utf8_to_utf16(str, *lenp, NULL, NULL); +- ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR))); +- if (ret != NULL) +- { +- utf8_to_utf16(str, *lenp, (short_u *)ret, NULL); +- ret[length] = 0; +- } +- +- vim_free(allocbuf); +- } +- +- *lenp = length; +- return (short_u *)ret; +- } +- +- /* +- * Convert an UTF-16 string to 'encoding'. +- * Input in "str" with length (counted in wide characters) "*lenp". When +- * "lenp" is NULL, use wcslen(). +- * Output is returned as an allocated string. If "*lenp" is not NULL it is +- * set to the length of the result. +- * Returns NULL when out of memory. +- */ +- char_u * +- utf16_to_enc(short_u *str, int *lenp) +- { +- vimconv_T conv; +- char_u *utf8_str = NULL, *enc_str = NULL; +- int len_loc; +- +- if (lenp == NULL) +- { +- len_loc = (int)wcslen(str) + 1; +- lenp = &len_loc; +- } +- +- if (enc_codepage > 0) +- { +- /* We can do any UTF-16 -> CP### in one pass. */ +- int length; +- +- WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp, +- (LPSTR *)&enc_str, &length, 0, 0); +- *lenp = length; +- return enc_str; +- } +- +- /* Avoid allocating zero bytes, it generates an error message. */ +- utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL)); +- if (utf8_str != NULL) +- { +- *lenp = utf16_to_utf8(str, *lenp, utf8_str); +- +- /* We might be called before we have p_enc set up. */ +- conv.vc_type = CONV_NONE; +- convert_setup(&conv, (char_u *)"utf-8", +- p_enc? p_enc: (char_u *)"latin1"); +- if (conv.vc_type == CONV_NONE) +- { +- /* p_enc is utf-8, so we're done. */ +- enc_str = utf8_str; +- } +- else +- { +- enc_str = string_convert(&conv, utf8_str, lenp); +- vim_free(utf8_str); +- } +- +- convert_setup(&conv, NULL, NULL); +- } +- +- return enc_str; +- } +- #endif /* FEAT_MBYTE */ +- + /* + * Wait for another process to Close the Clipboard. + * Returns TRUE for success. +--- 1105,1110 ---- +*************** +*** 1436,1467 **** + #endif + } + +- #if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO) +- /* +- * Convert from the active codepage to 'encoding'. +- * Input is "str[str_size]". +- * The result is in allocated memory: "out[outlen]". With terminating NUL. +- */ +- void +- acp_to_enc(str, str_size, out, outlen) +- char_u *str; +- int str_size; +- char_u **out; +- int *outlen; +- +- { +- LPWSTR widestr; +- +- MultiByteToWideChar_alloc(GetACP(), 0, str, str_size, &widestr, outlen); +- if (widestr != NULL) +- { +- ++*outlen; /* Include the 0 after the string */ +- *out = utf16_to_enc((short_u *)widestr, outlen); +- vim_free(widestr); +- } +- } +- #endif +- + /* + * Send the current selection to the clipboard. + */ +--- 1310,1315 ---- +*************** +*** 1626,1631 **** +--- 1474,1631 ---- + + #endif /* FEAT_CLIPBOARD */ + ++ #if defined(FEAT_MBYTE) || defined(PROTO) ++ /* ++ * Note: the following two functions are only guaranteed to work when using ++ * valid MS-Windows codepages or when iconv() is available. ++ */ ++ ++ /* ++ * Convert "str" from 'encoding' to UTF-16. ++ * Input in "str" with length "*lenp". When "lenp" is NULL, use strlen(). ++ * Output is returned as an allocated string. "*lenp" is set to the length of ++ * the result. A trailing NUL is always added. ++ * Returns NULL when out of memory. ++ */ ++ short_u * ++ enc_to_utf16(char_u *str, int *lenp) ++ { ++ vimconv_T conv; ++ WCHAR *ret; ++ char_u *allocbuf = NULL; ++ int len_loc; ++ int length; ++ ++ if (lenp == NULL) ++ { ++ len_loc = (int)STRLEN(str) + 1; ++ lenp = &len_loc; ++ } ++ ++ if (enc_codepage > 0) ++ { ++ /* We can do any CP### -> UTF-16 in one pass, and we can do it ++ * without iconv() (convert_* may need iconv). */ ++ MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length); ++ } ++ else ++ { ++ /* Use "latin1" by default, we might be called before we have p_enc ++ * set up. Convert to utf-8 first, works better with iconv(). Does ++ * nothing if 'encoding' is "utf-8". */ ++ conv.vc_type = CONV_NONE; ++ if (convert_setup(&conv, p_enc ? p_enc : (char_u *)"latin1", ++ (char_u *)"utf-8") == FAIL) ++ return NULL; ++ if (conv.vc_type != CONV_NONE) ++ { ++ str = allocbuf = string_convert(&conv, str, lenp); ++ if (str == NULL) ++ return NULL; ++ } ++ convert_setup(&conv, NULL, NULL); ++ ++ length = utf8_to_utf16(str, *lenp, NULL, NULL); ++ ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR))); ++ if (ret != NULL) ++ { ++ utf8_to_utf16(str, *lenp, (short_u *)ret, NULL); ++ ret[length] = 0; ++ } ++ ++ vim_free(allocbuf); ++ } ++ ++ *lenp = length; ++ return (short_u *)ret; ++ } ++ ++ /* ++ * Convert an UTF-16 string to 'encoding'. ++ * Input in "str" with length (counted in wide characters) "*lenp". When ++ * "lenp" is NULL, use wcslen(). ++ * Output is returned as an allocated string. If "*lenp" is not NULL it is ++ * set to the length of the result. ++ * Returns NULL when out of memory. ++ */ ++ char_u * ++ utf16_to_enc(short_u *str, int *lenp) ++ { ++ vimconv_T conv; ++ char_u *utf8_str = NULL, *enc_str = NULL; ++ int len_loc; ++ ++ if (lenp == NULL) ++ { ++ len_loc = (int)wcslen(str) + 1; ++ lenp = &len_loc; ++ } ++ ++ if (enc_codepage > 0) ++ { ++ /* We can do any UTF-16 -> CP### in one pass. */ ++ int length; ++ ++ WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp, ++ (LPSTR *)&enc_str, &length, 0, 0); ++ *lenp = length; ++ return enc_str; ++ } ++ ++ /* Avoid allocating zero bytes, it generates an error message. */ ++ utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL)); ++ if (utf8_str != NULL) ++ { ++ *lenp = utf16_to_utf8(str, *lenp, utf8_str); ++ ++ /* We might be called before we have p_enc set up. */ ++ conv.vc_type = CONV_NONE; ++ convert_setup(&conv, (char_u *)"utf-8", ++ p_enc? p_enc: (char_u *)"latin1"); ++ if (conv.vc_type == CONV_NONE) ++ { ++ /* p_enc is utf-8, so we're done. */ ++ enc_str = utf8_str; ++ } ++ else ++ { ++ enc_str = string_convert(&conv, utf8_str, lenp); ++ vim_free(utf8_str); ++ } ++ ++ convert_setup(&conv, NULL, NULL); ++ } ++ ++ return enc_str; ++ } ++ #endif /* FEAT_MBYTE */ ++ ++ #if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO) ++ /* ++ * Convert from the active codepage to 'encoding'. ++ * Input is "str[str_size]". ++ * The result is in allocated memory: "out[outlen]". With terminating NUL. ++ */ ++ void ++ acp_to_enc(str, str_size, out, outlen) ++ char_u *str; ++ int str_size; ++ char_u **out; ++ int *outlen; ++ ++ { ++ LPWSTR widestr; ++ ++ MultiByteToWideChar_alloc(GetACP(), 0, str, str_size, &widestr, outlen); ++ if (widestr != NULL) ++ { ++ ++*outlen; /* Include the 0 after the string */ ++ *out = utf16_to_enc((short_u *)widestr, outlen); ++ vim_free(widestr); ++ } ++ } ++ #endif ++ + + /* + * Debugging helper: expose the MCH_WRITE_DUMP stuff to other modules +*** ../vim-7.3.222/src/version.c 2011-06-19 01:27:29.000000000 +0200 +--- src/version.c 2011-06-19 01:28:41.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 223, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +191. You rate eating establishments not by the quality of the food, + but by the availability of electrical outlets for your PowerBook. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.224 b/source/ap/vim/patches/7.3.224 new file mode 100644 index 00000000..1673f476 --- /dev/null +++ b/source/ap/vim/patches/7.3.224 @@ -0,0 +1,162 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.224 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.224 +Problem: Can't pass dict to sort function. +Solution: Add the optional {dict} argument to sort(). (ZyX) +Files: runtime/doc/eval.txt, src/eval.c + + +*** ../mercurial/vim73/runtime/doc/eval.txt 2011-05-19 17:25:36.000000000 +0200 +--- runtime/doc/eval.txt 2011-06-19 02:42:52.000000000 +0200 +*************** +*** 1919,1925 **** + simplify( {filename}) String simplify filename as much as possible + sin( {expr}) Float sine of {expr} + sinh( {expr}) Float hyperbolic sine of {expr} +! sort( {list} [, {func}]) List sort {list}, using {func} to compare + soundfold( {word}) String sound-fold {word} + spellbadword() String badly spelled word at cursor + spellsuggest( {word} [, {max} [, {capital}]]) +--- 1922,1929 ---- + simplify( {filename}) String simplify filename as much as possible + sin( {expr}) Float sine of {expr} + sinh( {expr}) Float hyperbolic sine of {expr} +! sort( {list} [, {func} [, {dict}]]) +! List sort {list}, using {func} to compare + soundfold( {word}) String sound-fold {word} + spellbadword() String badly spelled word at cursor + spellsuggest( {word} [, {max} [, {capital}]]) +*************** +*** 5275,5281 **** + {only available when compiled with the |+float| feature} + + +! sort({list} [, {func}]) *sort()* *E702* + Sort the items in {list} in-place. Returns {list}. If you + want a list to remain unmodified make a copy first: > + :let sortedlist = sort(copy(mylist)) +--- 5279,5285 ---- + {only available when compiled with the |+float| feature} + + +! sort({list} [, {func} [, {dict}]]) *sort()* *E702* + Sort the items in {list} in-place. Returns {list}. If you + want a list to remain unmodified make a copy first: > + :let sortedlist = sort(copy(mylist)) +*************** +*** 5283,5288 **** +--- 5287,5294 ---- + Numbers sort after Strings, |Lists| after Numbers. + For sorting text in the current buffer use |:sort|. + When {func} is given and it is one then case is ignored. ++ {dict} is for functions with the "dict" attribute. It will be ++ used to set the local variable "self". |Dictionary-function| + When {func} is a |Funcref| or a function name, this function + is called to compare items. The function is invoked with two + items as argument and must return zero if they are equal, 1 or +*** ../mercurial/vim73/src/eval.c 2011-05-19 18:26:34.000000000 +0200 +--- src/eval.c 2011-06-19 02:51:13.000000000 +0200 +*************** +*** 7930,7936 **** + {"sin", 1, 1, f_sin}, + {"sinh", 1, 1, f_sinh}, + #endif +! {"sort", 1, 2, f_sort}, + {"soundfold", 1, 1, f_soundfold}, + {"spellbadword", 0, 1, f_spellbadword}, + {"spellsuggest", 1, 3, f_spellsuggest}, +--- 7930,7936 ---- + {"sin", 1, 1, f_sin}, + {"sinh", 1, 1, f_sinh}, + #endif +! {"sort", 1, 3, f_sort}, + {"soundfold", 1, 1, f_soundfold}, + {"spellbadword", 0, 1, f_spellbadword}, + {"spellsuggest", 1, 3, f_spellsuggest}, +*************** +*** 16366,16371 **** +--- 16366,16372 ---- + + static int item_compare_ic; + static char_u *item_compare_func; ++ static dict_T *item_compare_selfdict; + static int item_compare_func_err; + #define ITEM_COMPARE_FAIL 999 + +*************** +*** 16425,16431 **** + + rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */ + res = call_func(item_compare_func, (int)STRLEN(item_compare_func), +! &rettv, 2, argv, 0L, 0L, &dummy, TRUE, NULL); + clear_tv(&argv[0]); + clear_tv(&argv[1]); + +--- 16426,16433 ---- + + rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */ + res = call_func(item_compare_func, (int)STRLEN(item_compare_func), +! &rettv, 2, argv, 0L, 0L, &dummy, TRUE, +! item_compare_selfdict); + clear_tv(&argv[0]); + clear_tv(&argv[1]); + +*************** +*** 16471,16478 **** +--- 16473,16482 ---- + + item_compare_ic = FALSE; + item_compare_func = NULL; ++ item_compare_selfdict = NULL; + if (argvars[1].v_type != VAR_UNKNOWN) + { ++ /* optional second argument: {func} */ + if (argvars[1].v_type == VAR_FUNC) + item_compare_func = argvars[1].vval.v_string; + else +*************** +*** 16487,16492 **** +--- 16491,16507 ---- + else + item_compare_func = get_tv_string(&argvars[1]); + } ++ ++ if (argvars[2].v_type != VAR_UNKNOWN) ++ { ++ /* optional third argument: {dict} */ ++ if (argvars[2].v_type != VAR_DICT) ++ { ++ EMSG(_(e_dictreq)); ++ return; ++ } ++ item_compare_selfdict = argvars[2].vval.v_dict; ++ } + } + + /* Make an array with each entry pointing to an item in the List. */ +*** ../vim-7.3.223/src/version.c 2011-06-19 01:30:01.000000000 +0200 +--- src/version.c 2011-06-19 02:52:46.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 224, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +193. You ask your girlfriend to drive home so you can sit back with + your PDA and download the information to your laptop + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.225 b/source/ap/vim/patches/7.3.225 Binary files differnew file mode 100644 index 00000000..5a32b9a6 --- /dev/null +++ b/source/ap/vim/patches/7.3.225 diff --git a/source/ap/vim/patches/7.3.226 b/source/ap/vim/patches/7.3.226 new file mode 100644 index 00000000..0002aa77 --- /dev/null +++ b/source/ap/vim/patches/7.3.226 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.226 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.226 +Problem: On a 64 bit system "syn sync fromstart" is very slow. (Bjorn + Steinbrink) +Solution: Store the state when starting to parse from the first line. +Files: src/syntax.c + + +*** ../mercurial/vim73/src/syntax.c 2011-05-25 17:56:23.000000000 +0200 +--- src/syntax.c 2011-06-19 04:47:08.000000000 +0200 +*************** +*** 559,565 **** + if (INVALID_STATE(¤t_state)) + { + syn_sync(wp, lnum, last_valid); +! first_stored = current_lnum + syn_block->b_syn_sync_minlines; + } + else + first_stored = current_lnum; +--- 559,571 ---- + if (INVALID_STATE(¤t_state)) + { + syn_sync(wp, lnum, last_valid); +! if (current_lnum == 1) +! /* First line is always valid, no matter "minlines". */ +! first_stored = 1; +! else +! /* Need to parse "minlines" lines before state can be considered +! * valid to store. */ +! first_stored = current_lnum + syn_block->b_syn_sync_minlines; + } + else + first_stored = current_lnum; +*** ../vim-7.3.225/src/version.c 2011-06-19 04:31:54.000000000 +0200 +--- src/version.c 2011-06-19 04:49:53.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 226, + /**/ + +-- +Press any key to continue, press any other key to quit. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.227 b/source/ap/vim/patches/7.3.227 new file mode 100644 index 00000000..55d5a9c6 --- /dev/null +++ b/source/ap/vim/patches/7.3.227 @@ -0,0 +1,109 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.227 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.227 (after 7.3.221) +Problem: Mac OS doesn't have the linewise clipboard fix. +Solution: Also change the Mac OS file. (Bjorn Winckler) +Files: src/os_macosx.m + + +*** ../mercurial/vim73/src/os_macosx.m 2011-06-13 02:03:55.000000000 +0200 +--- src/os_macosx.m 2011-06-20 00:23:57.000000000 +0200 +*************** +*** 65,71 **** + NSString *bestType = [pb availableTypeFromArray:supportedTypes]; + if (!bestType) goto releasepool; + +! int motion_type = MCHAR; + NSString *string = nil; + + if ([bestType isEqual:VimPboardType]) +--- 65,71 ---- + NSString *bestType = [pb availableTypeFromArray:supportedTypes]; + if (!bestType) goto releasepool; + +! int motion_type = MAUTO; + NSString *string = nil; + + if ([bestType isEqual:VimPboardType]) +*************** +*** 89,97 **** + + if (!string) + { +! /* Use NSStringPboardType. The motion type is set to line-wise if the +! * string contains at least one EOL character, otherwise it is set to +! * character-wise (block-wise is never used). + */ + NSMutableString *mstring = + [[pb stringForType:NSStringPboardType] mutableCopy]; +--- 89,95 ---- + + if (!string) + { +! /* Use NSStringPboardType. The motion type is detected automatically. + */ + NSMutableString *mstring = + [[pb stringForType:NSStringPboardType] mutableCopy]; +*************** +*** 108,126 **** + options:0 range:range]; + } + +- /* Scan for newline character to decide whether the string should be +- * pasted line-wise or character-wise. +- */ +- motion_type = MCHAR; +- if (0 < n || NSNotFound != [mstring rangeOfString:@"\n"].location) +- motion_type = MLINE; +- + string = mstring; + } + + if (!(MCHAR == motion_type || MLINE == motion_type || MBLOCK == motion_type + || MAUTO == motion_type)) +! motion_type = MCHAR; + + char_u *str = (char_u*)[string UTF8String]; + int len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; +--- 106,118 ---- + options:0 range:range]; + } + + string = mstring; + } + ++ /* Default to MAUTO, uses MCHAR or MLINE depending on trailing NL. */ + if (!(MCHAR == motion_type || MLINE == motion_type || MBLOCK == motion_type + || MAUTO == motion_type)) +! motion_type = MAUTO; + + char_u *str = (char_u*)[string UTF8String]; + int len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; +*** ../vim-7.3.226/src/version.c 2011-06-19 04:54:17.000000000 +0200 +--- src/version.c 2011-06-20 00:21:53.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 227, + /**/ + +-- +Some of the well know MS-Windows errors: + EMULTI Multitasking attempted, system confused + EKEYBOARD Keyboard locked, try getting out of this one! + EXPLAIN Unexplained error, please tell us what happened + EFUTURE Reserved for our future mistakes + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.228 b/source/ap/vim/patches/7.3.228 new file mode 100644 index 00000000..3edede59 --- /dev/null +++ b/source/ap/vim/patches/7.3.228 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.228 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.228 +Problem: "2gj" does not always move to the correct position. +Solution: Get length of line after moving to a next line. (James Vega) +Files: src/normal.c + + +*** ../mercurial/vim73/src/normal.c 2011-05-10 17:29:28.000000000 +0200 +--- src/normal.c 2011-06-20 00:41:43.000000000 +0200 +*************** +*** 4533,4538 **** +--- 4533,4539 ---- + } + curwin->w_cursor.lnum++; + curwin->w_curswant %= width2; ++ linelen = linetabsize(ml_get_curline()); + } + } + } +*** ../vim-7.3.227/src/version.c 2011-06-20 00:25:37.000000000 +0200 +--- src/version.c 2011-06-20 00:45:15.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 228, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +197. Your desk collapses under the weight of your computer peripherals. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.229 b/source/ap/vim/patches/7.3.229 new file mode 100644 index 00000000..b133f7a4 --- /dev/null +++ b/source/ap/vim/patches/7.3.229 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.229 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.229 +Problem: Using fork() makes gvim crash on Mac when build with + CoreFoundation. +Solution: Disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka) +Files: src/gui.c + + +*** ../mercurial/vim73/src/gui.c 2011-05-10 16:41:13.000000000 +0200 +--- src/gui.c 2011-06-20 00:51:21.000000000 +0200 +*************** +*** 59,65 **** + gui_start() + { + char_u *old_term; +! #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) + # define MAY_FORK + int dofork = TRUE; + #endif +--- 59,66 ---- + gui_start() + { + char_u *old_term; +! #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \ +! && !defined(__APPLE__) + # define MAY_FORK + int dofork = TRUE; + #endif +*** ../vim-7.3.228/src/version.c 2011-06-20 00:45:55.000000000 +0200 +--- src/version.c 2011-06-20 00:50:42.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 229, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +198. You read all the quotes at Netaholics Anonymous and keep thinking + "What's wrong with that?" + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.230 b/source/ap/vim/patches/7.3.230 new file mode 100644 index 00000000..80fcdf13 --- /dev/null +++ b/source/ap/vim/patches/7.3.230 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.230 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.230 +Problem: ":wundo" and ":rundo" don't unescape their argument. (Aaron + Thoma) +Solution: Use FILE1 instead of XFILE. +Files: src/ex_cmds.h + + +*** ../mercurial/vim73/src/ex_cmds.h 2010-08-20 11:09:02.000000000 +0200 +--- src/ex_cmds.h 2011-06-20 04:44:13.000000000 +0200 +*************** +*** 788,794 **** + EX(CMD_rubyfile, "rubyfile", ex_rubyfile, + RANGE|FILE1|NEEDARG|CMDWIN), + EX(CMD_rundo, "rundo", ex_rundo, +! NEEDARG|EXTRA|XFILE), + EX(CMD_rviminfo, "rviminfo", ex_viminfo, + BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_substitute, "substitute", do_sub, +--- 788,794 ---- + EX(CMD_rubyfile, "rubyfile", ex_rubyfile, + RANGE|FILE1|NEEDARG|CMDWIN), + EX(CMD_rundo, "rundo", ex_rundo, +! NEEDARG|FILE1), + EX(CMD_rviminfo, "rviminfo", ex_viminfo, + BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_substitute, "substitute", do_sub, +*************** +*** 1078,1084 **** + EX(CMD_wsverb, "wsverb", ex_wsverb, + EXTRA|NOTADR|NEEDARG), + EX(CMD_wundo, "wundo", ex_wundo, +! BANG|NEEDARG|EXTRA|XFILE), + EX(CMD_wviminfo, "wviminfo", ex_viminfo, + BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_xit, "xit", ex_exit, +--- 1078,1084 ---- + EX(CMD_wsverb, "wsverb", ex_wsverb, + EXTRA|NOTADR|NEEDARG), + EX(CMD_wundo, "wundo", ex_wundo, +! BANG|NEEDARG|FILE1), + EX(CMD_wviminfo, "wviminfo", ex_viminfo, + BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_xit, "xit", ex_exit, +*** ../vim-7.3.229/src/version.c 2011-06-20 00:53:10.000000000 +0200 +--- src/version.c 2011-06-20 05:02:40.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 230, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +201. When somebody asks you where you are, you tell them in which chat room. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.231 b/source/ap/vim/patches/7.3.231 new file mode 100644 index 00000000..266d0a2b --- /dev/null +++ b/source/ap/vim/patches/7.3.231 @@ -0,0 +1,128 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.231 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Note: this is a weird patch, it redoes patches from 7.3.202 and 7.3.203 +that failed when applied as a patch, but the mercurial repository +already had this, thus won't change anything there. + + +Patch 7.3.231 +Problem: Runtime file patches failed. +Solution: Redo the patches made against the patched files instead of the + files in the mercurial repository. +Files: runtime/doc/indent.txt, runtime/doc/os_win32.txt + + +*** ../vim-7.3.230/runtime/doc/indent.txt 2011-05-25 15:16:06.000000000 +0200 +--- runtime/doc/indent.txt 2011-05-31 22:23:39.000000000 +0200 +*************** +*** 356,363 **** + BaseClass(3) BaseClass(3) + {} {} + < +! +N Indent a continuation line (a line that spills onto the next) N +! additional characters. (default 'shiftwidth'). + + cino= cino=+10 > + a = b + 9 * a = b + 9 * +--- 357,368 ---- + BaseClass(3) BaseClass(3) + {} {} + < +! *cino-+* +! +N Indent a continuation line (a line that spills onto the next) +! inside a function N additional characters. (default +! 'shiftwidth'). +! Outside of a function, when the previous line ended in a +! backslash, the 2 * N is used. + + cino= cino=+10 > + a = b + 9 * a = b + 9 * +*************** +*** 509,522 **** +--- 514,532 ---- + } + } + < ++ *cino-)* + )N Vim searches for unclosed parentheses at most N lines away. + This limits the time needed to search for parentheses. (default + 20 lines). + ++ *cino-star* + *N Vim searches for unclosed comments at most N lines away. This + limits the time needed to search for the start of a comment. ++ If your /* */ comments stop indenting afer N lines this is the ++ value you will want to change. + (default 70 lines). + ++ *cino-#* + #N When N is non-zero recognize shell/Perl comments, starting with + '#'. Default N is zero: don't recognizes '#' comments. Note + that lines starting with # will still be seen as preprocessor +*** ../vim-7.3.230/runtime/doc/os_win32.txt 2010-08-15 21:57:16.000000000 +0200 +--- runtime/doc/os_win32.txt 2011-05-28 18:17:58.000000000 +0200 +*************** +*** 313,318 **** +--- 313,349 ---- + with :!start do not get passed Vim's open file handles, which means they do + not have to be closed before Vim. + To avoid this special treatment, use ":! start". ++ There are two optional arguments (see the next Q): ++ /min the window will be minimized. ++ /b" no console window will be opened ++ You can only one of these flags at a time. A second second one will be ++ treated as the start of the command. ++ ++ Q. How do I avoid getting a window for programs that I run asynchronously? ++ A. You have two possible solutions depending on what exactly do you want: ++ 1) You may use the /min flag in order to run program in a minimized state ++ with no other changes. It will work equally for console and GUI ++ applications. ++ 2) You can use the /b flag to run console applications without creating a ++ console window for them (GUI applications are not affected). But you ++ should use this flag only if the application you run doesn't require any ++ input. Otherwise it will get an EOF error because its input stream ++ (stdin) would be redirected to \\.\NUL (stdoud and stderr too). ++ ++ Example for a console application, run Exuberant ctags: > ++ :!start /min ctags -R . ++ < When it has finished you should see file named "tags" in your current ++ directory. You should notice the window title blinking on your taskbar. ++ This is more noticable for commands that take longer. ++ Now delete the "tags" file and run this command: > ++ :!start /b ctags -R . ++ < You should have the same "tags" file, but this time there will be no ++ blinking on the taskbar. ++ Example for a GUI application: > ++ :!start /min notepad ++ :!start /b notepad ++ < The first command runs notepad minimized and the second one runs it ++ normally. + + Q. I'm using Win32s, and when I try to run an external command like "make", + Vim doesn't wait for it to finish! Help! +*** ../vim-7.3.230/src/version.c 2011-06-20 05:02:53.000000000 +0200 +--- src/version.c 2011-06-26 03:14:03.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 231, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +222. You send more than 20 personal e-mails a day. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.232 b/source/ap/vim/patches/7.3.232 new file mode 100644 index 00000000..982d7478 --- /dev/null +++ b/source/ap/vim/patches/7.3.232 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.232 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.232 +Problem: Python doesn't compile without +multi_byte +Solution: Use "latin1" when MULTI_BYTE is not defined. +Files: src/if_py_both.h + + +*** ../vim-7.3.231/src/if_py_both.h 2011-06-19 00:27:46.000000000 +0200 +--- src/if_py_both.h 2011-06-26 03:58:07.000000000 +0200 +*************** +*** 12,17 **** +--- 12,23 ---- + * Common code for if_python.c and if_python3.c. + */ + ++ #ifdef FEAT_MBYTE ++ # define ENC_OPT p_enc ++ #else ++ # define ENC_OPT "latin1" ++ #endif ++ + /* + * obtain a lock on the Vim data structures + */ +*************** +*** 68,74 **** + char *str = NULL; + int error = ((OutputObject *)(self))->error; + +! if (!PyArg_ParseTuple(args, "es#", p_enc, &str, &len)) + return NULL; + + Py_BEGIN_ALLOW_THREADS +--- 74,80 ---- + char *str = NULL; + int error = ((OutputObject *)(self))->error; + +! if (!PyArg_ParseTuple(args, "es#", ENC_OPT, &str, &len)) + return NULL; + + Py_BEGIN_ALLOW_THREADS +*************** +*** 108,114 **** + char *str = NULL; + PyInt len; + +! if (!PyArg_Parse(line, "es#", p_enc, &str, &len)) { + PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); + Py_DECREF(list); + return NULL; +--- 114,120 ---- + char *str = NULL; + PyInt len; + +! if (!PyArg_Parse(line, "es#", ENC_OPT, &str, &len)) { + PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); + Py_DECREF(list); + return NULL; +*** ../vim-7.3.231/src/version.c 2011-06-26 03:16:58.000000000 +0200 +--- src/version.c 2011-06-26 04:00:40.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 232, + /**/ + +-- +If evolution theories are correct, humans will soon grow a third +hand for operating the mouse. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.233 b/source/ap/vim/patches/7.3.233 new file mode 100644 index 00000000..2dcbf89a --- /dev/null +++ b/source/ap/vim/patches/7.3.233 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.233 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.233 +Problem: ":scriptnames" and ":breaklist" show long file names. +Solution: Shorten to use "~/" when possible. (Jean-Rene David) +Files: src/ex_cmds2.c + + +*** ../vim-7.3.232/src/ex_cmds2.c 2011-05-19 18:26:34.000000000 +0200 +--- src/ex_cmds2.c 2011-06-26 04:20:24.000000000 +0200 +*************** +*** 682,691 **** + for (i = 0; i < dbg_breakp.ga_len; ++i) + { + bp = &BREAKP(i); + smsg((char_u *)_("%3d %s %s line %ld"), + bp->dbg_nr, + bp->dbg_type == DBG_FUNC ? "func" : "file", +! bp->dbg_name, + (long)bp->dbg_lnum); + } + } +--- 682,693 ---- + for (i = 0; i < dbg_breakp.ga_len; ++i) + { + bp = &BREAKP(i); ++ if (bp->dbg_type == DBG_FILE) ++ home_replace(NULL, bp->dbg_name, NameBuff, MAXPATHL, TRUE); + smsg((char_u *)_("%3d %s %s line %ld"), + bp->dbg_nr, + bp->dbg_type == DBG_FUNC ? "func" : "file", +! bp->dbg_type == DBG_FUNC ? bp->dbg_name : NameBuff, + (long)bp->dbg_lnum); + } + } +*************** +*** 3268,3274 **** + + for (i = 1; i <= script_items.ga_len && !got_int; ++i) + if (SCRIPT_ITEM(i).sn_name != NULL) +! smsg((char_u *)"%3d: %s", i, SCRIPT_ITEM(i).sn_name); + } + + # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO) +--- 3270,3280 ---- + + for (i = 1; i <= script_items.ga_len && !got_int; ++i) + if (SCRIPT_ITEM(i).sn_name != NULL) +! { +! home_replace(NULL, SCRIPT_ITEM(i).sn_name, +! NameBuff, MAXPATHL, TRUE); +! smsg((char_u *)"%3d: %s", i, NameBuff); +! } + } + + # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO) +*** ../vim-7.3.232/src/version.c 2011-06-26 04:01:37.000000000 +0200 +--- src/version.c 2011-06-26 04:23:48.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 233, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +223. You set up a web-cam as your home's security system. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.234 b/source/ap/vim/patches/7.3.234 new file mode 100644 index 00000000..a60df3db --- /dev/null +++ b/source/ap/vim/patches/7.3.234 @@ -0,0 +1,178 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.234 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.234 +Problem: With GTK menu may be popping down. +Solution: Use event time instead of GDK_CURRENT_TIME. (Hong Xu) +Files: src/gui.c, src/gui.h, src/gui_gtk.c, src/gui_gtk_x11.c + + +*** ../vim-7.3.233/src/gui.c 2011-06-20 00:53:10.000000000 +0200 +--- src/gui.c 2011-06-26 04:38:09.000000000 +0200 +*************** +*** 84,89 **** +--- 84,93 ---- + gui.starting = TRUE; + full_screen = FALSE; + ++ #ifdef FEAT_GUI_GTK ++ gui.event_time = GDK_CURRENT_TIME; ++ #endif ++ + #ifdef MAY_FORK + if (!gui.dofork || vim_strchr(p_go, GO_FORG) || recursive) + dofork = FALSE; +*** ../vim-7.3.233/src/gui.h 2011-05-10 16:41:13.000000000 +0200 +--- src/gui.h 2011-06-26 04:41:21.000000000 +0200 +*************** +*** 401,406 **** +--- 401,408 ---- + GtkAccelGroup *accel_group; + GtkWidget *filedlg; /* file selection dialog */ + char_u *browse_fname; /* file name from filedlg */ ++ ++ guint32 event_time; + #endif /* FEAT_GUI_GTK */ + + #if defined(FEAT_GUI_TABLINE) \ +*** ../vim-7.3.233/src/gui_gtk.c 2011-01-17 20:08:03.000000000 +0100 +--- src/gui_gtk.c 2011-06-26 04:38:09.000000000 +0200 +*************** +*** 1391,1397 **** + gtk_menu_popup(GTK_MENU(menu->submenu_id), + NULL, NULL, + (GtkMenuPositionFunc)NULL, NULL, +! 3U, (guint32)GDK_CURRENT_TIME); + } + + /* Ugly global variable to pass "mouse_pos" flag from gui_make_popup() to +--- 1391,1397 ---- + gtk_menu_popup(GTK_MENU(menu->submenu_id), + NULL, NULL, + (GtkMenuPositionFunc)NULL, NULL, +! 3U, gui.event_time); + } + + /* Ugly global variable to pass "mouse_pos" flag from gui_make_popup() to +*** ../vim-7.3.233/src/gui_gtk_x11.c 2011-06-19 01:14:22.000000000 +0200 +--- src/gui_gtk_x11.c 2011-06-26 04:39:57.000000000 +0200 +*************** +*** 88,95 **** + # include <X11/Sunkeysym.h> + #endif + +- static guint32 clipboard_event_time = CurrentTime; +- + /* + * Easy-to-use macro for multihead support. + */ +--- 88,93 ---- +*************** +*** 934,940 **** + guint state; + char_u *s, *d; + +! clipboard_event_time = event->time; + key_sym = event->keyval; + state = event->state; + +--- 932,938 ---- + guint state; + char_u *s, *d; + +! gui.event_time = event->time; + key_sym = event->keyval; + state = event->state; + +*************** +*** 1129,1135 **** + GdkEventKey *event, + gpointer data UNUSED) + { +! clipboard_event_time = event->time; + /* + * GTK+ 2 input methods may do fancy stuff on key release events too. + * With the default IM for instance, you can enter any UCS code point +--- 1127,1133 ---- + GdkEventKey *event, + gpointer data UNUSED) + { +! gui.event_time = event->time; + /* + * GTK+ 2 input methods may do fancy stuff on key release events too. + * With the default IM for instance, you can enter any UCS code point +*************** +*** 1622,1628 **** + int x, y; + int_u vim_modifiers; + +! clipboard_event_time = event->time; + + /* Make sure we have focus now we've been selected */ + if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget)) +--- 1620,1626 ---- + int x, y; + int_u vim_modifiers; + +! gui.event_time = event->time; + + /* Make sure we have focus now we've been selected */ + if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget)) +*************** +*** 1733,1739 **** + int x, y; + int_u vim_modifiers; + +! clipboard_event_time = event->time; + + /* Remove any motion "machine gun" timers used for automatic further + extension of allocation areas if outside of the applications window +--- 1731,1737 ---- + int x, y; + int_u vim_modifiers; + +! gui.event_time = event->time; + + /* Remove any motion "machine gun" timers used for automatic further + extension of allocation areas if outside of the applications window +*************** +*** 5654,5660 **** + int success; + + success = gtk_selection_owner_set(gui.drawarea, cbd->gtk_sel_atom, +! clipboard_event_time); + gui_mch_update(); + return (success) ? OK : FAIL; + } +--- 5652,5658 ---- + int success; + + success = gtk_selection_owner_set(gui.drawarea, cbd->gtk_sel_atom, +! gui.event_time); + gui_mch_update(); + return (success) ? OK : FAIL; + } +*** ../vim-7.3.233/src/version.c 2011-06-26 04:25:24.000000000 +0200 +--- src/version.c 2011-06-26 04:47:02.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 234, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +225. You sign up for free subscriptions for all the computer magazines + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.235 b/source/ap/vim/patches/7.3.235 new file mode 100644 index 00000000..a852c852 --- /dev/null +++ b/source/ap/vim/patches/7.3.235 @@ -0,0 +1,360 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.235 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.235 +Problem: ";" gets stuck on a "t" command, it's not useful. +Solution: Add the ';' flag in 'cpo'. (Christian Brabandt) +Files: runtime/doc/motion.txt, runtime/doc/options.txt, src/option.h, + src/search.c src/testdir/test81.in, src/testdir/test81.ok, + src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + + +*** ../vim-7.3.234/runtime/doc/motion.txt 2010-08-15 21:57:17.000000000 +0200 +--- runtime/doc/motion.txt 2011-06-26 05:15:58.000000000 +0200 +*************** +*** 269,279 **** + {char} can be entered like with the |f| command. + + *;* +! ; Repeat latest f, t, F or T [count] times. + + *,* + , Repeat latest f, t, F or T in opposite direction +! [count] times. + + ============================================================================== + 3. Up-down motions *up-down-motions* +--- 269,279 ---- + {char} can be entered like with the |f| command. + + *;* +! ; Repeat latest f, t, F or T [count] times. See |cpo-;| + + *,* + , Repeat latest f, t, F or T in opposite direction +! [count] times. See also |cpo-;| + + ============================================================================== + 3. Up-down motions *up-down-motions* +*** ../vim-7.3.234/runtime/doc/options.txt 2011-06-12 20:42:17.000000000 +0200 +--- runtime/doc/options.txt 2011-06-26 05:15:58.000000000 +0200 +*************** +*** 2090,2095 **** +--- 2117,2128 ---- + *cpo->* + > When appending to a register, put a line break before + the appended text. ++ *cpo-;* ++ ; When using |,| or |;| to repeat the last |t| search ++ and the cursor is right in front of the searched ++ character, the cursor won't move. When not included, ++ the cursor would skip over it and jump to the ++ following occurence. + + POSIX flags. These are not included in the Vi default value, except + when $VIM_POSIX was set on startup. |posix| +*** ../vim-7.3.234/src/option.h 2011-06-12 22:13:37.000000000 +0200 +--- src/option.h 2011-06-26 05:17:58.000000000 +0200 +*************** +*** 169,178 **** + #define CPO_SUBPERCENT '/' /* % in :s string uses previous one */ + #define CPO_BACKSL '\\' /* \ is not special in [] */ + #define CPO_CHDIR '.' /* don't chdir if buffer is modified */ + /* default values for Vim, Vi and POSIX */ + #define CPO_VIM "aABceFs" +! #define CPO_VI "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>" +! #define CPO_ALL "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>#{|&/\\." + + /* characters for p_ww option: */ + #define WW_ALL "bshl<>[],~" +--- 169,180 ---- + #define CPO_SUBPERCENT '/' /* % in :s string uses previous one */ + #define CPO_BACKSL '\\' /* \ is not special in [] */ + #define CPO_CHDIR '.' /* don't chdir if buffer is modified */ ++ #define CPO_SCOLON ';' /* using "," and ";" will skip over char if ++ * cursor would not move */ + /* default values for Vim, Vi and POSIX */ + #define CPO_VIM "aABceFs" +! #define CPO_VI "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>;" +! #define CPO_ALL "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>#{|&/\\.;" + + /* characters for p_ww option: */ + #define WW_ALL "bshl<>[],~" +*** ../vim-7.3.234/src/search.c 2011-05-10 16:41:13.000000000 +0200 +--- src/search.c 2011-06-26 05:20:45.000000000 +0200 +*************** +*** 1546,1551 **** +--- 1546,1552 ---- + int col; + char_u *p; + int len; ++ int stop = TRUE; + #ifdef FEAT_MBYTE + static char_u bytes[MB_MAXBYTES]; + static int bytelen = 1; /* >1 for multi-byte char */ +*************** +*** 1580,1585 **** +--- 1581,1592 ---- + t_cmd = last_t_cmd; + c = lastc; + /* For multi-byte re-use last bytes[] and bytelen. */ ++ ++ /* Force a move of at least one char, so ";" and "," will move the ++ * cursor, even if the cursor is right in front of char we are looking ++ * at. */ ++ if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1) ++ stop = FALSE; + } + + if (dir == BACKWARD) +*************** +*** 1612,1625 **** + } + if (bytelen == 1) + { +! if (p[col] == c) + break; + } + else + { +! if (vim_memcmp(p + col, bytes, bytelen) == 0) + break; + } + } + } + else +--- 1619,1633 ---- + } + if (bytelen == 1) + { +! if (p[col] == c && stop) + break; + } + else + { +! if (vim_memcmp(p + col, bytes, bytelen) == 0 && stop) + break; + } ++ stop = TRUE; + } + } + else +*************** +*** 1629,1636 **** + { + if ((col += dir) < 0 || col >= len) + return FAIL; +! if (p[col] == c) + break; + } + } + } +--- 1637,1645 ---- + { + if ((col += dir) < 0 || col >= len) + return FAIL; +! if (p[col] == c && stop) + break; ++ stop = TRUE; + } + } + } +*** ../vim-7.3.234/src/testdir/test81.in 2011-06-26 05:34:33.000000000 +0200 +--- src/testdir/test81.in 2011-06-26 05:30:31.000000000 +0200 +*************** +*** 0 **** +--- 1,18 ---- ++ Test for t movement command and 'cpo-;' setting ++ ++ STARTTEST ++ :set nocompatible ++ :set cpo-=; ++ /firstline/ ++ j0tt;D ++ $Ty;D:set cpo+=; ++ j0tt;;D ++ $Ty;;D:?firstline?+1,$w! test.out ++ :qa! ++ ENDTEST ++ ++ firstline ++ aaa two three four ++ bbb yee yoo four ++ ccc two three four ++ ddd yee yoo four +*** ../vim-7.3.234/src/testdir/test81.ok 2011-06-26 05:34:33.000000000 +0200 +--- src/testdir/test81.ok 2011-06-26 05:31:33.000000000 +0200 +*************** +*** 0 **** +--- 1,4 ---- ++ aaa two ++ bbb y ++ ccc ++ ddd yee y +*** ../vim-7.3.234/src/testdir/Makefile 2011-06-19 04:31:54.000000000 +0200 +--- src/testdir/Makefile 2011-06-26 05:09:56.000000000 +0200 +*************** +*** 26,32 **** + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out + + SCRIPTS_GUI = test16.out + +--- 26,32 ---- + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.234/src/testdir/Make_amiga.mak 2011-06-19 04:31:54.000000000 +0200 +--- src/testdir/Make_amiga.mak 2011-06-26 05:09:07.000000000 +0200 +*************** +*** 28,34 **** + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ +! test76.out test77.out test78.out test79.out test80.out + + .SUFFIXES: .in .out + +--- 28,35 ---- + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ +! test76.out test77.out test78.out test79.out test80.out \ +! test81.out + + .SUFFIXES: .in .out + +*************** +*** 128,130 **** +--- 129,132 ---- + test78.out: test78.in + test79.out: test79.in + test80.out: test80.in ++ test81.out: test81.in +*** ../vim-7.3.234/src/testdir/Make_dos.mak 2011-06-19 04:31:54.000000000 +0200 +--- src/testdir/Make_dos.mak 2011-06-26 05:09:16.000000000 +0200 +*************** +*** 29,35 **** + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out + + SCRIPTS32 = test50.out test70.out + +--- 29,35 ---- + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.234/src/testdir/Make_ming.mak 2011-06-19 04:31:54.000000000 +0200 +--- src/testdir/Make_ming.mak 2011-06-26 05:09:24.000000000 +0200 +*************** +*** 49,55 **** + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out + + SCRIPTS32 = test50.out test70.out + +--- 49,55 ---- + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.234/src/testdir/Make_os2.mak 2011-06-19 04:31:54.000000000 +0200 +--- src/testdir/Make_os2.mak 2011-06-26 05:09:33.000000000 +0200 +*************** +*** 28,34 **** + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ +! test76.out test77.out test78.out test79.out test80.out + + .SUFFIXES: .in .out + +--- 28,35 ---- + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ +! test76.out test77.out test78.out test79.out test80.out \ +! test81.out + + .SUFFIXES: .in .out + +*** ../vim-7.3.234/src/testdir/Make_vms.mms 2011-06-19 04:31:54.000000000 +0200 +--- src/testdir/Make_vms.mms 2011-06-26 05:09:42.000000000 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2011 Jun 19 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2011 Jun 26 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 75,81 **** + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ +! test77.out test78.out test79.out test80.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 75,81 ---- + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ +! test77.out test78.out test79.out test80.out test81.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.234/src/version.c 2011-06-26 04:48:56.000000000 +0200 +--- src/version.c 2011-06-26 05:33:53.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 235, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +226. You sit down at the computer right after dinner and your spouse + says "See you in the morning." + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.236 b/source/ap/vim/patches/7.3.236 new file mode 100644 index 00000000..3be69e30 --- /dev/null +++ b/source/ap/vim/patches/7.3.236 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.236 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.236 (after 7.3.232) +Problem: Python 3 doesn't compile without +multi_byte +Solution: Use "latin1" when MULTI_BYTE is not defined. (lilydjwg) +Files: src/if_python3.c + + +*** ../vim-7.3.235/src/if_python3.c 2011-06-19 00:27:46.000000000 +0200 +--- src/if_python3.c 2011-06-26 19:10:57.000000000 +0200 +*************** +*** 70,76 **** + + #define PyInt Py_ssize_t + #define PyString_Check(obj) PyUnicode_Check(obj) +! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)p_enc, NULL); + #define PyString_FreeBytes(obj) Py_XDECREF(bytes) + #define PyString_AsString(obj) PyBytes_AsString(obj) + #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) +--- 70,76 ---- + + #define PyInt Py_ssize_t + #define PyString_Check(obj) PyUnicode_Check(obj) +! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL); + #define PyString_FreeBytes(obj) Py_XDECREF(bytes) + #define PyString_AsString(obj) PyBytes_AsString(obj) + #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) +*************** +*** 661,667 **** + + /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause + * SyntaxError (unicode error). */ +! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)p_enc, NULL); + cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL); + Py_XDECREF(cmdstr); + PyRun_SimpleString(PyBytes_AsString(cmdbytes)); +--- 661,667 ---- + + /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause + * SyntaxError (unicode error). */ +! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)ENC_OPT, NULL); + cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL); + Py_XDECREF(cmdstr); + PyRun_SimpleString(PyBytes_AsString(cmdbytes)); +*************** +*** 1463,1469 **** + } + *p = '\0'; + +! result = PyUnicode_Decode(tmp, len, (char *)p_enc, NULL); + + vim_free(tmp); + return result; +--- 1463,1469 ---- + } + *p = '\0'; + +! result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, NULL); + + vim_free(tmp); + return result; +*** ../vim-7.3.235/src/version.c 2011-06-26 05:36:07.000000000 +0200 +--- src/version.c 2011-06-26 19:12:12.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 236, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +228. You spend Saturday night making the counter on your home page + pass that 2000 mark. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.237 b/source/ap/vim/patches/7.3.237 new file mode 100644 index 00000000..ead50ca6 --- /dev/null +++ b/source/ap/vim/patches/7.3.237 @@ -0,0 +1,222 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.237 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.237 +Problem: "filetype" completion doesn't work on Windows. (Yue Wu) +Solution: Don't use a glob pattern for the directories, use a list of + directories. (Dominique Pelle) +Files: src/ex_getln.c + + +*** ../vim-7.3.236/src/ex_getln.c 2011-05-19 18:26:34.000000000 +0200 +--- src/ex_getln.c 2011-06-26 19:36:36.000000000 +0200 +*************** +*** 110,116 **** + static int expand_showtail __ARGS((expand_T *xp)); + #ifdef FEAT_CMDL_COMPL + static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg)); +! static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname)); + # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) + static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file)); + static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file)); +--- 110,116 ---- + static int expand_showtail __ARGS((expand_T *xp)); + #ifdef FEAT_CMDL_COMPL + static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg)); +! static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[])); + # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) + static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file)); + static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file)); +*************** +*** 4536,4548 **** + || xp->xp_context == EXPAND_TAGS_LISTFILES) + return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file); + if (xp->xp_context == EXPAND_COLORS) +! return ExpandRTDir(pat, num_file, file, "colors"); + if (xp->xp_context == EXPAND_COMPILER) +! return ExpandRTDir(pat, num_file, file, "compiler"); + if (xp->xp_context == EXPAND_OWNSYNTAX) +! return ExpandRTDir(pat, num_file, file, "syntax"); + if (xp->xp_context == EXPAND_FILETYPE) +! return ExpandRTDir(pat, num_file, file, "{syntax,indent,ftplugin}"); + # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) + if (xp->xp_context == EXPAND_USER_LIST) + return ExpandUserList(xp, num_file, file); +--- 4536,4560 ---- + || xp->xp_context == EXPAND_TAGS_LISTFILES) + return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file); + if (xp->xp_context == EXPAND_COLORS) +! { +! char *directories[] = {"colors", NULL}; +! return ExpandRTDir(pat, num_file, file, directories); +! } + if (xp->xp_context == EXPAND_COMPILER) +! { +! char *directories[] = {"colors", NULL}; +! return ExpandRTDir(pat, num_file, file, directories); +! } + if (xp->xp_context == EXPAND_OWNSYNTAX) +! { +! char *directories[] = {"syntax", NULL}; +! return ExpandRTDir(pat, num_file, file, directories); +! } + if (xp->xp_context == EXPAND_FILETYPE) +! { +! char *directories[] = {"syntax", "indent", "ftplugin", NULL}; +! return ExpandRTDir(pat, num_file, file, directories); +! } + # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) + if (xp->xp_context == EXPAND_USER_LIST) + return ExpandUserList(xp, num_file, file); +*************** +*** 4995,5051 **** + /* + * Expand color scheme, compiler or filetype names: + * 'runtimepath'/{dirnames}/{pat}.vim +! * dirnames may contain one directory (ex: "colorscheme") or can be a glob +! * expression matching multiple directories (ex: "{syntax,ftplugin,indent}"). + */ + static int + ExpandRTDir(pat, num_file, file, dirnames) + char_u *pat; + int *num_file; + char_u ***file; +! char *dirnames; + { +! char_u *all; + char_u *s; + char_u *e; + garray_T ga; + + *num_file = 0; + *file = NULL; +! s = alloc((unsigned)(STRLEN(pat) + STRLEN(dirnames) + 7)); +! if (s == NULL) +! return FAIL; +! sprintf((char *)s, "%s/%s*.vim", dirnames, pat); +! all = globpath(p_rtp, s, 0); +! vim_free(s); +! if (all == NULL) +! return FAIL; + +! ga_init2(&ga, (int)sizeof(char *), 3); +! for (s = all; *s != NUL; s = e) + { +! e = vim_strchr(s, '\n'); +! if (e == NULL) +! e = s + STRLEN(s); +! if (ga_grow(&ga, 1) == FAIL) +! break; +! if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0) + { +! for (s = e - 4; s > all; mb_ptr_back(all, s)) +! if (*s == '\n' || vim_ispathsep(*s)) +! break; +! ++s; +! ((char_u **)ga.ga_data)[ga.ga_len] = + vim_strnsave(s, (int)(e - s - 4)); +! ++ga.ga_len; + } +! if (*e != NUL) +! ++e; + } +! vim_free(all); + + /* Sort and remove duplicates which can happen when specifying multiple +! * directories in dirnames such as "{syntax,ftplugin,indent}". */ + remove_duplicates(&ga); + + *file = ga.ga_data; +--- 5007,5074 ---- + /* + * Expand color scheme, compiler or filetype names: + * 'runtimepath'/{dirnames}/{pat}.vim +! * "dirnames" is an array with one or more directory names. + */ + static int + ExpandRTDir(pat, num_file, file, dirnames) + char_u *pat; + int *num_file; + char_u ***file; +! char *dirnames[]; + { +! char_u *matches; + char_u *s; + char_u *e; + garray_T ga; ++ int i; ++ int pat_len; + + *num_file = 0; + *file = NULL; +! pat_len = STRLEN(pat); +! ga_init2(&ga, (int)sizeof(char *), 10); + +! for (i = 0; dirnames[i] != NULL; ++i) + { +! s = alloc((unsigned)(STRLEN(dirnames[i]) + pat_len + 7)); +! if (s == NULL) + { +! ga_clear_strings(&ga); +! return FAIL; +! } +! sprintf((char *)s, "%s/%s*.vim", dirnames[i], pat); +! matches = globpath(p_rtp, s, 0); +! vim_free(s); +! if (matches == NULL) +! continue; +! +! for (s = matches; *s != NUL; s = e) +! { +! e = vim_strchr(s, '\n'); +! if (e == NULL) +! e = s + STRLEN(s); +! if (ga_grow(&ga, 1) == FAIL) +! break; +! if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0) +! { +! for (s = e - 4; s > matches; mb_ptr_back(matches, s)) +! if (*s == '\n' || vim_ispathsep(*s)) +! break; +! ++s; +! ((char_u **)ga.ga_data)[ga.ga_len] = + vim_strnsave(s, (int)(e - s - 4)); +! ++ga.ga_len; +! } +! if (*e != NUL) +! ++e; + } +! vim_free(matches); + } +! if (ga.ga_len == 0) +! return FAIL; + + /* Sort and remove duplicates which can happen when specifying multiple +! * directories in dirnames. */ + remove_duplicates(&ga); + + *file = ga.ga_data; +*** ../vim-7.3.236/src/version.c 2011-06-26 19:13:33.000000000 +0200 +--- src/version.c 2011-06-26 19:39:39.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 237, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +230. You spend your Friday nights typing away at your keyboard + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.238 b/source/ap/vim/patches/7.3.238 new file mode 100644 index 00000000..289b1a43 --- /dev/null +++ b/source/ap/vim/patches/7.3.238 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.238 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.238 +Problem: Compiler warning for conversion. +Solution: Add type cast. (Mike Williams) +Files: src/ex_getln.c + + +*** ../vim-7.3.237/src/ex_getln.c 2011-06-26 19:40:14.000000000 +0200 +--- src/ex_getln.c 2011-07-04 14:23:27.000000000 +0200 +*************** +*** 5025,5031 **** + + *num_file = 0; + *file = NULL; +! pat_len = STRLEN(pat); + ga_init2(&ga, (int)sizeof(char *), 10); + + for (i = 0; dirnames[i] != NULL; ++i) +--- 5025,5031 ---- + + *num_file = 0; + *file = NULL; +! pat_len = (int)STRLEN(pat); + ga_init2(&ga, (int)sizeof(char *), 10); + + for (i = 0; dirnames[i] != NULL; ++i) +*** ../vim-7.3.237/src/version.c 2011-06-26 19:40:14.000000000 +0200 +--- src/version.c 2011-07-07 15:04:00.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 238, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +255. You work for a newspaper and your editor asks you to write an + article about Internet addiction...in the "first person." + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.239 b/source/ap/vim/patches/7.3.239 new file mode 100644 index 00000000..1c03da3f --- /dev/null +++ b/source/ap/vim/patches/7.3.239 @@ -0,0 +1,321 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.239 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.239 +Problem: Python corrects the cursor column without taking 'virtualedit' + into account. (lilydjwg) +Solution: Call check_cursor_col_win(). +Files: src/if_py_both.h, src/mbyte.c, src/misc2.c, src/normal.c, + src/proto/mbyte.pro, src/proto/misc2.pro + + +*** ../vim-7.3.238/src/if_py_both.h 2011-06-26 04:01:37.000000000 +0200 +--- src/if_py_both.h 2011-07-07 14:28:19.000000000 +0200 +*************** +*** 534,540 **** + { + long lnum; + long col; +- long len; + + if (!PyArg_Parse(val, "(ll)", &lnum, &col)) + return -1; +--- 534,539 ---- +*************** +*** 549,566 **** + if (VimErrorCheck()) + return -1; + +- /* When column is out of range silently correct it. */ +- len = (long)STRLEN(ml_get_buf(this->win->w_buffer, lnum, FALSE)); +- if (col > len) +- col = len; +- + this->win->w_cursor.lnum = lnum; + this->win->w_cursor.col = col; + #ifdef FEAT_VIRTUALEDIT + this->win->w_cursor.coladd = 0; + #endif +! update_screen(VALID); + + return 0; + } + else if (strcmp(name, "height") == 0) +--- 548,562 ---- + if (VimErrorCheck()) + return -1; + + this->win->w_cursor.lnum = lnum; + this->win->w_cursor.col = col; + #ifdef FEAT_VIRTUALEDIT + this->win->w_cursor.coladd = 0; + #endif +! /* When column is out of range silently correct it. */ +! check_cursor_col_win(this->win); + ++ update_screen(VALID); + return 0; + } + else if (strcmp(name, "height") == 0) +*** ../vim-7.3.238/src/mbyte.c 2011-04-11 14:29:13.000000000 +0200 +--- src/mbyte.c 2011-07-07 14:27:07.000000000 +0200 +*************** +*** 3563,3569 **** + void + mb_adjust_cursor() + { +! mb_adjustpos(&curwin->w_cursor); + } + + /* +--- 3563,3569 ---- + void + mb_adjust_cursor() + { +! mb_adjustpos(curbuf, &curwin->w_cursor); + } + + /* +*************** +*** 3571,3577 **** + * If it points to a tail byte it's moved backwards to the head byte. + */ + void +! mb_adjustpos(lp) + pos_T *lp; + { + char_u *p; +--- 3571,3578 ---- + * If it points to a tail byte it's moved backwards to the head byte. + */ + void +! mb_adjustpos(buf, lp) +! buf_T *buf; + pos_T *lp; + { + char_u *p; +*************** +*** 3582,3588 **** + #endif + ) + { +! p = ml_get(lp->lnum); + lp->col -= (*mb_head_off)(p, p + lp->col); + #ifdef FEAT_VIRTUALEDIT + /* Reset "coladd" when the cursor would be on the right half of a +--- 3583,3589 ---- + #endif + ) + { +! p = ml_get_buf(buf, lp->lnum, FALSE); + lp->col -= (*mb_head_off)(p, p + lp->col); + #ifdef FEAT_VIRTUALEDIT + /* Reset "coladd" when the cursor would be on the right half of a +*** ../vim-7.3.238/src/misc2.c 2011-04-11 16:56:29.000000000 +0200 +--- src/misc2.c 2011-07-07 14:27:50.000000000 +0200 +*************** +*** 333,339 **** + #ifdef FEAT_MBYTE + /* prevent from moving onto a trail byte */ + if (has_mbyte) +! mb_adjustpos(pos); + #endif + + if (col < wcol) +--- 333,339 ---- + #ifdef FEAT_MBYTE + /* prevent from moving onto a trail byte */ + if (has_mbyte) +! mb_adjustpos(curbuf, pos); + #endif + + if (col < wcol) +*************** +*** 544,559 **** + void + check_cursor_col() + { + colnr_T len; + #ifdef FEAT_VIRTUALEDIT +! colnr_T oldcol = curwin->w_cursor.col; +! colnr_T oldcoladd = curwin->w_cursor.col + curwin->w_cursor.coladd; + #endif + +! len = (colnr_T)STRLEN(ml_get_curline()); + if (len == 0) +! curwin->w_cursor.col = 0; +! else if (curwin->w_cursor.col >= len) + { + /* Allow cursor past end-of-line when: + * - in Insert mode or restarting Insert mode +--- 544,569 ---- + void + check_cursor_col() + { ++ check_cursor_col_win(curwin); ++ } ++ ++ /* ++ * Make sure win->w_cursor.col is valid. ++ */ ++ void ++ check_cursor_col_win(win) ++ win_T *win; ++ { + colnr_T len; + #ifdef FEAT_VIRTUALEDIT +! colnr_T oldcol = win->w_cursor.col; +! colnr_T oldcoladd = win->w_cursor.col + win->w_cursor.coladd; + #endif + +! len = (colnr_T)STRLEN(ml_get_buf(win->w_buffer, win->w_cursor.lnum, FALSE)); + if (len == 0) +! win->w_cursor.col = 0; +! else if (win->w_cursor.col >= len) + { + /* Allow cursor past end-of-line when: + * - in Insert mode or restarting Insert mode +*************** +*** 567,599 **** + || (ve_flags & VE_ONEMORE) + #endif + || virtual_active()) +! curwin->w_cursor.col = len; + else + { +! curwin->w_cursor.col = len - 1; + #ifdef FEAT_MBYTE +! /* prevent cursor from moving on the trail byte */ + if (has_mbyte) +! mb_adjust_cursor(); + #endif + } + } +! else if (curwin->w_cursor.col < 0) +! curwin->w_cursor.col = 0; + + #ifdef FEAT_VIRTUALEDIT + /* If virtual editing is on, we can leave the cursor on the old position, + * only we must set it to virtual. But don't do it when at the end of the + * line. */ + if (oldcol == MAXCOL) +! curwin->w_cursor.coladd = 0; + else if (ve_flags == VE_ALL) + { +! if (oldcoladd > curwin->w_cursor.col) +! curwin->w_cursor.coladd = oldcoladd - curwin->w_cursor.col; + else + /* avoid weird number when there is a miscalculation or overflow */ +! curwin->w_cursor.coladd = 0; + } + #endif + } +--- 577,609 ---- + || (ve_flags & VE_ONEMORE) + #endif + || virtual_active()) +! win->w_cursor.col = len; + else + { +! win->w_cursor.col = len - 1; + #ifdef FEAT_MBYTE +! /* Move the cursor to the head byte. */ + if (has_mbyte) +! mb_adjustpos(win->w_buffer, &win->w_cursor); + #endif + } + } +! else if (win->w_cursor.col < 0) +! win->w_cursor.col = 0; + + #ifdef FEAT_VIRTUALEDIT + /* If virtual editing is on, we can leave the cursor on the old position, + * only we must set it to virtual. But don't do it when at the end of the + * line. */ + if (oldcol == MAXCOL) +! win->w_cursor.coladd = 0; + else if (ve_flags == VE_ALL) + { +! if (oldcoladd > win->w_cursor.col) +! win->w_cursor.coladd = oldcoladd - win->w_cursor.col; + else + /* avoid weird number when there is a miscalculation or overflow */ +! win->w_cursor.coladd = 0; + } + #endif + } +*** ../vim-7.3.238/src/normal.c 2011-06-20 00:45:55.000000000 +0200 +--- src/normal.c 2011-07-07 14:27:57.000000000 +0200 +*************** +*** 8774,8780 **** + { + --pp->col; + #ifdef FEAT_MBYTE +! mb_adjustpos(pp); + #endif + } + else if (pp->lnum > 1) +--- 8774,8780 ---- + { + --pp->col; + #ifdef FEAT_MBYTE +! mb_adjustpos(curbuf, pp); + #endif + } + else if (pp->lnum > 1) +*** ../vim-7.3.238/src/proto/mbyte.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/mbyte.pro 2011-07-07 14:27:09.000000000 +0200 +*************** +*** 56,62 **** + int utf_valid_string __ARGS((char_u *s, char_u *end)); + int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p)); + void mb_adjust_cursor __ARGS((void)); +! void mb_adjustpos __ARGS((pos_T *lp)); + char_u *mb_prevptr __ARGS((char_u *line, char_u *p)); + int mb_charlen __ARGS((char_u *str)); + int mb_charlen_len __ARGS((char_u *str, int len)); +--- 56,62 ---- + int utf_valid_string __ARGS((char_u *s, char_u *end)); + int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p)); + void mb_adjust_cursor __ARGS((void)); +! void mb_adjustpos __ARGS((buf_T *buf, pos_T *lp)); + char_u *mb_prevptr __ARGS((char_u *line, char_u *p)); + int mb_charlen __ARGS((char_u *str)); + int mb_charlen_len __ARGS((char_u *str, int len)); +*** ../vim-7.3.238/src/proto/misc2.pro 2011-04-11 16:56:29.000000000 +0200 +--- src/proto/misc2.pro 2011-07-07 14:26:57.000000000 +0200 +*************** +*** 14,19 **** +--- 14,20 ---- + linenr_T get_cursor_rel_lnum __ARGS((win_T *wp, linenr_T lnum)); + void check_cursor_lnum __ARGS((void)); + void check_cursor_col __ARGS((void)); ++ void check_cursor_col_win __ARGS((win_T *win)); + void check_cursor __ARGS((void)); + void adjust_cursor_col __ARGS((void)); + int leftcol_changed __ARGS((void)); +*** ../vim-7.3.238/src/version.c 2011-07-07 15:04:38.000000000 +0200 +--- src/version.c 2011-07-07 15:05:49.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 239, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +256. You are able to write down over 250 symptoms of being an internet + addict, even though they only asked for 101. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.240 b/source/ap/vim/patches/7.3.240 new file mode 100644 index 00000000..7048ac1f --- /dev/null +++ b/source/ap/vim/patches/7.3.240 @@ -0,0 +1,795 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.240 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Note: I haven't verified this works or even compiles. Please send me a +patch if you see a problem and can fix it. + +Patch 7.3.240 +Problem: External commands can't use pipes on MS-Windows. +Solution: Implement pipes and use them when 'shelltemp' isn't set. (Vincent + Berthoux) +Files: src/eval.c, src/ex_cmds.c, src/misc2.c, src/os_unix.c, + src/os_win32.c, src/proto/misc2.pro, src/ui.c + + +*** ../vim-7.3.239/src/eval.c 2011-06-19 02:55:32.000000000 +0200 +--- src/eval.c 2011-07-07 15:44:56.000000000 +0200 +*************** +*** 11931,11937 **** + #ifdef FEAT_SEARCHPATH + "file_in_path", + #endif +! #if defined(UNIX) && !defined(USE_SYSTEM) + "filterpipe", + #endif + #ifdef FEAT_FIND_ID +--- 11931,11937 ---- + #ifdef FEAT_SEARCHPATH + "file_in_path", + #endif +! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264) + "filterpipe", + #endif + #ifdef FEAT_FIND_ID +*** ../vim-7.3.239/src/ex_cmds.c 2011-06-12 22:03:15.000000000 +0200 +--- src/ex_cmds.c 2011-07-07 15:44:56.000000000 +0200 +*************** +*** 1107,1113 **** + if (do_out) + shell_flags |= SHELL_DOOUT; + +! #if !defined(USE_SYSTEM) && defined(UNIX) + if (!do_in && do_out && !p_stmp) + { + /* Use a pipe to fetch stdout of the command, do not use a temp file. */ +--- 1107,1113 ---- + if (do_out) + shell_flags |= SHELL_DOOUT; + +! #if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264) + if (!do_in && do_out && !p_stmp) + { + /* Use a pipe to fetch stdout of the command, do not use a temp file. */ +*** ../vim-7.3.239/src/misc2.c 2011-07-07 15:08:53.000000000 +0200 +--- src/misc2.c 2011-07-07 15:55:42.000000000 +0200 +*************** +*** 2146,2151 **** +--- 2146,2170 ---- + } + } + ++ #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264) ++ /* ++ * Append the text in "gap" below the cursor line and clear "gap". ++ */ ++ void ++ append_ga_line(gap) ++ garray_T *gap; ++ { ++ /* Remove trailing CR. */ ++ if (gap->ga_len > 0 ++ && !curbuf->b_p_bin ++ && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR) ++ --gap->ga_len; ++ ga_append(gap, NUL); ++ ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE); ++ gap->ga_len = 0; ++ } ++ #endif ++ + /************************************************************************ + * functions that use lookup tables for various things, generally to do with + * special key codes. +*** ../vim-7.3.239/src/os_unix.c 2011-04-11 16:56:29.000000000 +0200 +--- src/os_unix.c 2011-07-07 15:54:58.000000000 +0200 +*************** +*** 3660,3686 **** + /* Nothing to do. */ + } + +- #ifndef USE_SYSTEM +- static void append_ga_line __ARGS((garray_T *gap)); +- +- /* +- * Append the text in "gap" below the cursor line and clear "gap". +- */ +- static void +- append_ga_line(gap) +- garray_T *gap; +- { +- /* Remove trailing CR. */ +- if (gap->ga_len > 0 +- && !curbuf->b_p_bin +- && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR) +- --gap->ga_len; +- ga_append(gap, NUL); +- ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE); +- gap->ga_len = 0; +- } +- #endif +- + int + mch_call_shell(cmd, options) + char_u *cmd; +--- 3660,3665 ---- +*** ../vim-7.3.239/src/os_win32.c 2011-05-25 17:06:16.000000000 +0200 +--- src/os_win32.c 2011-07-07 16:08:30.000000000 +0200 +*************** +*** 417,422 **** +--- 417,427 ---- + static PGNSECINFO pGetNamedSecurityInfo; + #endif + ++ typedef BOOL (WINAPI *PSETHANDLEINFORMATION)(HANDLE, DWORD, DWORD); ++ ++ static BOOL allowPiping = FALSE; ++ static PSETHANDLEINFORMATION pSetHandleInformation; ++ + /* + * Set g_PlatformId to VER_PLATFORM_WIN32_NT (NT) or + * VER_PLATFORM_WIN32_WINDOWS (Win95). +*************** +*** 467,472 **** +--- 472,489 ---- + } + } + #endif ++ /* ++ * If we are on windows NT, try to load the pipe functions, only ++ * available from Win2K. ++ */ ++ if (g_PlatformId == VER_PLATFORM_WIN32_NT) ++ { ++ HANDLE kernel32 = GetModuleHandle("kernel32"); ++ pSetHandleInformation = (PSETHANDLEINFORMATION)GetProcAddress( ++ kernel32, "SetHandleInformation"); ++ ++ allowPiping = pSetHandleInformation != NULL; ++ } + done = TRUE; + } + } +*************** +*** 1635,1641 **** + } + + #if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \ +! __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400) + /* + * Bad parameter handler. + * +--- 1652,1658 ---- + } + + #if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \ +! __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400) + /* + * Bad parameter handler. + * +*************** +*** 3210,3216 **** + * 4. Prompt the user to press a key to close the console window + */ + static int +! mch_system(char *cmd, int options) + { + STARTUPINFO si; + PROCESS_INFORMATION pi; +--- 3227,3233 ---- + * 4. Prompt the user to press a key to close the console window + */ + static int +! mch_system_classic(char *cmd, int options) + { + STARTUPINFO si; + PROCESS_INFORMATION pi; +*************** +*** 3315,3320 **** +--- 3332,3829 ---- + + return ret; + } ++ ++ /* ++ * Thread launched by the gui to send the current buffer data to the ++ * process. This way avoid to hang up vim totally if the children ++ * process take a long time to process the lines. ++ */ ++ static DWORD WINAPI ++ sub_process_writer(LPVOID param) ++ { ++ HANDLE g_hChildStd_IN_Wr = param; ++ linenr_T lnum = curbuf->b_op_start.lnum; ++ DWORD len = 0; ++ DWORD l; ++ char_u *lp = ml_get(lnum); ++ char_u *s; ++ int written = 0; ++ ++ for (;;) ++ { ++ l = (DWORD)STRLEN(lp + written); ++ if (l == 0) ++ len = 0; ++ else if (lp[written] == NL) ++ { ++ /* NL -> NUL translation */ ++ WriteFile(g_hChildStd_IN_Wr, "", 1, &len, NULL); ++ } ++ else ++ { ++ s = vim_strchr(lp + written, NL); ++ WriteFile(g_hChildStd_IN_Wr, (char *)lp + written, ++ s == NULL ? l : (DWORD)(s - (lp + written)), ++ &len, NULL); ++ } ++ if (len == (int)l) ++ { ++ /* Finished a line, add a NL, unless this line should not have ++ * one. */ ++ if (lnum != curbuf->b_op_end.lnum ++ || !curbuf->b_p_bin ++ || (lnum != curbuf->b_no_eol_lnum ++ && (lnum != curbuf->b_ml.ml_line_count ++ || curbuf->b_p_eol))) ++ { ++ WriteFile(g_hChildStd_IN_Wr, "\n", 1, &ignored, NULL); ++ } ++ ++ ++lnum; ++ if (lnum > curbuf->b_op_end.lnum) ++ break; ++ ++ lp = ml_get(lnum); ++ written = 0; ++ } ++ else if (len > 0) ++ written += len; ++ } ++ ++ /* finished all the lines, close pipe */ ++ CloseHandle(g_hChildStd_IN_Wr); ++ ExitThread(0); ++ } ++ ++ ++ # define BUFLEN 100 /* length for buffer, stolen from unix version */ ++ ++ /* ++ * This function read from the children's stdout and write the ++ * data on screen or in the buffer accordingly. ++ */ ++ static void ++ dump_pipe(int options, ++ HANDLE g_hChildStd_OUT_Rd, ++ garray_T *ga, ++ char_u buffer[], ++ DWORD *buffer_off) ++ { ++ DWORD availableBytes = 0; ++ DWORD i; ++ int c; ++ char_u *p; ++ int ret; ++ DWORD len; ++ DWORD toRead; ++ int repeatCount; ++ ++ /* we query the pipe to see if there is any data to read ++ * to avoid to perform a blocking read */ ++ ret = PeekNamedPipe(g_hChildStd_OUT_Rd, /* pipe to query */ ++ NULL, /* optional buffer */ ++ 0, /* buffe size */ ++ NULL, /* number of read bytes */ ++ &availableBytes, /* available bytes total */ ++ NULL); /* byteLeft */ ++ ++ repeatCount = 0; ++ /* We got real data in the pipe, read it */ ++ while (ret != 0 && availableBytes > 0 && availableBytes > 0) ++ { ++ repeatCount++; ++ toRead = ++ # ifdef FEAT_MBYTE ++ (DWORD)(BUFLEN - *buffer_off); ++ # else ++ (DWORD)BUFLEN; ++ # endif ++ toRead = availableBytes < toRead ? availableBytes : toRead; ++ ReadFile(g_hChildStd_OUT_Rd, buffer ++ # ifdef FEAT_MBYTE ++ + *buffer_off, toRead ++ # else ++ , toRead ++ # endif ++ , &len, NULL); ++ ++ /* If we haven't read anything, there is a problem */ ++ if (len == 0) ++ break; ++ ++ availableBytes -= len; ++ ++ if (options & SHELL_READ) ++ { ++ /* Do NUL -> NL translation, append NL separated ++ * lines to the current buffer. */ ++ for (i = 0; i < len; ++i) ++ { ++ if (buffer[i] == NL) ++ append_ga_line(ga); ++ else if (buffer[i] == NUL) ++ ga_append(ga, NL); ++ else ++ ga_append(ga, buffer[i]); ++ } ++ } ++ # ifdef FEAT_MBYTE ++ else if (has_mbyte) ++ { ++ int l; ++ ++ len += *buffer_off; ++ buffer[len] = NUL; ++ ++ /* Check if the last character in buffer[] is ++ * incomplete, keep these bytes for the next ++ * round. */ ++ for (p = buffer; p < buffer + len; p += l) ++ { ++ l = mb_cptr2len(p); ++ if (l == 0) ++ l = 1; /* NUL byte? */ ++ else if (MB_BYTE2LEN(*p) != l) ++ break; ++ } ++ if (p == buffer) /* no complete character */ ++ { ++ /* avoid getting stuck at an illegal byte */ ++ if (len >= 12) ++ ++p; ++ else ++ { ++ *buffer_off = len; ++ return; ++ } ++ } ++ c = *p; ++ *p = NUL; ++ msg_puts(buffer); ++ if (p < buffer + len) ++ { ++ *p = c; ++ *buffer_off = (DWORD)((buffer + len) - p); ++ mch_memmove(buffer, p, *buffer_off); ++ return; ++ } ++ *buffer_off = 0; ++ } ++ # endif /* FEAT_MBYTE */ ++ else ++ { ++ buffer[len] = NUL; ++ msg_puts(buffer); ++ } ++ ++ windgoto(msg_row, msg_col); ++ cursor_on(); ++ out_flush(); ++ } ++ } ++ ++ /* ++ * Version of system to use for windows NT > 5.0 (Win2K), use pipe ++ * for communication and doesn't open any new window. ++ */ ++ static int ++ mch_system_piped(char *cmd, int options) ++ { ++ STARTUPINFO si; ++ PROCESS_INFORMATION pi; ++ DWORD ret = 0; ++ ++ HANDLE g_hChildStd_IN_Rd = NULL; ++ HANDLE g_hChildStd_IN_Wr = NULL; ++ HANDLE g_hChildStd_OUT_Rd = NULL; ++ HANDLE g_hChildStd_OUT_Wr = NULL; ++ ++ char_u buffer[BUFLEN + 1]; /* reading buffer + size */ ++ DWORD len; ++ ++ /* buffer used to receive keys */ ++ char_u ta_buf[BUFLEN + 1]; /* TypeAHead */ ++ int ta_len = 0; /* valid bytes in ta_buf[] */ ++ ++ DWORD i; ++ int c; ++ int noread_cnt = 0; ++ garray_T ga; ++ int delay = 1; ++ # ifdef FEAT_MBYTE ++ DWORD buffer_off = 0; /* valid bytes in buffer[] */ ++ # endif ++ ++ SECURITY_ATTRIBUTES saAttr; ++ ++ /* Set the bInheritHandle flag so pipe handles are inherited. */ ++ saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); ++ saAttr.bInheritHandle = TRUE; ++ saAttr.lpSecurityDescriptor = NULL; ++ ++ if ( ! CreatePipe(&g_hChildStd_OUT_Rd, &g_hChildStd_OUT_Wr, &saAttr, 0) ++ /* Ensure the read handle to the pipe for STDOUT is not inherited. */ ++ || ! pSetHandleInformation(g_hChildStd_OUT_Rd, HANDLE_FLAG_INHERIT, 0) ++ /* Create a pipe for the child process's STDIN. */ ++ || ! CreatePipe(&g_hChildStd_IN_Rd, &g_hChildStd_IN_Wr, &saAttr, 0) ++ /* Ensure the write handle to the pipe for STDIN is not inherited. */ ++ || ! pSetHandleInformation(g_hChildStd_IN_Wr, HANDLE_FLAG_INHERIT, 0) ) ++ { ++ CloseHandle(g_hChildStd_IN_Rd); ++ CloseHandle(g_hChildStd_IN_Wr); ++ CloseHandle(g_hChildStd_OUT_Rd); ++ CloseHandle(g_hChildStd_OUT_Wr); ++ MSG_PUTS(_("\nCannot create pipes\n")); ++ } ++ ++ si.cb = sizeof(si); ++ si.lpReserved = NULL; ++ si.lpDesktop = NULL; ++ si.lpTitle = NULL; ++ si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; ++ ++ /* set-up our file redirection */ ++ si.hStdError = g_hChildStd_OUT_Wr; ++ si.hStdOutput = g_hChildStd_OUT_Wr; ++ si.hStdInput = g_hChildStd_IN_Rd; ++ si.wShowWindow = SW_HIDE; ++ si.cbReserved2 = 0; ++ si.lpReserved2 = NULL; ++ ++ if (options & SHELL_READ) ++ ga_init2(&ga, 1, BUFLEN); ++ ++ /* Now, run the command */ ++ CreateProcess(NULL, /* Executable name */ ++ cmd, /* Command to execute */ ++ NULL, /* Process security attributes */ ++ NULL, /* Thread security attributes */ ++ ++ // this command can be litigeous, handle inheritence was ++ // deactivated for pending temp file, but, if we deactivate ++ // it, the pipes don't work for some reason. ++ TRUE, /* Inherit handles, first deactivated, ++ * but needed */ ++ CREATE_DEFAULT_ERROR_MODE, /* Creation flags */ ++ NULL, /* Environment */ ++ NULL, /* Current directory */ ++ &si, /* Startup information */ ++ &pi); /* Process information */ ++ ++ ++ /* Close our unused side of the pipes */ ++ CloseHandle(g_hChildStd_IN_Rd); ++ CloseHandle(g_hChildStd_OUT_Wr); ++ ++ if (options & SHELL_WRITE) ++ { ++ HANDLE thread = ++ CreateThread(NULL, /* security attributes */ ++ 0, /* default stack size */ ++ sub_process_writer, /* function to be executed */ ++ g_hChildStd_IN_Wr, /* parameter */ ++ 0, /* creation flag, start immediately */ ++ NULL); /* we don't care about thread id */ ++ CloseHandle(thread); ++ g_hChildStd_IN_Wr = NULL; ++ } ++ ++ /* Keep updating the window while waiting for the shell to finish. */ ++ for (;;) ++ { ++ MSG msg; ++ ++ if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE)) ++ { ++ TranslateMessage(&msg); ++ DispatchMessage(&msg); ++ } ++ ++ /* write pipe information in the window */ ++ if ((options & (SHELL_READ|SHELL_WRITE)) ++ # ifdef FEAT_GUI ++ || gui.in_use ++ # endif ++ ) ++ { ++ len = 0; ++ if (!(options & SHELL_EXPAND) ++ && ((options & ++ (SHELL_READ|SHELL_WRITE|SHELL_COOKED)) ++ != (SHELL_READ|SHELL_WRITE|SHELL_COOKED) ++ # ifdef FEAT_GUI ++ || gui.in_use ++ # endif ++ ) ++ && (ta_len > 0 || noread_cnt > 4)) ++ { ++ if (ta_len == 0) ++ { ++ /* Get extra characters when we don't have any. Reset the ++ * counter and timer. */ ++ noread_cnt = 0; ++ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H) ++ gettimeofday(&start_tv, NULL); ++ # endif ++ len = ui_inchar(ta_buf, BUFLEN, 10L, 0); ++ } ++ if (ta_len > 0 || len > 0) ++ { ++ /* ++ * For pipes: Check for CTRL-C: send interrupt signal to ++ * child. Check for CTRL-D: EOF, close pipe to child. ++ */ ++ if (len == 1 && cmd != NULL) ++ { ++ if (ta_buf[ta_len] == Ctrl_C) ++ { ++ /* Learn what exit code is expected, for ++ * now put 9 as SIGKILL */ ++ TerminateProcess(pi.hProcess, 9); ++ } ++ if (ta_buf[ta_len] == Ctrl_D) ++ { ++ CloseHandle(g_hChildStd_IN_Wr); ++ g_hChildStd_IN_Wr = NULL; ++ } ++ } ++ ++ /* replace K_BS by <BS> and K_DEL by <DEL> */ ++ for (i = ta_len; i < ta_len + len; ++i) ++ { ++ if (ta_buf[i] == CSI && len - i > 2) ++ { ++ c = TERMCAP2KEY(ta_buf[i + 1], ta_buf[i + 2]); ++ if (c == K_DEL || c == K_KDEL || c == K_BS) ++ { ++ mch_memmove(ta_buf + i + 1, ta_buf + i + 3, ++ (size_t)(len - i - 2)); ++ if (c == K_DEL || c == K_KDEL) ++ ta_buf[i] = DEL; ++ else ++ ta_buf[i] = Ctrl_H; ++ len -= 2; ++ } ++ } ++ else if (ta_buf[i] == '\r') ++ ta_buf[i] = '\n'; ++ # ifdef FEAT_MBYTE ++ if (has_mbyte) ++ i += (*mb_ptr2len_len)(ta_buf + i, ++ ta_len + len - i) - 1; ++ # endif ++ } ++ ++ /* ++ * For pipes: echo the typed characters. For a pty this ++ * does not seem to work. ++ */ ++ for (i = ta_len; i < ta_len + len; ++i) ++ { ++ if (ta_buf[i] == '\n' || ta_buf[i] == '\b') ++ msg_putchar(ta_buf[i]); ++ # ifdef FEAT_MBYTE ++ else if (has_mbyte) ++ { ++ int l = (*mb_ptr2len)(ta_buf + i); ++ ++ msg_outtrans_len(ta_buf + i, l); ++ i += l - 1; ++ } ++ # endif ++ else ++ msg_outtrans_len(ta_buf + i, 1); ++ } ++ windgoto(msg_row, msg_col); ++ out_flush(); ++ ++ ta_len += len; ++ ++ /* ++ * Write the characters to the child, unless EOF has been ++ * typed for pipes. Write one character at a time, to ++ * avoid losing too much typeahead. When writing buffer ++ * lines, drop the typed characters (only check for ++ * CTRL-C). ++ */ ++ if (options & SHELL_WRITE) ++ ta_len = 0; ++ else if (g_hChildStd_IN_Wr != NULL) ++ { ++ WriteFile(g_hChildStd_IN_Wr, (char*)ta_buf, ++ 1, &len, NULL); ++ // if we are typing in, we want to keep things reactive ++ delay = 1; ++ if (len > 0) ++ { ++ ta_len -= len; ++ mch_memmove(ta_buf, ta_buf + len, ta_len); ++ } ++ } ++ } ++ } ++ } ++ ++ if (ta_len) ++ ui_inchar_undo(ta_buf, ta_len); ++ ++ if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) ++ { ++ dump_pipe(options, g_hChildStd_OUT_Rd, ++ &ga, buffer, &buffer_off); ++ break; ++ } ++ ++ ++noread_cnt; ++ dump_pipe(options, g_hChildStd_OUT_Rd, ++ &ga, buffer, &buffer_off); ++ ++ /* We start waiting for a very short time and then increase it, so ++ * that we respond quickly when the process is quick, and don't ++ * consume too much overhead when it's slow. */ ++ if (delay < 50) ++ delay += 10; ++ } ++ ++ /* Close the pipe */ ++ CloseHandle(g_hChildStd_OUT_Rd); ++ if (g_hChildStd_IN_Wr != NULL) ++ CloseHandle(g_hChildStd_IN_Wr); ++ ++ WaitForSingleObject(pi.hProcess, INFINITE); ++ ++ /* Get the command exit code */ ++ GetExitCodeProcess(pi.hProcess, &ret); ++ ++ if (options & SHELL_READ) ++ { ++ if (ga.ga_len > 0) ++ { ++ append_ga_line(&ga); ++ /* remember that the NL was missing */ ++ curbuf->b_no_eol_lnum = curwin->w_cursor.lnum; ++ } ++ else ++ curbuf->b_no_eol_lnum = 0; ++ ga_clear(&ga); ++ } ++ ++ /* Close the handles to the subprocess, so that it goes away */ ++ CloseHandle(pi.hThread); ++ CloseHandle(pi.hProcess); ++ ++ return ret; ++ } ++ ++ static int ++ mch_system(char *cmd, int options) ++ { ++ /* if we can pipe and the shelltemp option is off */ ++ if (allowPiping && !p_stmp) ++ return mch_system_piped(cmd, options); ++ else ++ return mch_system_classic(cmd, options); ++ } + #else + + # define mch_system(c, o) system(c) +*************** +*** 3388,3394 **** + char_u *newcmd; + long_u cmdlen = ( + #ifdef FEAT_GUI_W32 +! STRLEN(vimrun_path) + + #endif + STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10); + +--- 3897,3903 ---- + char_u *newcmd; + long_u cmdlen = ( + #ifdef FEAT_GUI_W32 +! (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) + + #endif + STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10); + +*************** +*** 3497,3503 **** + MB_ICONWARNING); + need_vimrun_warning = FALSE; + } +! if (!s_dont_use_vimrun) + /* Use vimrun to execute the command. It opens a console + * window, which can be closed without killing Vim. */ + vim_snprintf((char *)newcmd, cmdlen, "%s%s%s %s %s", +--- 4006,4012 ---- + MB_ICONWARNING); + need_vimrun_warning = FALSE; + } +! if (!s_dont_use_vimrun && (!allowPiping || p_stmp)) + /* Use vimrun to execute the command. It opens a console + * window, which can be closed without killing Vim. */ + vim_snprintf((char *)newcmd, cmdlen, "%s%s%s %s %s", +*************** +*** 3521,3527 **** + /* Print the return value, unless "vimrun" was used. */ + if (x != 0 && !(options & SHELL_SILENT) && !emsg_silent + #if defined(FEAT_GUI_W32) +! && ((options & SHELL_DOOUT) || s_dont_use_vimrun) + #endif + ) + { +--- 4030,4037 ---- + /* Print the return value, unless "vimrun" was used. */ + if (x != 0 && !(options & SHELL_SILENT) && !emsg_silent + #if defined(FEAT_GUI_W32) +! && ((options & SHELL_DOOUT) || s_dont_use_vimrun +! || (allowPiping && !p_stmp)) + #endif + ) + { +*** ../vim-7.3.239/src/proto/misc2.pro 2011-07-07 15:08:53.000000000 +0200 +--- src/proto/misc2.pro 2011-07-07 15:56:16.000000000 +0200 +*************** +*** 58,63 **** +--- 58,64 ---- + char_u *ga_concat_strings __ARGS((garray_T *gap)); + void ga_concat __ARGS((garray_T *gap, char_u *s)); + void ga_append __ARGS((garray_T *gap, int c)); ++ void append_ga_line __ARGS((garray_T *gap)); + int name_to_mod_mask __ARGS((int c)); + int simplify_key __ARGS((int key, int *modifiers)); + int handle_x_keys __ARGS((int key)); +*** ../vim-7.3.239/src/ui.c 2011-06-19 01:14:23.000000000 +0200 +--- src/ui.c 2011-07-07 15:44:56.000000000 +0200 +*************** +*** 58,64 **** + #endif + } + +! #if defined(UNIX) || defined(VMS) || defined(PROTO) + /* + * When executing an external program, there may be some typed characters that + * are not consumed by it. Give them back to ui_inchar() and they are stored +--- 58,64 ---- + #endif + } + +! #if defined(UNIX) || defined(VMS) || defined(PROTO) || defined(WIN3264) + /* + * When executing an external program, there may be some typed characters that + * are not consumed by it. Give them back to ui_inchar() and they are stored +*** ../vim-7.3.239/src/version.c 2011-07-07 15:08:53.000000000 +0200 +--- src/version.c 2011-07-07 16:14:20.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 240, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +257. Your "hundred-and-one" lists include well over 101 items, since you + automatically interpret all numbers in hexadecimal notation. + (hex 101 = decimal 257) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.241 b/source/ap/vim/patches/7.3.241 new file mode 100644 index 00000000..3b73c4de --- /dev/null +++ b/source/ap/vim/patches/7.3.241 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.241 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.241 +Problem: Using CTRL-R CTRL-W on the command line may insert only part of + the word. +Solution: Use the cursor position instead of assuming it is at the end of + the command. (Tyru) +Files: src/ex_getln.c + + +*** ../vim-7.3.240/src/ex_getln.c 2011-07-07 15:04:38.000000000 +0200 +--- src/ex_getln.c 2011-07-07 16:38:50.000000000 +0200 +*************** +*** 3046,3052 **** + int len; + + /* Locate start of last word in the cmd buffer. */ +! for (w = ccline.cmdbuff + ccline.cmdlen; w > ccline.cmdbuff; ) + { + #ifdef FEAT_MBYTE + if (has_mbyte) +--- 3046,3052 ---- + int len; + + /* Locate start of last word in the cmd buffer. */ +! for (w = ccline.cmdbuff + ccline.cmdpos; w > ccline.cmdbuff; ) + { + #ifdef FEAT_MBYTE + if (has_mbyte) +*************** +*** 3064,3070 **** + --w; + } + } +! len = (int)((ccline.cmdbuff + ccline.cmdlen) - w); + if (p_ic ? STRNICMP(w, arg, len) == 0 : STRNCMP(w, arg, len) == 0) + p += len; + } +--- 3064,3070 ---- + --w; + } + } +! len = (int)((ccline.cmdbuff + ccline.cmdpos) - w); + if (p_ic ? STRNICMP(w, arg, len) == 0 : STRNCMP(w, arg, len) == 0) + p += len; + } +*** ../vim-7.3.240/src/version.c 2011-07-07 16:20:45.000000000 +0200 +--- src/version.c 2011-07-07 16:41:29.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 241, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +258. When you want to see your girlfriend, you surf to her homepage. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.242 b/source/ap/vim/patches/7.3.242 new file mode 100644 index 00000000..0cf4db92 --- /dev/null +++ b/source/ap/vim/patches/7.3.242 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.242 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.242 +Problem: Illegal memory access in after_pathsep(). +Solution: Check that the pointer is not at the start of the file name. + (Dominique Pelle) +Files: src/misc2.c + + +*** ../vim-7.3.241/src/misc2.c 2011-07-07 16:20:45.000000000 +0200 +--- src/misc2.c 2011-07-07 17:05:41.000000000 +0200 +*************** +*** 3247,3253 **** + #if defined(FEAT_MBYTE) || defined(PROTO) + /* + * Return TRUE if "p" points to just after a path separator. +! * Take care of multi-byte characters. + * "b" must point to the start of the file name + */ + int +--- 3247,3253 ---- + #if defined(FEAT_MBYTE) || defined(PROTO) + /* + * Return TRUE if "p" points to just after a path separator. +! * Takes care of multi-byte characters. + * "b" must point to the start of the file name + */ + int +*************** +*** 3255,3261 **** + char_u *b; + char_u *p; + { +! return vim_ispathsep(p[-1]) + && (!has_mbyte || (*mb_head_off)(b, p - 1) == 0); + } + #endif +--- 3255,3261 ---- + char_u *b; + char_u *p; + { +! return p > b && vim_ispathsep(p[-1]) + && (!has_mbyte || (*mb_head_off)(b, p - 1) == 0); + } + #endif +*** ../vim-7.3.241/src/version.c 2011-07-07 16:44:33.000000000 +0200 +--- src/version.c 2011-07-07 17:05:49.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 242, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +260. Co-workers have to E-mail you about the fire alarm to get + you out of the building. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.243 b/source/ap/vim/patches/7.3.243 new file mode 100644 index 00000000..f1f913d4 --- /dev/null +++ b/source/ap/vim/patches/7.3.243 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.243 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.243 +Problem: Illegal memory access in readline(). +Solution: Swap the conditions. (Dominique Pelle) +Files: src/eval.c + + +*** ../vim-7.3.242/src/eval.c 2011-07-07 16:20:45.000000000 +0200 +--- src/eval.c 2011-07-07 17:32:16.000000000 +0200 +*************** +*** 14318,14324 **** + tolist = 0; + for ( ; filtd < buflen || readlen <= 0; ++filtd) + { +! if (buf[filtd] == '\n' || readlen <= 0) + { + /* In binary mode add an empty list item when the last + * non-empty line ends in a '\n'. */ +--- 14318,14324 ---- + tolist = 0; + for ( ; filtd < buflen || readlen <= 0; ++filtd) + { +! if (readlen <= 0 || buf[filtd] == '\n') + { + /* In binary mode add an empty list item when the last + * non-empty line ends in a '\n'. */ +*** ../vim-7.3.242/src/version.c 2011-07-07 17:15:29.000000000 +0200 +--- src/version.c 2011-07-07 17:32:30.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 243, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +261. You find diskettes in your pockets when doing laundry. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.244 b/source/ap/vim/patches/7.3.244 new file mode 100644 index 00000000..4cff94f2 --- /dev/null +++ b/source/ap/vim/patches/7.3.244 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.244 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.244 +Problem: MS-Windows: Build problem with old compiler. (John Beckett) +Solution: Only use HandleToLong() when available. (Mike Williams) +Files: src/gui_w32.c + + +*** ../vim-7.3.243/src/gui_w32.c 2011-05-25 21:18:02.000000000 +0200 +--- src/gui_w32.c 2011-07-07 17:42:36.000000000 +0200 +*************** +*** 1574,1579 **** +--- 1574,1583 ---- + #endif + + #ifdef FEAT_EVAL ++ # if _MSC_VER < 1400 ++ /* HandleToLong() only exists in compilers that can do 64 bit builds */ ++ # define HandleToLong(h) ((long)(h)) ++ # endif + /* set the v:windowid variable */ + set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd)); + #endif +*** ../vim-7.3.243/src/version.c 2011-07-07 17:36:52.000000000 +0200 +--- src/version.c 2011-07-07 17:43:21.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 244, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +262. Your computer has it's own phone line - but your daughter doesn'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 /// diff --git a/source/ap/vim/patches/7.3.245 b/source/ap/vim/patches/7.3.245 new file mode 100644 index 00000000..b05fe433 --- /dev/null +++ b/source/ap/vim/patches/7.3.245 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.245 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.245 +Problem: Python 3.2 libraries not correctly detected. +Solution: Add the suffix to the library name. (Niclas Zeising) +Files: src/auto/configure, src/configure.in + + +*** ../vim-7.3.244/src/auto/configure 2011-06-13 01:32:42.000000000 +0200 +--- src/auto/configure 2011-07-13 17:57:05.000000000 +0200 +*************** +*** 5611,5617 **** + eof + eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" + rm -f -- "${tmp_mkf}" +! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" + vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` +--- 5611,5617 ---- + eof + eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" + rm -f -- "${tmp_mkf}" +! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" + vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` +*** ../vim-7.3.244/src/configure.in 2011-06-13 01:32:42.000000000 +0200 +--- src/configure.in 2011-07-13 17:57:01.000000000 +0200 +*************** +*** 1068,1074 **** + dnl -- delete the lines from make about Entering/Leaving directory + eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" + rm -f -- "${tmp_mkf}" +! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" + vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" + dnl remove -ltermcap, it can conflict with an earlier -lncurses + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` +--- 1068,1074 ---- + dnl -- delete the lines from make about Entering/Leaving directory + eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" + rm -f -- "${tmp_mkf}" +! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" + vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" + dnl remove -ltermcap, it can conflict with an earlier -lncurses + vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` +*** ../vim-7.3.244/src/version.c 2011-07-07 17:43:37.000000000 +0200 +--- src/version.c 2011-07-15 13:09:17.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 245, + /**/ + + +-- + When danger reared its ugly head, + He bravely turned his tail and fled + Yes, Brave Sir Robin turned about + And gallantly he chickened out + Bravely taking to his feet + He beat a very brave retreat + Bravest of the brave Sir Robin + Petrified of being dead + Soiled his pants then brave Sir Robin + Turned away and fled. + "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 /// diff --git a/source/ap/vim/patches/7.3.246 b/source/ap/vim/patches/7.3.246 new file mode 100644 index 00000000..d9982ea0 --- /dev/null +++ b/source/ap/vim/patches/7.3.246 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.246 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.246 (after 7.3.235) +Problem: Repeating "f4" in "4444" skips one 4. +Solution: Check the t_cmd flag. (Christian Brabandt) +Files: src/search.c + + +*** ../vim-7.3.245/src/search.c 2011-06-26 05:36:07.000000000 +0200 +--- src/search.c 2011-07-15 13:16:49.000000000 +0200 +*************** +*** 1585,1591 **** + /* Force a move of at least one char, so ";" and "," will move the + * cursor, even if the cursor is right in front of char we are looking + * at. */ +! if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1) + stop = FALSE; + } + +--- 1585,1591 ---- + /* Force a move of at least one char, so ";" and "," will move the + * cursor, even if the cursor is right in front of char we are looking + * at. */ +! if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1 && t_cmd) + stop = FALSE; + } + +*** ../vim-7.3.245/src/version.c 2011-07-15 13:09:46.000000000 +0200 +--- src/version.c 2011-07-15 13:20:40.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 246, + /**/ + +-- + GALAHAD turns back. We see from his POV the lovely ZOOT standing by him + smiling enchantingly and a number of equally delectable GIRLIES draped + around in the seductively poulticed room. They look at him smilingly and + wave. + "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 /// diff --git a/source/ap/vim/patches/7.3.247 b/source/ap/vim/patches/7.3.247 new file mode 100644 index 00000000..a0cb566c --- /dev/null +++ b/source/ap/vim/patches/7.3.247 @@ -0,0 +1,95 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.247 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.247 +Problem: Running tests changes the users viminfo file. Test for patch + 7.3.246 missing. +Solution: Add "nviminfo" to the 'viminfo' option. Include the test. +Files: src/testdir/test78.in, src/testdir/test81.in + + +*** ../vim-7.3.246/src/testdir/test78.in 2011-06-13 01:07:22.000000000 +0200 +--- src/testdir/test78.in 2011-07-15 13:26:22.000000000 +0200 +*************** +*** 6,12 **** + + STARTTEST + :so small.vim +! :set nocp fileformat=unix undolevels=-1 + :e! Xtest + ggdG + :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789" +--- 6,12 ---- + + STARTTEST + :so small.vim +! :set nocp fileformat=unix undolevels=-1 viminfo+=nviminfo + :e! Xtest + ggdG + :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789" +*** ../vim-7.3.246/src/testdir/test81.in 2011-06-26 05:36:07.000000000 +0200 +--- src/testdir/test81.in 2011-07-15 13:25:00.000000000 +0200 +*************** +*** 1,10 **** + Test for t movement command and 'cpo-;' setting + + STARTTEST +! :set nocompatible + :set cpo-=; + /firstline/ + j0tt;D + $Ty;D:set cpo+=; + j0tt;;D + $Ty;;D:?firstline?+1,$w! test.out +--- 1,12 ---- + Test for t movement command and 'cpo-;' setting + + STARTTEST +! :set nocompatible viminfo+=nviminfo + :set cpo-=; + /firstline/ + j0tt;D ++ 0fz;D ++ $Fy;D + $Ty;D:set cpo+=; + j0tt;;D + $Ty;;D:?firstline?+1,$w! test.out +*************** +*** 13,18 **** +--- 15,22 ---- + + firstline + aaa two three four ++ zzz ++ yyy + bbb yee yoo four + ccc two three four + ddd yee yoo four +*** ../vim-7.3.246/src/version.c 2011-07-15 13:21:24.000000000 +0200 +--- src/version.c 2011-07-15 13:31:14.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 247, + /**/ + +-- +ZOOT: I'm afraid our life must seem very dull and quiet compared to yours. + We are but eightscore young blondes, all between sixteen and + nineteen-and-a-half, cut off in this castle, with no one to protect us. + Oooh. It is a lonely life ... bathing ... dressing ... undressing ... + making exciting underwear.... + "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 /// diff --git a/source/ap/vim/patches/7.3.248 b/source/ap/vim/patches/7.3.248 new file mode 100644 index 00000000..6fbf3f6c --- /dev/null +++ b/source/ap/vim/patches/7.3.248 @@ -0,0 +1,129 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.248 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.248 +Problem: PC Install instructions missing install instructions. +Solution: Step-by-step explanation. (Michael Soyka) +Files: src/INSTALLpc.txt + + +*** ../vim-7.3.247/src/INSTALLpc.txt 2011-06-12 20:36:00.000000000 +0200 +--- src/INSTALLpc.txt 2011-07-15 13:49:46.000000000 +0200 +*************** +*** 11,19 **** + this, then you will get the default behavior as is documented, which should + be fine for most people. + +! With the exception of the last two sections (Windows 3.1 and MS-DOS), +! this document assumes that you are building Vim for Win32 +! (Windows NT/2000/XP/2003/Vista and Windows 95/98/Me) + + + Contents: +--- 11,19 ---- + this, then you will get the default behavior as is documented, which should + be fine for most people. + +! With the exception of two sections (Windows 3.1 and MS-DOS), this document +! assumes that you are building Vim for Win32 or later. +! (Windows 95/98/Me/NT/2000/XP/2003/Vista/7) + + + Contents: +*************** +*** 27,32 **** +--- 27,35 ---- + 8. Windows 3.1 + 9. MS-DOS + ++ 10. Installing after building from sources ++ ++ + The currently preferred method is using the free Visual C++ Toolkit 2008 + |msvc-2008-express|, the produced binary runs on most MS-Windows systems. If + you need the executable to run on Windows 98 or ME, use the 2003 one +*************** +*** 409,411 **** +--- 412,470 ---- + + If you get all kinds of strange error messages when compiling, try adding + changing the file format from "unix" to "dos". ++ ++ ++ 10. Installing after building from sources ++ ========================================== ++ ++ [provided by Michael Soyka] ++ ++ After you've built the Vim binaries as described above, you're ready to ++ install Vim on your system. However, if you've obtained the Vim sources ++ using Mercurial or by downloading them as a unix tar file, you must first ++ create a "vim73" directory. If you instead downloaded the sources as ++ zip files, you can skip this setup as the zip archives already have the ++ correct directory structure. ++ ++ A. Create a Vim "runtime" subdirectory named "vim73" ++ ----------------------------------------------------- ++ If you obtained your Vim sources as zip files, you can skip this step. ++ Otherwise, continue reading. ++ ++ Go to the directory that contains the Vim "src" and "runtime" ++ directories and create a new subdirectory named "vim73". ++ ++ Copy the "runtime" files into "vim73": ++ copy runtime\* vim73 ++ ++ B. Copy the new binaries into the "vim73" directory ++ ---------------------------------------------------- ++ Regardless of how you installed the Vim sources, you need to copy the ++ new binaries you created above into "vim73": ++ ++ copy src\*.exe vim73 ++ copy src\GvimExt\gvimext.dll vim73 ++ copy src\xxd\xxd.exe vim73 ++ ++ C. Move the "vim73" directory into the Vim installation subdirectory ++ --------------------------------------------------------------------- ++ Move the "vim73" subdirectory into the subdirectory where you want Vim ++ to be installed. Typically, this subdirectory will be named "vim". ++ If you already have a "vim73" subdirectory in "vim", delete it first ++ by running its unstal.exe program. ++ ++ D. Install Vim ++ --------------- ++ "cd" to your Vim installation subdirectory "vim\vim73" and run the ++ "install.exe" program. It will ask you a number of questions about ++ how you would like to have your Vim setup. Among these are: ++ - You can tell it to write a "_vimrc" file with your preferences in the ++ parent directory. ++ - It can also install an "Edit with Vim" entry in the Windows Explorer ++ popup menu. ++ - You can have it create batch files, so that you can run Vim from the ++ console or in a shell. You can select one of the directories in your ++ PATH or add the directory to PATH using the Windows Control Panel. ++ - Create entries for Vim on the desktop and in the Start menu. ++ ++ Happy Vimming! +*** ../vim-7.3.247/src/version.c 2011-07-15 13:33:17.000000000 +0200 +--- src/version.c 2011-07-15 13:51:03.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 248, + /**/ + +-- +Linux is just like a wigwam: no Windows, no Gates and an Apache inside. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.249 b/source/ap/vim/patches/7.3.249 new file mode 100644 index 00000000..661f9797 --- /dev/null +++ b/source/ap/vim/patches/7.3.249 @@ -0,0 +1,134 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.249 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.249 +Problem: Wrong indenting for array initializer. +Solution: Detect '}' in a better way. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.248/src/misc1.c 2011-06-12 21:51:01.000000000 +0200 +--- src/misc1.c 2011-07-15 14:06:44.000000000 +0200 +*************** +*** 7945,7952 **** + * If we're at the end of a block, skip to the start of + * that block. + */ +! curwin->w_cursor.col = 0; +! if (*cin_skipcomment(l) == '}' + && (trypos = find_start_brace(ind_maxcomment)) + != NULL) /* XXX */ + { +--- 7945,7951 ---- + * If we're at the end of a block, skip to the start of + * that block. + */ +! if (find_last_paren(l, '{', '}') + && (trypos = find_start_brace(ind_maxcomment)) + != NULL) /* XXX */ + { +*** ../vim-7.3.248/src/testdir/test3.in 2011-06-12 21:51:01.000000000 +0200 +--- src/testdir/test3.in 2011-07-15 14:03:41.000000000 +0200 +*************** +*** 1452,1457 **** +--- 1452,1487 ---- + + STARTTEST + :set cino& ++ :set cino+=l1 ++ 2kdd=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ int tab[] = ++ { ++ 1, 2, 3, ++ 4, 5, 6}; ++ ++ printf("Indent this line correctly!\n"); ++ ++ switch (foo) ++ { ++ case bar: ++ printf("bar"); ++ break; ++ case baz: { ++ printf("baz"); ++ break; ++ } ++ case quux: ++ printf("But don't break the indentation of this instruction\n"); ++ break; ++ } ++ } ++ ++ STARTTEST ++ :set cino& + 2kdd=][ + ENDTEST + +*** ../vim-7.3.248/src/testdir/test3.ok 2011-06-12 21:51:01.000000000 +0200 +--- src/testdir/test3.ok 2011-07-15 14:03:41.000000000 +0200 +*************** +*** 1310,1315 **** +--- 1310,1340 ---- + + void func(void) + { ++ int tab[] = ++ { ++ 1, 2, 3, ++ 4, 5, 6}; ++ ++ printf("Indent this line correctly!\n"); ++ ++ switch (foo) ++ { ++ case bar: ++ printf("bar"); ++ break; ++ case baz: { ++ printf("baz"); ++ break; ++ } ++ case quux: ++ printf("But don't break the indentation of this instruction\n"); ++ break; ++ } ++ } ++ ++ ++ void func(void) ++ { + cout << "a" + << "b" + << ") :" +*** ../vim-7.3.248/src/version.c 2011-07-15 13:51:57.000000000 +0200 +--- src/version.c 2011-07-15 14:12:05.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 249, + /**/ + +-- + GALAHAD hurries to the door and pushes through it. As he leaves the room + we CUT TO the reverse to show that he is now in a room full of bathing + and romping GIRLIES, all innocent, wide-eyed and beautiful. They smile + enchantingly at him as he tries to keep walking without being diverted by + the lovely sights assaulting his eyeballs. + "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 /// diff --git a/source/ap/vim/patches/7.3.250 b/source/ap/vim/patches/7.3.250 new file mode 100644 index 00000000..fc33328b --- /dev/null +++ b/source/ap/vim/patches/7.3.250 @@ -0,0 +1,104 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.250 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.250 +Problem: Python: Errors in Unicode characters not handled nicely. +Solution: Add the surrogateescape error handler. (lilydjwg) +Files: src/if_python3.c + + +*** ../vim-7.3.249/src/if_python3.c 2011-06-26 19:13:33.000000000 +0200 +--- src/if_python3.c 2011-07-15 15:50:01.000000000 +0200 +*************** +*** 68,76 **** + + static void init_structs(void); + + #define PyInt Py_ssize_t + #define PyString_Check(obj) PyUnicode_Check(obj) +! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL); + #define PyString_FreeBytes(obj) Py_XDECREF(bytes) + #define PyString_AsString(obj) PyBytes_AsString(obj) + #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) +--- 68,83 ---- + + static void init_structs(void); + ++ /* The "surrogateescape" error handler is new in Python 3.1 */ ++ #if PY_VERSION_HEX >= 0x030100f0 ++ # define CODEC_ERROR_HANDLER "surrogateescape" ++ #else ++ # define CODEC_ERROR_HANDLER NULL ++ #endif ++ + #define PyInt Py_ssize_t + #define PyString_Check(obj) PyUnicode_Check(obj) +! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER); + #define PyString_FreeBytes(obj) Py_XDECREF(bytes) + #define PyString_AsString(obj) PyBytes_AsString(obj) + #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) +*************** +*** 661,668 **** + + /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause + * SyntaxError (unicode error). */ +! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)ENC_OPT, NULL); +! cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL); + Py_XDECREF(cmdstr); + PyRun_SimpleString(PyBytes_AsString(cmdbytes)); + Py_XDECREF(cmdbytes); +--- 668,676 ---- + + /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause + * SyntaxError (unicode error). */ +! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), +! (char *)ENC_OPT, CODEC_ERROR_HANDLER); +! cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", CODEC_ERROR_HANDLER); + Py_XDECREF(cmdstr); + PyRun_SimpleString(PyBytes_AsString(cmdbytes)); + Py_XDECREF(cmdbytes); +*************** +*** 1463,1469 **** + } + *p = '\0'; + +! result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, NULL); + + vim_free(tmp); + return result; +--- 1471,1477 ---- + } + *p = '\0'; + +! result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, CODEC_ERROR_HANDLER); + + vim_free(tmp); + return result; +*** ../vim-7.3.249/src/version.c 2011-07-15 14:12:25.000000000 +0200 +--- src/version.c 2011-07-15 15:46:19.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 250, + /**/ + +-- +DINGO: You must spank her well and after you have spanked her you + may deal with her as you like and then ... spank me. +AMAZING: And spank me! +STUNNER: And me. +LOVELY: And me. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.251 b/source/ap/vim/patches/7.3.251 new file mode 100644 index 00000000..43aa4148 --- /dev/null +++ b/source/ap/vim/patches/7.3.251 @@ -0,0 +1,184 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.251 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.251 +Problem: "gH<Del>" deletes the current line, except when it's the last + line. +Solution: Set the "include" flag to indicate the last line is to be deleted. +Files: src/normal.c, src/ops.c + + +*** ../vim-7.3.250/src/normal.c 2011-07-07 15:08:53.000000000 +0200 +--- src/normal.c 2011-07-15 16:53:12.000000000 +0200 +*************** +*** 1795,1811 **** + { + oap->inclusive = FALSE; + /* Try to include the newline, unless it's an operator +! * that works on lines only */ +! if (*p_sel != 'o' +! && !op_on_lines(oap->op_type) +! && oap->end.lnum < curbuf->b_ml.ml_line_count) + { +! ++oap->end.lnum; +! oap->end.col = 0; + # ifdef FEAT_VIRTUALEDIT +! oap->end.coladd = 0; + # endif +! ++oap->line_count; + } + } + } +--- 1795,1819 ---- + { + oap->inclusive = FALSE; + /* Try to include the newline, unless it's an operator +! * that works on lines only. */ +! if (*p_sel != 'o' && !op_on_lines(oap->op_type)) + { +! if (oap->end.lnum < curbuf->b_ml.ml_line_count) +! { +! ++oap->end.lnum; +! oap->end.col = 0; + # ifdef FEAT_VIRTUALEDIT +! oap->end.coladd = 0; + # endif +! ++oap->line_count; +! } +! else +! { +! /* Cannot move below the last line, make the op +! * inclusive to tell the operation to include the +! * line break. */ +! oap->inclusive = TRUE; +! } + } + } + } +*** ../vim-7.3.250/src/ops.c 2011-06-19 01:14:22.000000000 +0200 +--- src/ops.c 2011-07-15 17:28:28.000000000 +0200 +*************** +*** 1650,1656 **** + && oap->line_count > 1 + && oap->op_type == OP_DELETE) + { +! ptr = ml_get(oap->end.lnum) + oap->end.col + oap->inclusive; + ptr = skipwhite(ptr); + if (*ptr == NUL && inindent(0)) + oap->motion_type = MLINE; +--- 1650,1658 ---- + && oap->line_count > 1 + && oap->op_type == OP_DELETE) + { +! ptr = ml_get(oap->end.lnum) + oap->end.col; +! if (*ptr != NUL) +! ptr += oap->inclusive; + ptr = skipwhite(ptr); + if (*ptr == NUL && inindent(0)) + oap->motion_type = MLINE; +*************** +*** 1920,1930 **** + curwin->w_cursor.coladd = 0; + } + #endif +! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE + #ifdef FEAT_VISUAL + && !oap->is_VIsual + #endif + ); + } + else /* delete characters between lines */ + { +--- 1922,1941 ---- + curwin->w_cursor.coladd = 0; + } + #endif +! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count +! && n > (int)STRLEN(ml_get(oap->end.lnum))) +! { +! /* Special case: gH<Del> deletes the last line. */ +! del_lines(1L, FALSE); +! } +! else +! { +! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE + #ifdef FEAT_VISUAL + && !oap->is_VIsual + #endif + ); ++ } + } + else /* delete characters between lines */ + { +*************** +*** 1941,1957 **** + ++curwin->w_cursor.lnum; + del_lines((long)(oap->line_count - 2), FALSE); + +! /* delete from start of line until op_end */ +! curwin->w_cursor.col = 0; +! (void)del_bytes((long)(oap->end.col + 1 - !oap->inclusive), +! !virtual_op, oap->op_type == OP_DELETE + #ifdef FEAT_VISUAL + && !oap->is_VIsual + #endif + ); +! curwin->w_cursor = curpos; /* restore curwin->w_cursor */ +! +! (void)do_join(2, FALSE, FALSE); + } + } + +--- 1952,1980 ---- + ++curwin->w_cursor.lnum; + del_lines((long)(oap->line_count - 2), FALSE); + +! n = (oap->end.col + 1 - !oap->inclusive); +! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count +! && n > (int)STRLEN(ml_get(oap->end.lnum))) +! { +! /* Special case: gH<Del> deletes the last line. */ +! del_lines(1L, FALSE); +! curwin->w_cursor = curpos; /* restore curwin->w_cursor */ +! if (curwin->w_cursor.lnum > 1) +! --curwin->w_cursor.lnum; +! } +! else +! { +! /* delete from start of line until op_end */ +! curwin->w_cursor.col = 0; +! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE + #ifdef FEAT_VISUAL + && !oap->is_VIsual + #endif + ); +! curwin->w_cursor = curpos; /* restore curwin->w_cursor */ +! } +! if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +! (void)do_join(2, FALSE, FALSE); + } + } + +*** ../vim-7.3.250/src/version.c 2011-07-15 15:54:39.000000000 +0200 +--- src/version.c 2011-07-15 17:35:18.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 251, + /**/ + +-- + ### Hiroshima 45, Chernobyl 86, Windows 95 ### + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.252 b/source/ap/vim/patches/7.3.252 new file mode 100644 index 00000000..e24b73be --- /dev/null +++ b/source/ap/vim/patches/7.3.252 @@ -0,0 +1,43 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.252 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.252 (after 7.3.247) +Problem: Tests fail. (David Northfield) +Solution: Add missing update for .ok file. +Files: src/testdir/test81.ok + + +*** ../vim-7.3.251/src/testdir/test81.ok 2011-06-26 05:36:07.000000000 +0200 +--- src/testdir/test81.ok 2011-07-15 13:14:27.000000000 +0200 +*************** +*** 1,4 **** +--- 1,6 ---- + aaa two ++ z ++ y + bbb y + ccc + ddd yee y +*** ../vim-7.3.251/src/version.c 2011-07-15 17:51:30.000000000 +0200 +--- src/version.c 2011-07-15 17:55:25.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 252, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.253 b/source/ap/vim/patches/7.3.253 new file mode 100644 index 00000000..70e415b5 --- /dev/null +++ b/source/ap/vim/patches/7.3.253 @@ -0,0 +1,539 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.253 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.253 +Problem: "echo 'abc' > ''" returns 0 or 1, depending on 'ignorecase'. + Checks in mb_strnicmp() for illegal and truncated bytes are + wrong. Should not assume that byte length is equal before case + folding. +Solution: Add utf_safe_read_char_adv() and utf_strnicmp(). Add a test for + this. (Ivan Krasilnikov) +Files: src/mbyte.c src/testdir/test82.in, src/testdir/test82.ok, + src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + + +*** ../vim-7.3.252/src/mbyte.c 2011-07-07 15:08:53.000000000 +0200 +--- src/mbyte.c 2011-07-15 20:13:52.000000000 +0200 +*************** +*** 132,137 **** +--- 132,138 ---- + static int dbcs_char2cells __ARGS((int c)); + static int dbcs_ptr2cells_len __ARGS((char_u *p, int size)); + static int dbcs_ptr2char __ARGS((char_u *p)); ++ static int utf_safe_read_char_adv __ARGS((char_u **s, size_t *n)); + + /* + * Lookup table to quickly get the length in bytes of a UTF-8 character from +*************** +*** 1701,1706 **** +--- 1702,1767 ---- + } + + /* ++ * Convert a UTF-8 byte sequence to a wide character. ++ * String is assumed to be terminated by NUL or after "n" bytes, whichever ++ * comes first. ++ * The function is safe in the sense that it never accesses memory beyond the ++ * first "n" bytes of "s". ++ * ++ * On success, returns decoded codepoint, advances "s" to the beginning of ++ * next character and decreases "n" accordingly. ++ * ++ * If end of string was reached, returns 0 and, if "n" > 0, advances "s" past ++ * NUL byte. ++ * ++ * If byte sequence is illegal or incomplete, returns -1 and does not advance ++ * "s". ++ */ ++ static int ++ utf_safe_read_char_adv(s, n) ++ char_u **s; ++ size_t *n; ++ { ++ int c, k; ++ ++ if (*n == 0) /* end of buffer */ ++ return 0; ++ ++ k = utf8len_tab_zero[**s]; ++ ++ if (k == 1) ++ { ++ /* ASCII character or NUL */ ++ (*n)--; ++ return *(*s)++; ++ } ++ ++ if ((size_t)k <= *n) ++ { ++ /* We have a multibyte sequence and it isn't truncated by buffer ++ * limits so utf_ptr2char() is safe to use. Or the first byte is ++ * illegal (k=0), and it's also safe to use utf_ptr2char(). */ ++ c = utf_ptr2char(*s); ++ ++ /* On failure, utf_ptr2char() returns the first byte, so here we ++ * check equality with the first byte. The only non-ASCII character ++ * which equals the first byte of its own UTF-8 representation is ++ * U+00C3 (UTF-8: 0xC3 0x83), so need to check that special case too. ++ * It's safe even if n=1, else we would have k=2 > n. */ ++ if (c != (int)(**s) || (c == 0xC3 && (*s)[1] == 0x83)) ++ { ++ /* byte sequence was successfully decoded */ ++ *s += k; ++ *n -= k; ++ return c; ++ } ++ } ++ ++ /* byte sequence is incomplete or illegal */ ++ return -1; ++ } ++ ++ /* + * Get character at **pp and advance *pp to the next character. + * Note: composing characters are skipped! + */ +*************** +*** 2667,2673 **** + {0x10400,0x10427,1,40} + }; + +! static int utf_convert(int a, convertStruct table[], int tableSize); + + /* + * Generic conversion function for case operations. +--- 2728,2735 ---- + {0x10400,0x10427,1,40} + }; + +! static int utf_convert __ARGS((int a, convertStruct table[], int tableSize)); +! static int utf_strnicmp __ARGS((char_u *s1, char_u *s2, size_t n1, size_t n2)); + + /* + * Generic conversion function for case operations. +*************** +*** 3079,3084 **** +--- 3141,3220 ---- + return (utf_tolower(a) != a); + } + ++ static int ++ utf_strnicmp(s1, s2, n1, n2) ++ char_u *s1, *s2; ++ size_t n1, n2; ++ { ++ int c1, c2, cdiff; ++ char_u buffer[6]; ++ ++ for (;;) ++ { ++ c1 = utf_safe_read_char_adv(&s1, &n1); ++ c2 = utf_safe_read_char_adv(&s2, &n2); ++ ++ if (c1 <= 0 || c2 <= 0) ++ break; ++ ++ if (c1 == c2) ++ continue; ++ ++ cdiff = utf_fold(c1) - utf_fold(c2); ++ if (cdiff != 0) ++ return cdiff; ++ } ++ ++ /* some string ended or has an incomplete/illegal character sequence */ ++ ++ if (c1 == 0 || c2 == 0) ++ { ++ /* some string ended. shorter string is smaller */ ++ if (c1 == 0 && c2 == 0) ++ return 0; ++ return c1 == 0 ? -1 : 1; ++ } ++ ++ /* Continue with bytewise comparison to produce some result that ++ * would make comparison operations involving this function transitive. ++ * ++ * If only one string had an error, comparison should be made with ++ * folded version of the other string. In this case it is enough ++ * to fold just one character to determine the result of comparison. */ ++ ++ if (c1 != -1 && c2 == -1) ++ { ++ n1 = utf_char2bytes(utf_fold(c1), buffer); ++ s1 = buffer; ++ } ++ else if (c2 != -1 && c1 == -1) ++ { ++ n2 = utf_char2bytes(utf_fold(c2), buffer); ++ s2 = buffer; ++ } ++ ++ while (n1 > 0 && n2 > 0 && *s1 != NUL && *s2 != NUL) ++ { ++ cdiff = (int)(*s1) - (int)(*s2); ++ if (cdiff != 0) ++ return cdiff; ++ ++ s1++; ++ s2++; ++ n1--; ++ n2--; ++ } ++ ++ if (n1 > 0 && *s1 == NUL) ++ n1 = 0; ++ if (n2 > 0 && *s2 == NUL) ++ n2 = 0; ++ ++ if (n1 == 0 && n2 == 0) ++ return 0; ++ return n1 == 0 ? -1 : 1; ++ } ++ + /* + * Version of strnicmp() that handles multi-byte characters. + * Needed for Big5, Sjift-JIS and UTF-8 encoding. Other DBCS encodings can +*************** +*** 3092,3140 **** + char_u *s1, *s2; + size_t nn; + { +! int i, j, l; + int cdiff; +- int incomplete = FALSE; + int n = (int)nn; + +! for (i = 0; i < n; i += l) + { +! if (s1[i] == NUL && s2[i] == NUL) /* both strings end */ +! return 0; +! if (enc_utf8) +! { +! l = utf_byte2len(s1[i]); +! if (l > n - i) +! { +! l = n - i; /* incomplete character */ +! incomplete = TRUE; +! } +! /* Check directly first, it's faster. */ +! for (j = 0; j < l; ++j) +! { +! if (s1[i + j] != s2[i + j]) +! break; +! if (s1[i + j] == 0) +! /* Both stings have the same bytes but are incomplete or +! * have illegal bytes, accept them as equal. */ +! l = j; +! } +! if (j < l) +! { +! /* If one of the two characters is incomplete return -1. */ +! if (incomplete || i + utf_byte2len(s2[i]) > n) +! return -1; +! /* Don't case-fold illegal bytes or truncated characters. */ +! if (utf_ptr2len(s1 + i) < l || utf_ptr2len(s2 + i) < l) +! return -1; +! cdiff = utf_fold(utf_ptr2char(s1 + i)) +! - utf_fold(utf_ptr2char(s2 + i)); +! if (cdiff != 0) +! return cdiff; +! } +! } +! else + { + l = (*mb_ptr2len)(s1 + i); + if (l <= 1) + { +--- 3228,3248 ---- + char_u *s1, *s2; + size_t nn; + { +! int i, l; + int cdiff; + int n = (int)nn; + +! if (enc_utf8) + { +! return utf_strnicmp(s1, s2, nn, nn); +! } +! else +! { +! for (i = 0; i < n; i += l) + { ++ if (s1[i] == NUL && s2[i] == NUL) /* both strings end */ ++ return 0; ++ + l = (*mb_ptr2len)(s1 + i); + if (l <= 1) + { +*** ../vim-7.3.252/src/testdir/test82.in 2011-07-15 21:16:03.000000000 +0200 +--- src/testdir/test82.in 2011-07-15 18:22:46.000000000 +0200 +*************** +*** 0 **** +--- 1,93 ---- ++ Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c) ++ ++ STARTTEST ++ :so small.vim ++ :if !has("multi_byte") ++ : e! test.ok ++ : w! test.out ++ : qa! ++ :endif ++ :set enc=utf8 ++ ggdG ++ : ++ :function! Ch(a, op, b, expected) ++ : if eval(printf('"%s" %s "%s"', a:a, a:op, a:b)) != a:expected ++ : call append(line('$'), printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected)) ++ : else ++ : let b:passed += 1 ++ : endif ++ :endfunction ++ : ++ :function! Chk(a, b, result) ++ : if a:result == 0 ++ : call Ch(a:a, '==?', a:b, 1) ++ : call Ch(a:a, '!=?', a:b, 0) ++ : call Ch(a:a, '<=?', a:b, 1) ++ : call Ch(a:a, '>=?', a:b, 1) ++ : call Ch(a:a, '<?', a:b, 0) ++ : call Ch(a:a, '>?', a:b, 0) ++ : elseif a:result > 0 ++ : call Ch(a:a, '==?', a:b, 0) ++ : call Ch(a:a, '!=?', a:b, 1) ++ : call Ch(a:a, '<=?', a:b, 0) ++ : call Ch(a:a, '>=?', a:b, 1) ++ : call Ch(a:a, '<?', a:b, 0) ++ : call Ch(a:a, '>?', a:b, 1) ++ : else ++ : call Ch(a:a, '==?', a:b, 0) ++ : call Ch(a:a, '!=?', a:b, 1) ++ : call Ch(a:a, '<=?', a:b, 1) ++ : call Ch(a:a, '>=?', a:b, 0) ++ : call Ch(a:a, '<?', a:b, 1) ++ : call Ch(a:a, '>?', a:b, 0) ++ : endif ++ :endfunction ++ : ++ :function! Check(a, b, result) ++ : call Chk(a:a, a:b, a:result) ++ : call Chk(a:b, a:a, -a:result) ++ :endfunction ++ : ++ :function! LT(a, b) ++ : call Check(a:a, a:b, -1) ++ :endfunction ++ : ++ :function! GT(a, b) ++ : call Check(a:a, a:b, 1) ++ :endfunction ++ : ++ :function! EQ(a, b) ++ : call Check(a:a, a:b, 0) ++ :endfunction ++ : ++ :let b:passed=0 ++ :call EQ('', '') ++ :call LT('', 'a') ++ :call EQ('abc', 'abc') ++ :call EQ('Abc', 'abC') ++ :call LT('ab', 'abc') ++ :call LT('AB', 'abc') ++ :call LT('ab', 'aBc') ++ :call EQ('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xb9\xd0\xa6\xd0\xa3\xd0\xba\xd0\x95\xd0\xbd') ++ :call LT('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xaf\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd') ++ :call EQ('\xe2\x84\xaa', 'k') ++ :call LT('\xe2\x84\xaa', 'kkkkkk') ++ :call EQ('\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa', 'kkk') ++ :call LT('kk', '\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa') ++ :call EQ('\xe2\x84\xaa\xe2\x84\xa6k\xe2\x84\xaak\xcf\x89', 'k\xcf\x89\xe2\x84\xaakk\xe2\x84\xa6') ++ :call EQ('Abc\x80', 'AbC\x80') ++ :call LT('Abc\x80', 'AbC\x81') ++ :call LT('Abc', 'AbC\x80') ++ :call LT('abc\x80DEF', 'abc\x80def') " case folding stops at the first bad character ++ :call LT('\xc3XYZ', '\xc3xyz') ++ :call EQ('\xef\xbc\xba', '\xef\xbd\x9a') " FF3A (upper), FF5A (lower) ++ :call GT('\xef\xbc\xba', '\xef\xbc\xff') " first string is ok and equals \xef\xbd\x9a after folding, second string is illegal and was left unchanged, then the strings were bytewise compared ++ :call LT('\xc3', '\xc3\x83') ++ :call EQ('\xc3\xa3xYz', '\xc3\x83XyZ') ++ :for n in range(0x60, 0xFF) | call LT(printf('xYz\x%.2X', n-1), printf('XyZ\x%.2X', n)) | endfor ++ :for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor ++ :for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor ++ :call append(0, printf('%d checks passed', b:passed)) ++ :wq! test.out ++ ENDTEST ++ +*** ../vim-7.3.252/src/testdir/test82.ok 2011-07-15 21:16:03.000000000 +0200 +--- src/testdir/test82.ok 2011-07-15 18:37:33.000000000 +0200 +*************** +*** 0 **** +--- 1,2 ---- ++ 3732 checks passed ++ +*** ../vim-7.3.252/src/testdir/Makefile 2011-06-26 05:36:07.000000000 +0200 +--- src/testdir/Makefile 2011-07-15 18:30:08.000000000 +0200 +*************** +*** 26,32 **** + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out + + SCRIPTS_GUI = test16.out + +--- 26,32 ---- + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.252/src/testdir/Make_amiga.mak 2011-06-26 05:36:07.000000000 +0200 +--- src/testdir/Make_amiga.mak 2011-07-15 18:29:50.000000000 +0200 +*************** +*** 29,35 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out + + .SUFFIXES: .in .out + +--- 29,35 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out + + .SUFFIXES: .in .out + +*************** +*** 130,132 **** +--- 130,133 ---- + test79.out: test79.in + test80.out: test80.in + test81.out: test81.in ++ test82.out: test82.in +*** ../vim-7.3.252/src/testdir/Make_dos.mak 2011-06-26 05:36:07.000000000 +0200 +--- src/testdir/Make_dos.mak 2011-07-15 18:30:02.000000000 +0200 +*************** +*** 29,35 **** + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out + + SCRIPTS32 = test50.out test70.out + +--- 29,35 ---- + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.252/src/testdir/Make_ming.mak 2011-06-26 05:36:07.000000000 +0200 +--- src/testdir/Make_ming.mak 2011-07-15 18:30:15.000000000 +0200 +*************** +*** 49,55 **** + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out + + SCRIPTS32 = test50.out test70.out + +--- 49,55 ---- + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.252/src/testdir/Make_os2.mak 2011-06-26 05:36:07.000000000 +0200 +--- src/testdir/Make_os2.mak 2011-07-15 18:30:25.000000000 +0200 +*************** +*** 29,35 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out + + .SUFFIXES: .in .out + +--- 29,35 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out + + .SUFFIXES: .in .out + +*** ../vim-7.3.252/src/testdir/Make_vms.mms 2011-06-26 05:36:07.000000000 +0200 +--- src/testdir/Make_vms.mms 2011-07-15 18:30:33.000000000 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2011 Jun 26 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2011 Jul 15 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 75,81 **** + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ +! test77.out test78.out test79.out test80.out test81.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 75,82 ---- + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ +! test77.out test78.out test79.out test80.out test81.out \ +! test82.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.252/src/version.c 2011-07-15 17:56:11.000000000 +0200 +--- src/version.c 2011-07-15 21:12:26.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 253, + /**/ + +-- +"Intelligence has much less practical application than you'd think." + -- Scott Adams, Dilbert. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.254 b/source/ap/vim/patches/7.3.254 new file mode 100644 index 00000000..85176a7a --- /dev/null +++ b/source/ap/vim/patches/7.3.254 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.254 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.254 +Problem: The coladd field is not reset when setting the line number for a + ":call" command. +Solution: Reset it. +Files: src/eval.c + + +*** ../vim-7.3.253/src/eval.c 2011-07-07 17:36:52.000000000 +0200 +--- src/eval.c 2011-07-07 17:51:42.000000000 +0200 +*************** +*** 3430,3435 **** +--- 3430,3438 ---- + { + curwin->w_cursor.lnum = lnum; + curwin->w_cursor.col = 0; ++ #ifdef FEAT_VIRTUALEDIT ++ curwin->w_cursor.coladd = 0; ++ #endif + } + arg = startarg; + if (get_func_tv(name, (int)STRLEN(name), &rettv, &arg, +*** ../vim-7.3.253/src/version.c 2011-07-15 21:16:54.000000000 +0200 +--- src/version.c 2011-07-15 21:23:16.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 254, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.255 b/source/ap/vim/patches/7.3.255 new file mode 100644 index 00000000..c01a585e --- /dev/null +++ b/source/ap/vim/patches/7.3.255 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.255 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.255 +Problem: When editing a file such as "File[2010-08-15].vim" an E16 error is + given. (Manuel Stol) +Solution: Don't give an error for failing to compile the regexp. +Files: src/ex_docmd.c, src/misc1.c, src/vim.h + + +*** ../vim-7.3.254/src/ex_docmd.c 2011-06-13 01:19:48.000000000 +0200 +--- src/ex_docmd.c 2011-07-20 14:48:01.000000000 +0200 +*************** +*** 7069,7075 **** + old_arg_count = GARGCOUNT; + if (expand_wildcards(old_arg_count, old_arg_files, + &new_arg_file_count, &new_arg_files, +! EW_FILE|EW_NOTFOUND|EW_ADDSLASH) == OK + && new_arg_file_count > 0) + { + alist_set(&global_alist, new_arg_file_count, new_arg_files, +--- 7069,7075 ---- + old_arg_count = GARGCOUNT; + if (expand_wildcards(old_arg_count, old_arg_files, + &new_arg_file_count, &new_arg_files, +! EW_FILE|EW_NOTFOUND|EW_ADDSLASH|EW_NOERROR) == OK + && new_arg_file_count > 0) + { + alist_set(&global_alist, new_arg_file_count, new_arg_files, +*** ../vim-7.3.254/src/misc1.c 2011-07-15 14:12:25.000000000 +0200 +--- src/misc1.c 2011-07-20 14:55:09.000000000 +0200 +*************** +*** 9043,9050 **** +--- 9043,9054 ---- + } + + /* compile the regexp into a program */ ++ if (flags & EW_NOERROR) ++ ++emsg_silent; + regmatch.rm_ic = TRUE; /* Always ignore case */ + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); ++ if (flags & EW_NOERROR) ++ --emsg_silent; + vim_free(pat); + + if (regmatch.regprog == NULL) +*** ../vim-7.3.254/src/vim.h 2011-06-13 02:03:55.000000000 +0200 +--- src/vim.h 2011-07-20 14:50:13.000000000 +0200 +*************** +*** 815,820 **** +--- 815,821 ---- + #define EW_EXEC 0x40 /* executable files */ + #define EW_PATH 0x80 /* search in 'path' too */ + #define EW_ICASE 0x100 /* ignore case */ ++ #define EW_NOERROR 0x200 /* no error for bad regexp */ + /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND + * is used when executing commands and EW_SILENT for interactive expanding. */ + +*** ../vim-7.3.254/src/version.c 2011-07-15 21:24:06.000000000 +0200 +--- src/version.c 2011-07-20 15:03:52.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 255, + /**/ + +-- +Not too long ago, a program was something you watched on TV... + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.256 b/source/ap/vim/patches/7.3.256 new file mode 100644 index 00000000..b8c9f00d --- /dev/null +++ b/source/ap/vim/patches/7.3.256 @@ -0,0 +1,322 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.256 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.256 +Problem: Javascript indenting not sufficiently tested. +Solution: Add more tests. (Luc Deschenaux) Mark the lines that are indented + wrong. +Files: src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.255/src/testdir/test3.in 2011-07-15 14:12:25.000000000 +0200 +--- src/testdir/test3.in 2011-07-15 21:05:49.000000000 +0200 +*************** +*** 1592,1598 **** + + + STARTTEST +! :set cino=J1 + /^JSSTART + =/^JSEND + ENDTEST +--- 1592,1598 ---- + + + STARTTEST +! :set cino=j1,J1 + /^JSSTART + =/^JSEND + ENDTEST +*************** +*** 1613,1618 **** +--- 1613,1757 ---- + JSEND + + STARTTEST ++ :set cino=j1,J1 ++ /^JSSTART ++ =/^JSEND ++ ENDTEST ++ ++ JSSTART ++ var foo = [ ++ 1, // indent 8 more ++ 2, ++ 3 ++ ]; // indent 8 less ++ JSEND ++ ++ STARTTEST ++ :set cino=j1,J1 ++ /^JSSTART ++ =/^JSEND ++ ENDTEST ++ ++ JSSTART ++ function bar() { ++ var foo = [ ++ 1, ++ 2, ++ 3 ++ ]; // indent 16 less ++ } ++ JSEND ++ ++ STARTTEST ++ :set cino=j1,J1 ++ /^JSSTART ++ =/^JSEND ++ ENDTEST ++ ++ JSSTART ++ (function($){ ++ ++ var class_name='myclass'; ++ ++ function private_method() { ++ } ++ ++ var public_method={ ++ method: function(options,args){ ++ private_method(); ++ } ++ } ++ ++ function init(options) { ++ ++ $(this).data(class_name+'_public',$.extend({},{ ++ foo: 'bar', ++ bar: 2, // indent 8 more ++ foobar: [ // indent 8 more ++ 1, // indent 8 more ++ 2, // indent 16 more ++ 3 // indent 16 more ++ ], ++ callback: function(){ // indent 8 more ++ return true; // indent 8 more ++ } // indent 8 more ++ }, options||{})); ++ } ++ ++ $.fn[class_name]=function() { ++ ++ var _arguments=arguments; ++ return this.each(function(){ ++ ++ var options=$(this).data(class_name+'_public'); ++ if (!options) { ++ init.apply(this,_arguments); ++ ++ } else { ++ var method=public_method[_arguments[0]]; ++ ++ if (typeof(method)!='function') { ++ console.log(class_name+' has no method "'+_arguments[0]+'"'); ++ return false; ++ } ++ _arguments[0]=options; ++ method.apply(this,_arguments); ++ } ++ }); ++ } ++ ++ })(jQuery); ++ JSEND ++ ++ STARTTEST ++ :set cino=j1,J1 ++ /^JSSTART ++ =/^JSEND ++ ENDTEST ++ ++ JSSTART ++ function init(options) { ++ $(this).data(class_name+'_public',$.extend({},{ ++ foo: 'bar', ++ bar: 2, ++ foobar: [ ++ 1, // indent 8 more ++ 2, // indent 8 more ++ 3 // indent 8 more ++ ], ++ callback: function(){ ++ return true; ++ } ++ }, options||{})); ++ } ++ JSEND ++ ++ STARTTEST ++ :set cino=j1,J1 ++ /^JSSTART ++ =/^JSEND ++ ENDTEST ++ ++ JSSTART ++ (function($){ ++ function init(options) { ++ $(this).data(class_name+'_public',$.extend({},{ ++ foo: 'bar', ++ bar: 2, // indent 8 more ++ foobar: [ // indent 8 more ++ 1, // indent 8 more ++ 2, // indent 16 more ++ 3 // indent 16 more ++ ], ++ callback: function(){ // indent 8 more ++ return true; // indent 8 more ++ } // indent 8 more ++ }, options||{})); ++ } ++ })(jQuery); ++ JSEND ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/start of AUTO/,$wq! test.out + ENDTEST +*** ../vim-7.3.255/src/testdir/test3.ok 2011-07-15 14:12:25.000000000 +0200 +--- src/testdir/test3.ok 2011-07-15 21:06:38.000000000 +0200 +*************** +*** 1443,1445 **** +--- 1443,1559 ---- + } + JSEND + ++ ++ JSSTART ++ var foo = [ ++ 1, // indent 8 more ++ 2, ++ 3 ++ ]; // indent 8 less ++ JSEND ++ ++ ++ JSSTART ++ function bar() { ++ var foo = [ ++ 1, ++ 2, ++ 3 ++ ]; // indent 16 less ++ } ++ JSEND ++ ++ ++ JSSTART ++ (function($){ ++ ++ var class_name='myclass'; ++ ++ function private_method() { ++ } ++ ++ var public_method={ ++ method: function(options,args){ ++ private_method(); ++ } ++ } ++ ++ function init(options) { ++ ++ $(this).data(class_name+'_public',$.extend({},{ ++ foo: 'bar', ++ bar: 2, // indent 8 more ++ foobar: [ // indent 8 more ++ 1, // indent 8 more ++ 2, // indent 16 more ++ 3 // indent 16 more ++ ], ++ callback: function(){ // indent 8 more ++ return true; // indent 8 more ++ } // indent 8 more ++ }, options||{})); ++ } ++ ++ $.fn[class_name]=function() { ++ ++ var _arguments=arguments; ++ return this.each(function(){ ++ ++ var options=$(this).data(class_name+'_public'); ++ if (!options) { ++ init.apply(this,_arguments); ++ ++ } else { ++ var method=public_method[_arguments[0]]; ++ ++ if (typeof(method)!='function') { ++ console.log(class_name+' has no method "'+_arguments[0]+'"'); ++ return false; ++ } ++ _arguments[0]=options; ++ method.apply(this,_arguments); ++ } ++ }); ++ } ++ ++ })(jQuery); ++ JSEND ++ ++ ++ JSSTART ++ function init(options) { ++ $(this).data(class_name+'_public',$.extend({},{ ++ foo: 'bar', ++ bar: 2, ++ foobar: [ ++ 1, // indent 8 more ++ 2, // indent 8 more ++ 3 // indent 8 more ++ ], ++ callback: function(){ ++ return true; ++ } ++ }, options||{})); ++ } ++ JSEND ++ ++ ++ JSSTART ++ (function($){ ++ function init(options) { ++ $(this).data(class_name+'_public',$.extend({},{ ++ foo: 'bar', ++ bar: 2, // indent 8 more ++ foobar: [ // indent 8 more ++ 1, // indent 8 more ++ 2, // indent 16 more ++ 3 // indent 16 more ++ ], ++ callback: function(){ // indent 8 more ++ return true; // indent 8 more ++ } // indent 8 more ++ }, options||{})); ++ } ++ })(jQuery); ++ JSEND ++ +*** ../vim-7.3.255/src/version.c 2011-07-20 15:04:52.000000000 +0200 +--- src/version.c 2011-07-20 15:08:13.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 256, + /**/ + +-- +Not too long ago, a keyboard was something to make music with... + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.257 b/source/ap/vim/patches/7.3.257 new file mode 100644 index 00000000..f6292bf8 --- /dev/null +++ b/source/ap/vim/patches/7.3.257 @@ -0,0 +1,97 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.257 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.257 +Problem: Not all completions are available to user commands. +Solution: Add "color", "compiler", "file_in_path" and "locale". (Dominique + Pelle) +Files: src/ex_docmd.c, runtime/doc/map.txt + + +*** ../vim-7.3.256/src/ex_docmd.c 2011-07-20 15:04:52.000000000 +0200 +--- src/ex_docmd.c 2011-07-20 16:10:28.000000000 +0200 +*************** +*** 5297,5303 **** +--- 5297,5305 ---- + { + {EXPAND_AUGROUP, "augroup"}, + {EXPAND_BUFFERS, "buffer"}, ++ {EXPAND_COLORS, "color"}, + {EXPAND_COMMANDS, "command"}, ++ {EXPAND_COMPILER, "compiler"}, + #if defined(FEAT_CSCOPE) + {EXPAND_CSCOPE, "cscope"}, + #endif +*************** +*** 5310,5319 **** +--- 5312,5326 ---- + {EXPAND_EVENTS, "event"}, + {EXPAND_EXPRESSION, "expression"}, + {EXPAND_FILES, "file"}, ++ {EXPAND_FILES_IN_PATH, "file_in_path"}, + {EXPAND_FILETYPE, "filetype"}, + {EXPAND_FUNCTIONS, "function"}, + {EXPAND_HELP, "help"}, + {EXPAND_HIGHLIGHT, "highlight"}, ++ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ ++ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) ++ {EXPAND_LOCALES, "locale"}, ++ #endif + {EXPAND_MAPPINGS, "mapping"}, + {EXPAND_MENUS, "menu"}, + {EXPAND_OWNSYNTAX, "syntax"}, +*** ../vim-7.3.256/runtime/doc/map.txt 2011-05-19 17:25:36.000000000 +0200 +--- runtime/doc/map.txt 2011-07-20 16:10:28.000000000 +0200 +*************** +*** 1202,1221 **** +--- 1211,1236 ---- + + -complete=augroup autocmd groups + -complete=buffer buffer names ++ -complete=color color schemes + -complete=command Ex command (and arguments) ++ -complete=compiler compilers ++ -complete=cscope |:cscope| suboptions + -complete=dir directory names + -complete=environment environment variable names + -complete=event autocommand events + -complete=expression Vim expression + -complete=file file and directory names ++ -complete=file_in_path file and directory names in |'path'| + -complete=filetype filetype names |'filetype'| + -complete=function function name + -complete=help help subjects + -complete=highlight highlight groups ++ -complete=locale locale names (as output of locale -a) + -complete=mapping mapping name + -complete=menu menus + -complete=option options + -complete=shellcmd Shell command ++ -complete=sign |:sign| suboptions + -complete=syntax syntax file names |'syntax'| + -complete=tag tags + -complete=tag_listfiles tags, file names are shown when CTRL-D is hit +*** ../vim-7.3.256/src/version.c 2011-07-20 15:09:38.000000000 +0200 +--- src/version.c 2011-07-20 16:30:31.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 257, + /**/ + +-- +I have to exercise early in the morning before my brain +figures out what I'm doing. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.258 b/source/ap/vim/patches/7.3.258 new file mode 100644 index 00000000..277cbe77 --- /dev/null +++ b/source/ap/vim/patches/7.3.258 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.258 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.258 +Problem: MS-Windows: The edit with existing vim context menu entries can be + unwanted. +Solution: Let a registry entry disable them. (Jerome Vuarand) +Files: src/GvimExt/gvimext.cpp + + +*** ../vim-7.3.257/src/GvimExt/gvimext.cpp 2010-08-15 21:57:29.000000000 +0200 +--- src/GvimExt/gvimext.cpp 2011-07-20 16:48:09.000000000 +0200 +*************** +*** 586,593 **** + + // Initialize m_cntOfHWnd to 0 + m_cntOfHWnd = 0; +! // Retrieve all the vim instances +! EnumWindows(EnumWindowsProc, (LPARAM)this); + + if (cbFiles > 1) + { +--- 586,608 ---- + + // Initialize m_cntOfHWnd to 0 + m_cntOfHWnd = 0; +! +! HKEY keyhandle; +! bool showExisting = true; +! +! // Check whether "Edit with existing Vim" entries are disabled. +! if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0, +! KEY_READ, &keyhandle) == ERROR_SUCCESS) +! { +! if (RegQueryValueEx(keyhandle, "DisableEditWithExisting", 0, NULL, +! NULL, NULL) == ERROR_SUCCESS) +! showExisting = false; +! RegCloseKey(keyhandle); +! } +! +! // Retrieve all the vim instances, unless disabled. +! if (showExisting) +! EnumWindows(EnumWindowsProc, (LPARAM)this); + + if (cbFiles > 1) + { +*** ../vim-7.3.257/src/version.c 2011-07-20 16:36:35.000000000 +0200 +--- src/version.c 2011-07-20 16:54:34.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 258, + /**/ + +-- +What the word 'politics' means: 'Poli' in Latin meaning 'many' and 'tics' +meaning 'bloodsucking creatures'. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.259 b/source/ap/vim/patches/7.3.259 new file mode 100644 index 00000000..91f9dfa1 --- /dev/null +++ b/source/ap/vim/patches/7.3.259 @@ -0,0 +1,503 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.259 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.259 +Problem: Equivalence classes only work for latin characters. +Solution: Add the Unicode equivalence characters. (Dominique Pelle) +Files: runtime/doc/pattern.txt, src/regexp.c, src/testdir/test44.in, + src/testdir/test44.ok + + +*** ../vim-7.3.258/runtime/doc/pattern.txt 2010-08-15 21:57:14.000000000 +0200 +--- runtime/doc/pattern.txt 2011-07-20 17:44:03.000000000 +0200 +*************** +*** 1027,1037 **** + These items only work for 8-bit characters. + */[[=* *[==]* + - An equivalence class. This means that characters are matched that +! have almost the same meaning, e.g., when ignoring accents. The form +! is: + [=a=] +- Currently this is only implemented for latin1. Also works for the +- latin1 characters in utf-8 and latin9. + */[[.* *[..]* + - A collation element. This currently simply accepts a single + character in the form: +--- 1036,1044 ---- + These items only work for 8-bit characters. + */[[=* *[==]* + - An equivalence class. This means that characters are matched that +! have almost the same meaning, e.g., when ignoring accents. This +! only works for Unicode, latin1 and latin9. The form is: + [=a=] + */[[.* *[..]* + - A collation element. This currently simply accepts a single + character in the form: +*** ../vim-7.3.258/src/regexp.c 2011-06-19 04:31:54.000000000 +0200 +--- src/regexp.c 2011-07-20 17:56:52.000000000 +0200 +*************** +*** 666,673 **** +--- 666,677 ---- + static void regc __ARGS((int b)); + #ifdef FEAT_MBYTE + static void regmbc __ARGS((int c)); ++ # define REGMBC(x) regmbc(x); ++ # define CASEMBC(x) case x: + #else + # define regmbc(c) regc(c) ++ # define REGMBC(x) ++ # define CASEMBC(x) + #endif + static void reginsert __ARGS((int, char_u *)); + static void reginsert_limits __ARGS((int, long, long, char_u *)); +*************** +*** 787,854 **** + switch (c) + { + case 'A': case '\300': case '\301': case '\302': + case '\303': case '\304': case '\305': + regmbc('A'); regmbc('\300'); regmbc('\301'); + regmbc('\302'); regmbc('\303'); regmbc('\304'); + regmbc('\305'); + return; + case 'C': case '\307': + regmbc('C'); regmbc('\307'); + return; + case 'E': case '\310': case '\311': case '\312': case '\313': + regmbc('E'); regmbc('\310'); regmbc('\311'); + regmbc('\312'); regmbc('\313'); + return; + case 'I': case '\314': case '\315': case '\316': case '\317': + regmbc('I'); regmbc('\314'); regmbc('\315'); + regmbc('\316'); regmbc('\317'); + return; + case 'N': case '\321': + regmbc('N'); regmbc('\321'); + return; + case 'O': case '\322': case '\323': case '\324': case '\325': +! case '\326': + regmbc('O'); regmbc('\322'); regmbc('\323'); + regmbc('\324'); regmbc('\325'); regmbc('\326'); + return; + case 'U': case '\331': case '\332': case '\333': case '\334': + regmbc('U'); regmbc('\331'); regmbc('\332'); + regmbc('\333'); regmbc('\334'); + return; + case 'Y': case '\335': + regmbc('Y'); regmbc('\335'); + return; + case 'a': case '\340': case '\341': case '\342': + case '\343': case '\344': case '\345': + regmbc('a'); regmbc('\340'); regmbc('\341'); + regmbc('\342'); regmbc('\343'); regmbc('\344'); + regmbc('\345'); + return; + case 'c': case '\347': + regmbc('c'); regmbc('\347'); + return; + case 'e': case '\350': case '\351': case '\352': case '\353': + regmbc('e'); regmbc('\350'); regmbc('\351'); + regmbc('\352'); regmbc('\353'); + return; + case 'i': case '\354': case '\355': case '\356': case '\357': + regmbc('i'); regmbc('\354'); regmbc('\355'); + regmbc('\356'); regmbc('\357'); + return; + case 'n': case '\361': + regmbc('n'); regmbc('\361'); + return; + case 'o': case '\362': case '\363': case '\364': case '\365': +! case '\366': + regmbc('o'); regmbc('\362'); regmbc('\363'); + regmbc('\364'); regmbc('\365'); regmbc('\366'); + return; + case 'u': case '\371': case '\372': case '\373': case '\374': + regmbc('u'); regmbc('\371'); regmbc('\372'); + regmbc('\373'); regmbc('\374'); + return; + case 'y': case '\375': case '\377': + regmbc('y'); regmbc('\375'); regmbc('\377'); + return; + } + #endif +--- 791,1085 ---- + switch (c) + { + case 'A': case '\300': case '\301': case '\302': ++ CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) CASEMBC(0x1cd) ++ CASEMBC(0x1de) CASEMBC(0x1e0) CASEMBC(0x1ea2) + case '\303': case '\304': case '\305': + regmbc('A'); regmbc('\300'); regmbc('\301'); + regmbc('\302'); regmbc('\303'); regmbc('\304'); + regmbc('\305'); ++ REGMBC(0x100) REGMBC(0x102) REGMBC(0x104) ++ REGMBC(0x1cd) REGMBC(0x1de) REGMBC(0x1e0) ++ REGMBC(0x1ea2) ++ return; ++ case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06) ++ regmbc('B'); REGMBC(0x1e02) REGMBC(0x1e06) + return; + case 'C': case '\307': ++ CASEMBC(0x106) CASEMBC(0x108) CASEMBC(0x10a) CASEMBC(0x10c) + regmbc('C'); regmbc('\307'); ++ REGMBC(0x106) REGMBC(0x108) REGMBC(0x10a) ++ REGMBC(0x10c) ++ return; ++ case 'D': CASEMBC(0x10e) CASEMBC(0x110) CASEMBC(0x1e0a) ++ CASEMBC(0x1e0e) CASEMBC(0x1e10) ++ regmbc('D'); REGMBC(0x10e) REGMBC(0x110) ++ REGMBC(0x1e0a) REGMBC(0x1e0e) REGMBC(0x1e10) + return; + case 'E': case '\310': case '\311': case '\312': case '\313': ++ CASEMBC(0x112) CASEMBC(0x114) CASEMBC(0x116) CASEMBC(0x118) ++ CASEMBC(0x11a) CASEMBC(0x1eba) CASEMBC(0x1ebc) + regmbc('E'); regmbc('\310'); regmbc('\311'); + regmbc('\312'); regmbc('\313'); ++ REGMBC(0x112) REGMBC(0x114) REGMBC(0x116) ++ REGMBC(0x118) REGMBC(0x11a) REGMBC(0x1eba) ++ REGMBC(0x1ebc) ++ return; ++ case 'F': CASEMBC(0x1e1e) ++ regmbc('F'); REGMBC(0x1e1e) ++ return; ++ case 'G': CASEMBC(0x11c) CASEMBC(0x11e) CASEMBC(0x120) ++ CASEMBC(0x122) CASEMBC(0x1e4) CASEMBC(0x1e6) CASEMBC(0x1f4) ++ CASEMBC(0x1e20) ++ regmbc('G'); REGMBC(0x11c) REGMBC(0x11e) ++ REGMBC(0x120) REGMBC(0x122) REGMBC(0x1e4) ++ REGMBC(0x1e6) REGMBC(0x1f4) REGMBC(0x1e20) ++ return; ++ case 'H': CASEMBC(0x124) CASEMBC(0x126) CASEMBC(0x1e22) ++ CASEMBC(0x1e26) CASEMBC(0x1e28) ++ regmbc('H'); REGMBC(0x124) REGMBC(0x126) ++ REGMBC(0x1e22) REGMBC(0x1e26) REGMBC(0x1e28) + return; + case 'I': case '\314': case '\315': case '\316': case '\317': ++ CASEMBC(0x128) CASEMBC(0x12a) CASEMBC(0x12c) CASEMBC(0x12e) ++ CASEMBC(0x130) CASEMBC(0x1cf) CASEMBC(0x1ec8) + regmbc('I'); regmbc('\314'); regmbc('\315'); + regmbc('\316'); regmbc('\317'); ++ REGMBC(0x128) REGMBC(0x12a) REGMBC(0x12c) ++ REGMBC(0x12e) REGMBC(0x130) REGMBC(0x1cf) ++ REGMBC(0x1ec8) ++ return; ++ case 'J': CASEMBC(0x134) ++ regmbc('J'); REGMBC(0x134) ++ return; ++ case 'K': CASEMBC(0x136) CASEMBC(0x1e8) CASEMBC(0x1e30) ++ CASEMBC(0x1e34) ++ regmbc('K'); REGMBC(0x136) REGMBC(0x1e8) ++ REGMBC(0x1e30) REGMBC(0x1e34) ++ return; ++ case 'L': CASEMBC(0x139) CASEMBC(0x13b) CASEMBC(0x13d) ++ CASEMBC(0x13f) CASEMBC(0x141) CASEMBC(0x1e3a) ++ regmbc('L'); REGMBC(0x139) REGMBC(0x13b) ++ REGMBC(0x13d) REGMBC(0x13f) REGMBC(0x141) ++ REGMBC(0x1e3a) ++ return; ++ case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40) ++ regmbc('M'); REGMBC(0x1e3e) REGMBC(0x1e40) + return; + case 'N': case '\321': ++ CASEMBC(0x143) CASEMBC(0x145) CASEMBC(0x147) CASEMBC(0x1e44) ++ CASEMBC(0x1e48) + regmbc('N'); regmbc('\321'); ++ REGMBC(0x143) REGMBC(0x145) REGMBC(0x147) ++ REGMBC(0x1e44) REGMBC(0x1e48) + return; + case 'O': case '\322': case '\323': case '\324': case '\325': +! case '\326': case '\330': +! CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) CASEMBC(0x1a0) +! CASEMBC(0x1d1) CASEMBC(0x1ea) CASEMBC(0x1ec) CASEMBC(0x1ece) + regmbc('O'); regmbc('\322'); regmbc('\323'); + regmbc('\324'); regmbc('\325'); regmbc('\326'); ++ regmbc('\330'); ++ REGMBC(0x14c) REGMBC(0x14e) REGMBC(0x150) ++ REGMBC(0x1a0) REGMBC(0x1d1) REGMBC(0x1ea) ++ REGMBC(0x1ec) REGMBC(0x1ece) ++ return; ++ case 'P': case 0x1e54: case 0x1e56: ++ regmbc('P'); REGMBC(0x1e54) REGMBC(0x1e56) ++ return; ++ case 'R': CASEMBC(0x154) CASEMBC(0x156) CASEMBC(0x158) ++ CASEMBC(0x1e58) CASEMBC(0x1e5e) ++ regmbc('R'); REGMBC(0x154) REGMBC(0x156) REGMBC(0x158) ++ REGMBC(0x1e58) REGMBC(0x1e5e) ++ return; ++ case 'S': CASEMBC(0x15a) CASEMBC(0x15c) CASEMBC(0x15e) ++ CASEMBC(0x160) CASEMBC(0x1e60) ++ regmbc('S'); REGMBC(0x15a) REGMBC(0x15c) ++ REGMBC(0x15e) REGMBC(0x160) REGMBC(0x1e60) ++ return; ++ case 'T': CASEMBC(0x162) CASEMBC(0x164) CASEMBC(0x166) ++ CASEMBC(0x1e6a) CASEMBC(0x1e6e) ++ regmbc('T'); REGMBC(0x162) REGMBC(0x164) ++ REGMBC(0x166) REGMBC(0x1e6a) REGMBC(0x1e6e) + return; + case 'U': case '\331': case '\332': case '\333': case '\334': ++ CASEMBC(0x168) CASEMBC(0x16a) CASEMBC(0x16c) CASEMBC(0x16e) ++ CASEMBC(0x170) CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3) ++ CASEMBC(0x1ee6) + regmbc('U'); regmbc('\331'); regmbc('\332'); + regmbc('\333'); regmbc('\334'); ++ REGMBC(0x168) REGMBC(0x16a) REGMBC(0x16c) ++ REGMBC(0x16e) REGMBC(0x170) REGMBC(0x172) ++ REGMBC(0x1af) REGMBC(0x1d3) REGMBC(0x1ee6) ++ return; ++ case 'V': CASEMBC(0x1e7c) ++ regmbc('V'); REGMBC(0x1e7c) ++ return; ++ case 'W': CASEMBC(0x174) CASEMBC(0x1e80) CASEMBC(0x1e82) ++ CASEMBC(0x1e84) CASEMBC(0x1e86) ++ regmbc('W'); REGMBC(0x174) REGMBC(0x1e80) ++ REGMBC(0x1e82) REGMBC(0x1e84) REGMBC(0x1e86) ++ return; ++ case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c) ++ regmbc('X'); REGMBC(0x1e8a) REGMBC(0x1e8c) + return; + case 'Y': case '\335': ++ CASEMBC(0x176) CASEMBC(0x178) CASEMBC(0x1e8e) CASEMBC(0x1ef2) ++ CASEMBC(0x1ef6) CASEMBC(0x1ef8) + regmbc('Y'); regmbc('\335'); ++ REGMBC(0x176) REGMBC(0x178) REGMBC(0x1e8e) ++ REGMBC(0x1ef2) REGMBC(0x1ef6) REGMBC(0x1ef8) ++ return; ++ case 'Z': CASEMBC(0x179) CASEMBC(0x17b) CASEMBC(0x17d) ++ CASEMBC(0x1b5) CASEMBC(0x1e90) CASEMBC(0x1e94) ++ regmbc('Z'); REGMBC(0x179) REGMBC(0x17b) ++ REGMBC(0x17d) REGMBC(0x1b5) REGMBC(0x1e90) ++ REGMBC(0x1e94) + return; + case 'a': case '\340': case '\341': case '\342': + case '\343': case '\344': case '\345': ++ CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) CASEMBC(0x1ce) ++ CASEMBC(0x1df) CASEMBC(0x1e1) CASEMBC(0x1ea3) + regmbc('a'); regmbc('\340'); regmbc('\341'); + regmbc('\342'); regmbc('\343'); regmbc('\344'); + regmbc('\345'); ++ REGMBC(0x101) REGMBC(0x103) REGMBC(0x105) ++ REGMBC(0x1ce) REGMBC(0x1df) REGMBC(0x1e1) ++ REGMBC(0x1ea3) ++ return; ++ case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07) ++ regmbc('b'); REGMBC(0x1e03) REGMBC(0x1e07) + return; + case 'c': case '\347': ++ CASEMBC(0x107) CASEMBC(0x109) CASEMBC(0x10b) CASEMBC(0x10d) + regmbc('c'); regmbc('\347'); ++ REGMBC(0x107) REGMBC(0x109) REGMBC(0x10b) ++ REGMBC(0x10d) ++ return; ++ case 'd': CASEMBC(0x10f) CASEMBC(0x111) CASEMBC(0x1d0b) ++ CASEMBC(0x1e11) ++ regmbc('d'); REGMBC(0x10f) REGMBC(0x111) ++ REGMBC(0x1e0b) REGMBC(0x01e0f) REGMBC(0x1e11) + return; + case 'e': case '\350': case '\351': case '\352': case '\353': ++ CASEMBC(0x113) CASEMBC(0x115) CASEMBC(0x117) CASEMBC(0x119) ++ CASEMBC(0x11b) CASEMBC(0x1ebb) CASEMBC(0x1ebd) + regmbc('e'); regmbc('\350'); regmbc('\351'); + regmbc('\352'); regmbc('\353'); ++ REGMBC(0x113) REGMBC(0x115) REGMBC(0x117) ++ REGMBC(0x119) REGMBC(0x11b) REGMBC(0x1ebb) ++ REGMBC(0x1ebd) ++ return; ++ case 'f': CASEMBC(0x1e1f) ++ regmbc('f'); REGMBC(0x1e1f) ++ return; ++ case 'g': CASEMBC(0x11d) CASEMBC(0x11f) CASEMBC(0x121) ++ CASEMBC(0x123) CASEMBC(0x1e5) CASEMBC(0x1e7) CASEMBC(0x1f5) ++ CASEMBC(0x1e21) ++ regmbc('g'); REGMBC(0x11d) REGMBC(0x11f) ++ REGMBC(0x121) REGMBC(0x123) REGMBC(0x1e5) ++ REGMBC(0x1e7) REGMBC(0x1f5) REGMBC(0x1e21) ++ return; ++ case 'h': CASEMBC(0x125) CASEMBC(0x127) CASEMBC(0x1e23) ++ CASEMBC(0x1e27) CASEMBC(0x1e29) CASEMBC(0x1e96) ++ regmbc('h'); REGMBC(0x125) REGMBC(0x127) ++ REGMBC(0x1e23) REGMBC(0x1e27) REGMBC(0x1e29) ++ REGMBC(0x1e96) + return; + case 'i': case '\354': case '\355': case '\356': case '\357': ++ CASEMBC(0x129) CASEMBC(0x12b) CASEMBC(0x12d) CASEMBC(0x12f) ++ CASEMBC(0x1d0) CASEMBC(0x1ec9) + regmbc('i'); regmbc('\354'); regmbc('\355'); + regmbc('\356'); regmbc('\357'); ++ REGMBC(0x129) REGMBC(0x12b) REGMBC(0x12d) ++ REGMBC(0x12f) REGMBC(0x1d0) REGMBC(0x1ec9) ++ return; ++ case 'j': CASEMBC(0x135) CASEMBC(0x1f0) ++ regmbc('j'); REGMBC(0x135) REGMBC(0x1f0) ++ return; ++ case 'k': CASEMBC(0x137) CASEMBC(0x1e9) CASEMBC(0x1e31) ++ CASEMBC(0x1e35) ++ regmbc('k'); REGMBC(0x137) REGMBC(0x1e9) ++ REGMBC(0x1e31) REGMBC(0x1e35) ++ return; ++ case 'l': CASEMBC(0x13a) CASEMBC(0x13c) CASEMBC(0x13e) ++ CASEMBC(0x140) CASEMBC(0x142) CASEMBC(0x1e3b) ++ regmbc('l'); REGMBC(0x13a) REGMBC(0x13c) ++ REGMBC(0x13e) REGMBC(0x140) REGMBC(0x142) ++ REGMBC(0x1e3b) ++ return; ++ case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41) ++ regmbc('m'); REGMBC(0x1e3f) REGMBC(0x1e41) + return; + case 'n': case '\361': ++ CASEMBC(0x144) CASEMBC(0x146) CASEMBC(0x148) CASEMBC(0x149) ++ CASEMBC(0x1e45) CASEMBC(0x1e49) + regmbc('n'); regmbc('\361'); ++ REGMBC(0x144) REGMBC(0x146) REGMBC(0x148) ++ REGMBC(0x149) REGMBC(0x1e45) REGMBC(0x1e49) + return; + case 'o': case '\362': case '\363': case '\364': case '\365': +! case '\366': case '\370': +! CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) CASEMBC(0x1a1) +! CASEMBC(0x1d2) CASEMBC(0x1eb) CASEMBC(0x1ed) CASEMBC(0x1ecf) + regmbc('o'); regmbc('\362'); regmbc('\363'); + regmbc('\364'); regmbc('\365'); regmbc('\366'); ++ regmbc('\370'); ++ REGMBC(0x14d) REGMBC(0x14f) REGMBC(0x151) ++ REGMBC(0x1a1) REGMBC(0x1d2) REGMBC(0x1eb) ++ REGMBC(0x1ed) REGMBC(0x1ecf) ++ return; ++ case 'p': CASEMBC(0x1e55) CASEMBC(0x1e57) ++ regmbc('p'); REGMBC(0x1e55) REGMBC(0x1e57) ++ return; ++ case 'r': CASEMBC(0x155) CASEMBC(0x157) CASEMBC(0x159) ++ CASEMBC(0x1e59) CASEMBC(0x1e5f) ++ regmbc('r'); REGMBC(0x155) REGMBC(0x157) REGMBC(0x159) ++ REGMBC(0x1e59) REGMBC(0x1e5f) ++ return; ++ case 's': CASEMBC(0x15b) CASEMBC(0x15d) CASEMBC(0x15f) ++ CASEMBC(0x161) CASEMBC(0x1e61) ++ regmbc('s'); REGMBC(0x15b) REGMBC(0x15d) ++ REGMBC(0x15f) REGMBC(0x161) REGMBC(0x1e61) ++ return; ++ case 't': CASEMBC(0x163) CASEMBC(0x165) CASEMBC(0x167) ++ CASEMBC(0x1e6b) CASEMBC(0x1e6f) CASEMBC(0x1e97) ++ regmbc('t'); REGMBC(0x163) REGMBC(0x165) REGMBC(0x167) ++ REGMBC(0x1e6b) REGMBC(0x1e6f) REGMBC(0x1e97) + return; + case 'u': case '\371': case '\372': case '\373': case '\374': ++ CASEMBC(0x169) CASEMBC(0x16b) CASEMBC(0x16d) CASEMBC(0x16f) ++ CASEMBC(0x171) CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4) ++ CASEMBC(0x1ee7) + regmbc('u'); regmbc('\371'); regmbc('\372'); + regmbc('\373'); regmbc('\374'); ++ REGMBC(0x169) REGMBC(0x16b) REGMBC(0x16d) ++ REGMBC(0x16f) REGMBC(0x171) REGMBC(0x173) ++ REGMBC(0x1b0) REGMBC(0x1d4) REGMBC(0x1ee7) ++ return; ++ case 'v': CASEMBC(0x1e7d) ++ regmbc('v'); REGMBC(0x1e7d) ++ return; ++ case 'w': CASEMBC(0x175) CASEMBC(0x1e81) CASEMBC(0x1e83) ++ CASEMBC(0x1e85) CASEMBC(0x1e87) CASEMBC(0x1e98) ++ regmbc('w'); REGMBC(0x175) REGMBC(0x1e81) ++ REGMBC(0x1e83) REGMBC(0x1e85) REGMBC(0x1e87) ++ REGMBC(0x1e98) ++ return; ++ case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d) ++ regmbc('x'); REGMBC(0x1e8b) REGMBC(0x1e8d) + return; + case 'y': case '\375': case '\377': ++ CASEMBC(0x177) CASEMBC(0x1e8f) CASEMBC(0x1e99) ++ CASEMBC(0x1ef3) CASEMBC(0x1ef7) CASEMBC(0x1ef9) + regmbc('y'); regmbc('\375'); regmbc('\377'); ++ REGMBC(0x177) REGMBC(0x1e8f) REGMBC(0x1e99) ++ REGMBC(0x1ef3) REGMBC(0x1ef7) REGMBC(0x1ef9) ++ return; ++ case 'z': CASEMBC(0x17a) CASEMBC(0x17c) CASEMBC(0x17e) ++ CASEMBC(0x1b6) CASEMBC(0x1e91) CASEMBC(0x1e95) ++ regmbc('z'); REGMBC(0x17a) REGMBC(0x17c) ++ REGMBC(0x17e) REGMBC(0x1b6) REGMBC(0x1e91) ++ REGMBC(0x1e95) + return; + } + #endif +*************** +*** 2468,2473 **** +--- 2699,2706 ---- + regmbc(c) + int c; + { ++ if (!has_mbyte && c > 0xff) ++ return; + if (regcode == JUST_CALC_SIZE) + regsize += (*mb_char2len)(c); + else +*************** +*** 2588,2594 **** + else + offset = (int)(val - scan); + /* When the offset uses more than 16 bits it can no longer fit in the two +! * bytes avaliable. Use a global flag to avoid having to check return + * values in too many places. */ + if (offset > 0xffff) + reg_toolong = TRUE; +--- 2821,2827 ---- + else + offset = (int)(val - scan); + /* When the offset uses more than 16 bits it can no longer fit in the two +! * bytes available. Use a global flag to avoid having to check return + * values in too many places. */ + if (offset > 0xffff) + reg_toolong = TRUE; +*** ../vim-7.3.258/src/testdir/test44.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test44.in 2011-07-20 17:36:49.000000000 +0200 +*************** +*** 27,32 **** +--- 27,34 ---- + x/\%U12345678 + x/[\U1234abcd\u1234\uabcd] + x/\%d21879b ++ x/ [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e ++ x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e + x:?^1?,$w! test.out + :e! test.out + G:put =matchstr(\"×בגד\", \".\", 0, 2) " ב +*************** +*** 53,55 **** +--- 55,59 ---- + e ü’…™¸y + f ü’Š¯z + g aå•·bb ++ h AÀÃÂÃÄÅĀĂĄÇÇžÇ áº¢ BḂḆ CÇĆĈĊČ DÄŽÄḊḎḠEÈÉÊËĒĔĖĘĚẺẼ FḞ GÄœÄžÄ Ä¢Ç¤Ç¦Ç´á¸ HĤĦḢḦḨ IÃŒÃÃŽÃĨĪĬĮİÇỈ JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎÅÆ Ç‘ÇªÇ¬á»Ž PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠTŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ Vá¹¼ WŴẀẂẄẆ XẊẌ YÃŶŸẎỲỶỸ ZŹŻŽƵáºáº” ++ i aà áâãäåÄăąǎǟǡả bḃḇ cÃ§Ä‡Ä‰Ä‹Ä dÄđḋá¸á¸‘ eèéêëēĕėęěẻẽ fḟ gÄğġģǥǧǵḡ hĥħḣḧḩẖ iìÃîïĩīÄįÇỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṠnñńņňʼnṅṉ oòóôõöøÅÅÅ‘Æ¡Ç’Ç«Çá» pṕṗ q rŕŗřṙṟ sÅ›Åşšṡ tţťŧṫṯẗ uùúûüũūÅůűųưǔủ vá¹½ wŵáºáºƒáº…ẇẘ xẋẠyýÿŷáºáº™á»³á»·á»¹ zźżžƶẑẕ +*** ../vim-7.3.258/src/testdir/test44.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test44.ok 2011-07-20 17:36:49.000000000 +0200 +*************** +*** 14,19 **** +--- 14,21 ---- + e y + f z + g abb ++ h AÀÃÂÃÄÅĀĂĄÇÇžÇ áº¢ BḂḆ CÇĆĈĊČ DÄŽÄḊḎḠEÈÉÊËĒĔĖĘĚẺẼ FḞ GÄœÄžÄ Ä¢Ç¤Ç¦Ç´á¸ HĤĦḢḦḨ IÃŒÃÃŽÃĨĪĬĮİÇỈ JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎÅÆ Ç‘ÇªÇ¬á»Ž PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠTŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ Vá¹¼ WŴẀẂẄẆ XẊẌ YÃŶŸẎỲỶỸ ZŹŻŽƵẠ++ i aà áâãäåÄăąǎǟǡả bḃḇ cÃ§Ä‡Ä‰Ä‹Ä dÄđḋá¸á¸‘ eèéêëēĕėęěẻẽ fḟ gÄğġģǥǧǵḡ hĥħḣḧḩẖ iìÃîïĩīÄįÇỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṠnñńņňʼnṅṉ oòóôõöøÅÅÅ‘Æ¡Ç’Ç«Çá» pṕṗ q rŕŗřṙṟ sÅ›Åşšṡ tţťŧṫṯẗ uùúûüũūÅůűųưǔủ vá¹½ wŵáºáºƒáº…ẇẘ xẋẠyýÿŷáºáº™á»³á»·á»¹ zźżžƶẑ + ב + בג + × +*** ../vim-7.3.258/src/version.c 2011-07-20 17:27:17.000000000 +0200 +--- src/version.c 2011-07-20 17:38:32.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 259, + /**/ + +-- +Not too long ago, compress was something you did to garbage... + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.260 b/source/ap/vim/patches/7.3.260 new file mode 100644 index 00000000..ba9af57a --- /dev/null +++ b/source/ap/vim/patches/7.3.260 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.260 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.260 +Problem: CursorHold triggers on an incomplete mapping. (Will Gray) +Solution: Don't trigger CursorHold when there is typeahead. +Files: src/fileio.c + + +*** ../vim-7.3.259/src/fileio.c 2011-05-19 17:25:36.000000000 +0200 +--- src/fileio.c 2011-07-20 18:22:16.000000000 +0200 +*************** +*** 9044,9050 **** + { + int state; + +! if (!did_cursorhold && has_cursorhold() && !Recording + #ifdef FEAT_INS_EXPAND + && !ins_compl_active() + #endif +--- 9044,9053 ---- + { + int state; + +! if (!did_cursorhold +! && has_cursorhold() +! && !Recording +! && typebuf.tb_len == 0 + #ifdef FEAT_INS_EXPAND + && !ins_compl_active() + #endif +*************** +*** 9935,9940 **** +--- 9938,9945 ---- + if ((c == ';' || c == '>') && match == FALSE) + { + *pattern = NUL; /* Terminate the string */ ++ /* TODO: match with 'filetype' of buffer that "fname" comes ++ * from. */ + match = mch_check_filetype(fname, type_start); + *pattern = c; /* Restore the terminator */ + type_start = pattern + 1; +*** ../vim-7.3.259/src/version.c 2011-07-20 17:58:14.000000000 +0200 +--- src/version.c 2011-07-20 18:25:15.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 260, + /**/ + +-- +LAUNCELOT: At last! A call! A cry of distress ... + (he draws his sword, and turns to CONCORDE) + Concorde! Brave, Concorde ... you shall not have died in vain! +CONCORDE: I'm not quite dead, sir ... + "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 /// diff --git a/source/ap/vim/patches/7.3.261 b/source/ap/vim/patches/7.3.261 new file mode 100644 index 00000000..4c03f6b5 --- /dev/null +++ b/source/ap/vim/patches/7.3.261 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.261 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.261 +Problem: G++ error message errornously recognized as error. +Solution: Ignore "In file included from" line also when it ends in a colon. + (Fernando Castillo) +Files: src/option.h + + +*** ../vim-7.3.260/src/option.h 2011-06-26 05:36:07.000000000 +0200 +--- src/option.h 2011-07-27 13:44:08.000000000 +0200 +*************** +*** 33,39 **** + # ifdef EBCDIC + #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" + # else +! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" + # endif + # endif + # endif +--- 33,39 ---- + # ifdef EBCDIC + #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" + # else +! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" + # endif + # endif + # endif +*** ../vim-7.3.260/src/version.c 2011-07-20 18:29:33.000000000 +0200 +--- src/version.c 2011-07-27 13:46:23.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 261, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.262 b/source/ap/vim/patches/7.3.262 new file mode 100644 index 00000000..b3bd5cd8 --- /dev/null +++ b/source/ap/vim/patches/7.3.262 @@ -0,0 +1,1356 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.262 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.262 +Problem: Photon code style doesn't match Vim style. +Solution: Clean up some of it. (Elias Diem) +Files: src/gui_photon.c + + +*** ../vim-7.3.261/src/gui_photon.c 2011-01-17 20:08:03.000000000 +0100 +--- src/gui_photon.c 2011-07-27 14:07:02.000000000 +0200 +*************** +*** 32,40 **** + #endif + + #define ARRAY_LENGTH(a) (sizeof(a) / sizeof(a[0])) +! #define RGB(r,g,b) PgRGB(r,g,b) + +! #define EVENT_BUFFER_SIZE sizeof( PhEvent_t ) + 1000 + + /* Some defines for gui_mch_mousehide() */ + #define MOUSE_HIDE TRUE +--- 32,40 ---- + #endif + + #define ARRAY_LENGTH(a) (sizeof(a) / sizeof(a[0])) +! #define RGB(r, g, b) PgRGB(r, g, b) + +! #define EVENT_BUFFER_SIZE sizeof(PhEvent_t) + 1000 + + /* Some defines for gui_mch_mousehide() */ + #define MOUSE_HIDE TRUE +*************** +*** 206,258 **** + static PtCallbackF_t gui_ph_handle_menu_unrealized; + + #ifdef USE_PANEL_GROUP +! static void gui_ph_get_panelgroup_margins( short*, short*, short*, short* ); + #endif + + #ifdef FEAT_TOOLBAR +! static PhImage_t *gui_ph_toolbar_find_icon( vimmenu_T *menu ); + #endif + +! static void gui_ph_draw_start( void ); +! static void gui_ph_draw_end( void ); + + /* Set the text for the balloon */ +! static PtWidget_t * gui_ph_show_tooltip( PtWidget_t *window, + PtWidget_t *widget, + int position, + char *text, + char *font, + PgColor_t fill_color, +! PgColor_t text_color ); + + /****************************************************************************/ + +! static PtWidget_t * gui_ph_show_tooltip( PtWidget_t *window, + PtWidget_t *widget, + int position, + char *text, + char *font, + PgColor_t fill_color, +! PgColor_t text_color ) + { + PtArg_t arg; + vimmenu_T *menu; + char_u *tooltip; + +! PtSetArg( &arg, Pt_ARG_POINTER, &menu, 0 ); +! PtGetResources( widget, 1, &arg ); + + /* Override the text and position */ + + tooltip = text; +! if( menu != NULL ) + { + int index = MENU_INDEX_TIP; +! if( menu->strings[ index ] != NULL ) + tooltip = menu->strings[ index ]; + } + +! return( PtInflateBalloon( + window, + widget, + /* Don't put the balloon at the bottom, +--- 206,258 ---- + static PtCallbackF_t gui_ph_handle_menu_unrealized; + + #ifdef USE_PANEL_GROUP +! static void gui_ph_get_panelgroup_margins(short*, short*, short*, short*); + #endif + + #ifdef FEAT_TOOLBAR +! static PhImage_t *gui_ph_toolbar_find_icon(vimmenu_T *menu); + #endif + +! static void gui_ph_draw_start(void); +! static void gui_ph_draw_end(void); + + /* Set the text for the balloon */ +! static PtWidget_t * gui_ph_show_tooltip(PtWidget_t *window, + PtWidget_t *widget, + int position, + char *text, + char *font, + PgColor_t fill_color, +! PgColor_t text_color); + + /****************************************************************************/ + +! static PtWidget_t * gui_ph_show_tooltip(PtWidget_t *window, + PtWidget_t *widget, + int position, + char *text, + char *font, + PgColor_t fill_color, +! PgColor_t text_color) + { + PtArg_t arg; + vimmenu_T *menu; + char_u *tooltip; + +! PtSetArg(&arg, Pt_ARG_POINTER, &menu, 0); +! PtGetResources(widget, 1, &arg); + + /* Override the text and position */ + + tooltip = text; +! if (menu != NULL) + { + int index = MENU_INDEX_TIP; +! if (menu->strings[ index ] != NULL) + tooltip = menu->strings[ index ]; + } + +! return PtInflateBalloon( + window, + widget, + /* Don't put the balloon at the bottom, +*************** +*** 261,285 **** + tooltip, + font, + fill_color, +! text_color ) ); + } + + static void +! gui_ph_resize_container( void ) + { + PhArea_t area; + +! PtWidgetArea( gui.vimWindow, &area ); +! PtWidgetPos ( gui.vimContainer, &area.pos ); + +! PtSetResource( gui.vimContainer, Pt_ARG_AREA, &area, 0 ); + } + + static int + gui_ph_handle_menu_resize( + PtWidget_t *widget, + void *other, +! PtCallbackInfo_t *info ) + { + PtContainerCallback_t *sizes = info->cbdata; + PtWidget_t *container; +--- 261,285 ---- + tooltip, + font, + fill_color, +! text_color); + } + + static void +! gui_ph_resize_container(void) + { + PhArea_t area; + +! PtWidgetArea(gui.vimWindow, &area); +! PtWidgetPos (gui.vimContainer, &area.pos); + +! PtSetResource(gui.vimContainer, Pt_ARG_AREA, &area, 0); + } + + static int + gui_ph_handle_menu_resize( + PtWidget_t *widget, + void *other, +! PtCallbackInfo_t *info) + { + PtContainerCallback_t *sizes = info->cbdata; + PtWidget_t *container; +*************** +*** 291,297 **** + /* Because vim treats the toolbar and menubar separately, + * and here they're lumped together into a PtToolbarGroup, + * we only need either menu_height or toolbar_height set at once */ +! if( gui.menu_is_active ) + { + gui.menu_height = height; + gui.toolbar_height = 0; +--- 291,297 ---- + /* Because vim treats the toolbar and menubar separately, + * and here they're lumped together into a PtToolbarGroup, + * we only need either menu_height or toolbar_height set at once */ +! if (gui.menu_is_active) + { + gui.menu_height = height; + gui.toolbar_height = 0; +*************** +*** 310,325 **** + container = gui.vimContainer; + #endif + +! PtSetResource( container, Pt_ARG_POS, &below_menu, 0 ); + + gui_ph_resize_container(); + + #ifdef USE_PANEL_GROUP + gui_ph_get_panelgroup_margins( + &pg_margin_top, &pg_margin_bottom, +! &pg_margin_left, &pg_margin_right ); + #endif +! return( Pt_CONTINUE ); + } + + /* +--- 310,325 ---- + container = gui.vimContainer; + #endif + +! PtSetResource(container, Pt_ARG_POS, &below_menu, 0); + + gui_ph_resize_container(); + + #ifdef USE_PANEL_GROUP + gui_ph_get_panelgroup_margins( + &pg_margin_top, &pg_margin_bottom, +! &pg_margin_left, &pg_margin_right); + #endif +! return Pt_CONTINUE; + } + + /* +*************** +*** 330,352 **** + gui_ph_handle_timer_cursor( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info ) + { +! if( blink_state == BLINK_ON ) + { + gui_undraw_cursor(); + blink_state = BLINK_OFF; +! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, +! blink_offtime, 0 ); + } + else + { + gui_update_cursor(TRUE, FALSE); + blink_state = BLINK_ON; +! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, +! blink_ontime, 0 ); + } +! return( Pt_CONTINUE ); + } + + static int +--- 330,352 ---- + gui_ph_handle_timer_cursor( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info) + { +! if (blink_state == BLINK_ON) + { + gui_undraw_cursor(); + blink_state = BLINK_OFF; +! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, +! blink_offtime, 0); + } + else + { + gui_update_cursor(TRUE, FALSE); + blink_state = BLINK_ON; +! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, +! blink_ontime, 0); + } +! return Pt_CONTINUE; + } + + static int +*************** +*** 354,360 **** + { + is_timeout = TRUE; + +! return( Pt_CONTINUE ); + } + + static int +--- 354,360 ---- + { + is_timeout = TRUE; + +! return Pt_CONTINUE; + } + + static int +*************** +*** 402,408 **** + break; + } + +! return( Pt_CONTINUE ); + } + + static int +--- 402,408 ---- + break; + } + +! return Pt_CONTINUE; + } + + static int +*************** +*** 426,438 **** + + case Pt_SCROLL_SET: + /* FIXME: return straight away here? */ +! return( Pt_CONTINUE ); + break; + } + + gui_drag_scrollbar(sb, value, dragging); + } +! return( Pt_CONTINUE ); + } + + static int +--- 426,438 ---- + + case Pt_SCROLL_SET: + /* FIXME: return straight away here? */ +! return Pt_CONTINUE; + break; + } + + gui_drag_scrollbar(sb, value, dragging); + } +! return Pt_CONTINUE; + } + + static int +*************** +*** 453,459 **** + /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */ + if( key->key_flags & Pk_KF_Compose ) + { +! return( Pt_CONTINUE ); + } + + if( (key->key_flags & Pk_KF_Cap_Valid) && +--- 453,459 ---- + /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */ + if( key->key_flags & Pk_KF_Compose ) + { +! return Pt_CONTINUE; + } + + if( (key->key_flags & Pk_KF_Cap_Valid) && +*************** +*** 473,479 **** + gui_is_menu_shortcut( key->key_cap ) ) ) ) + { + /* Fallthrough and let photon look for the hotkey */ +! return( Pt_CONTINUE ); + } + #endif + +--- 473,479 ---- + gui_is_menu_shortcut( key->key_cap ) ) ) ) + { + /* Fallthrough and let photon look for the hotkey */ +! return Pt_CONTINUE; + } + #endif + +*************** +*** 544,550 **** + add_to_input_buf( string, len ); + } + +! return( Pt_CONSUME ); + } + len = 0; + #endif +--- 544,550 ---- + add_to_input_buf( string, len ); + } + +! return Pt_CONSUME; + } + len = 0; + #endif +*************** +*** 579,585 **** + } + else + { +! return( Pt_CONTINUE ); + } + } + else +--- 579,585 ---- + } + else + { +! return Pt_CONTINUE; + } + } + else +*************** +*** 622,632 **** + if( len > 0 ) + { + add_to_input_buf( string, len ); +! return( Pt_CONSUME ); + } + } + +! return( Pt_CONTINUE ); + } + + static int +--- 622,632 ---- + if( len > 0 ) + { + add_to_input_buf( string, len ); +! return Pt_CONSUME; + } + } + +! return Pt_CONTINUE; + } + + static int +*************** +*** 652,658 **** + if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON ) + { + gui_mouse_moved( mouse_x, mouse_y ); +! return( Pt_CONTINUE ); + } + + if( pointer->key_mods & Pk_KM_Shift ) +--- 652,658 ---- + if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON ) + { + gui_mouse_moved( mouse_x, mouse_y ); +! return Pt_CONTINUE; + } + + if( pointer->key_mods & Pk_KM_Shift ) +*************** +*** 702,708 **** + gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers ); + } + +! return( Pt_CONTINUE ); + } + + /* Handle a focus change of the PtRaw widget */ +--- 702,708 ---- + gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers ); + } + +! return Pt_CONTINUE; + } + + /* Handle a focus change of the PtRaw widget */ +*************** +*** 721,727 **** + PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, + gui_ph_handle_mouse, NULL ); + } +! return( Pt_CONTINUE ); + } + + static void +--- 721,727 ---- + PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, + gui_ph_handle_mouse, NULL ); + } +! return Pt_CONTINUE; + } + + static void +*************** +*** 793,799 **** + PtRealizeWidget( menu->submenu_id ); + } + +! return( Pt_CONTINUE ); + } + + /* This is used for pulldown/popup menus and also toolbar buttons */ +--- 793,799 ---- + PtRealizeWidget( menu->submenu_id ); + } + +! return Pt_CONTINUE; + } + + /* This is used for pulldown/popup menus and also toolbar buttons */ +*************** +*** 805,811 **** + vimmenu_T *menu = (vimmenu_T *) data; + gui_menu_cb( menu ); + } +! return( Pt_CONTINUE ); + } + + /* Stop focus from disappearing into the menubar... */ +--- 805,811 ---- + vimmenu_T *menu = (vimmenu_T *) data; + gui_menu_cb( menu ); + } +! return Pt_CONTINUE; + } + + /* Stop focus from disappearing into the menubar... */ +*************** +*** 816,822 **** + PtCallbackInfo_t *info ) + { + PtGiveFocus( gui.vimTextArea, NULL ); +! return( Pt_CONTINUE ); + } + + static int +--- 816,822 ---- + PtCallbackInfo_t *info ) + { + PtGiveFocus( gui.vimTextArea, NULL ); +! return Pt_CONTINUE; + } + + static int +*************** +*** 826,832 **** + PtCallbackInfo_t *info ) + { + gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH ); +! return( Pt_CONTINUE ); + } + + /****************************************************************************/ +--- 826,832 ---- + PtCallbackInfo_t *info ) + { + gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH ); +! return Pt_CONTINUE; + } + + /****************************************************************************/ +*************** +*** 878,884 **** + ( STRCMP( items->dname, name ) != 0 ) ) + items = items->next; + } +! return( items ); + } + + static void +--- 878,884 ---- + ( STRCMP( items->dname, name ) != 0 ) ) + items = items->next; + } +! return items; + } + + static void +*************** +*** 927,933 **** + gui_menu_cb( menu ); + } + } +! return( Pt_CONTINUE ); + } + + static void +--- 927,933 ---- + gui_menu_cb( menu ); + } + } +! return Pt_CONTINUE; + } + + static void +*************** +*** 974,983 **** + mark++; + + if( *mark == ')' ) +! return( TRUE); + } + } +! return( FALSE ); + } + + static void +--- 974,983 ---- + mark++; + + if( *mark == ')' ) +! return TRUE; + } + } +! return FALSE; + } + + static void +*************** +*** 1057,1063 **** + gui_ph_pg_remove_buffer( menu->dname ); + } + +! return( Pt_CONTINUE ); + } + #endif + +--- 1057,1063 ---- + gui_ph_pg_remove_buffer( menu->dname ); + } + +! return Pt_CONTINUE; + } + #endif + +*************** +*** 1071,1077 **** + PtContainerHold( gui.vimContainer ); + } + +! return( Pt_CONTINUE ); + } + + /****************************************************************************/ +--- 1071,1077 ---- + PtContainerHold( gui.vimContainer ); + } + +! return Pt_CONTINUE; + } + + /****************************************************************************/ +*************** +*** 1126,1132 **** + + gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE ); + if( gui.event_buffer == NULL ) +! return( FAIL ); + + /* Get a translation so we can convert from ISO Latin-1 to UTF */ + charset_translate = PxTranslateSet( NULL, "latin1" ); +--- 1126,1132 ---- + + gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE ); + if( gui.event_buffer == NULL ) +! return FAIL; + + /* Get a translation so we can convert from ISO Latin-1 to UTF */ + charset_translate = PxTranslateSet( NULL, "latin1" ); +*************** +*** 1141,1147 **** + PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 ); + gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args ); + if( gui.vimWindow == NULL ) +! return( FAIL ); + + PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL ); + PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING, +--- 1141,1147 ---- + PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 ); + gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args ); + if( gui.vimWindow == NULL ) +! return FAIL; + + PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL ); + PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING, +*************** +*** 1158,1164 **** + + gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args ); + if( gui.vimPanelGroup == NULL ) +! return( FAIL ); + + PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING, + gui_ph_handle_pg_change, NULL ); +--- 1158,1164 ---- + + gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args ); + if( gui.vimPanelGroup == NULL ) +! return FAIL; + + PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING, + gui_ph_handle_pg_change, NULL ); +*************** +*** 1172,1178 **** + + gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args ); + if( gui.vimContainer == NULL ) +! return( FAIL ); + + PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL ); + #endif +--- 1172,1178 ---- + + gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args ); + if( gui.vimContainer == NULL ) +! return FAIL; + + PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL ); + #endif +*************** +*** 1195,1201 **** + + gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args ); + if( gui.vimTextArea == NULL) +! return( FAIL ); + + /* TODO: use PtAddEventHandlers instead? */ + /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */ +--- 1195,1201 ---- + + gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args ); + if( gui.vimTextArea == NULL) +! return FAIL; + + /* TODO: use PtAddEventHandlers instead? */ + /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */ +*************** +*** 1220,1230 **** + */ + gui_ph_timer_cursor = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); + if( gui_ph_timer_cursor == NULL ) +! return( FAIL ); + + gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); + if( gui_ph_timer_timeout == NULL ) +! return( FAIL ); + + PtAddCallback( gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE, + gui_ph_handle_timer_cursor, NULL); +--- 1220,1230 ---- + */ + gui_ph_timer_cursor = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); + if( gui_ph_timer_cursor == NULL ) +! return FAIL; + + gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); + if( gui_ph_timer_timeout == NULL ) +! return FAIL; + + PtAddCallback( gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE, + gui_ph_handle_timer_cursor, NULL); +*************** +*** 1239,1245 **** + gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow, + n, args ); + if( gui.vimToolBarGroup == NULL ) +! return( FAIL ); + + PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE, + gui_ph_handle_menu_resize, NULL ); +--- 1239,1245 ---- + gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow, + n, args ); + if( gui.vimToolBarGroup == NULL ) +! return FAIL; + + PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE, + gui_ph_handle_menu_resize, NULL ); +*************** +*** 1254,1260 **** + } + gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args ); + if( gui.vimMenuBar == NULL ) +! return( FAIL ); + + # ifdef FEAT_TOOLBAR + n = 0; +--- 1254,1260 ---- + } + gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args ); + if( gui.vimMenuBar == NULL ) +! return FAIL; + + # ifdef FEAT_TOOLBAR + n = 0; +*************** +*** 1273,1279 **** + + gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args ); + if( gui.vimToolBar == NULL ) +! return( FAIL ); + + /* + * Size for the toolbar is fetched in gui_mch_show_toolbar, after +--- 1273,1279 ---- + + gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args ); + if( gui.vimToolBar == NULL ) +! return FAIL; + + /* + * Size for the toolbar is fetched in gui_mch_show_toolbar, after +*************** +*** 1284,1296 **** + + #endif + +! return( OK ); + } + + int + gui_mch_init_check(void) + { +! return( (is_photon_available == TRUE) ? OK : FAIL ); + } + + int +--- 1284,1296 ---- + + #endif + +! return OK; + } + + int + gui_mch_init_check(void) + { +! return (is_photon_available == TRUE) ? OK : FAIL; + } + + int +*************** +*** 1310,1316 **** + if (gui_win_x != -1 && gui_win_y != -1) + gui_mch_set_winpos(gui_win_x, gui_win_y); + +! return( (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL ); + } + + void +--- 1310,1316 ---- + if (gui_win_x != -1 && gui_win_y != -1) + gui_mch_set_winpos(gui_win_x, gui_win_y); + +! return (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL; + } + + void +*************** +*** 1336,1342 **** + exit_gui_mch_update( void *data ) + { + *(int *)data = FALSE; +! return( Pt_END ); + } + + void +--- 1336,1342 ---- + exit_gui_mch_update( void *data ) + { + *(int *)data = FALSE; +! return Pt_END; + } + + void +*************** +*** 1365,1374 **** + if( input_available() ) + { + PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 ); +! return( OK ); + } + else if( is_timeout == TRUE ) +! return( FAIL ); + } + } + +--- 1365,1374 ---- + if( input_available() ) + { + PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 ); +! return OK; + } + else if( is_timeout == TRUE ) +! return FAIL; + } + } + +*************** +*** 1446,1454 **** + vim_free( default_path ); + + if( file.ret == Pt_FSDIALOG_BTN1 ) +! return( vim_strsave( file.path ) ); + } +! return( NULL ); + } + #endif + +--- 1446,1454 ---- + vim_free( default_path ); + + if( file.ret == Pt_FSDIALOG_BTN1 ) +! return vim_strsave(file.path); + } +! return NULL; + } + #endif + +*************** +*** 1470,1476 **** + + PtModalUnblock( modal_ctrl, (void *) button ); + +! return( Pt_TRUE ); + } + + static int +--- 1470,1476 ---- + + PtModalUnblock( modal_ctrl, (void *) button ); + +! return Pt_TRUE; + } + + static int +*************** +*** 1478,1484 **** + { + if( info->reason_subtype == Pt_EDIT_ACTIVATE ) + gui_ph_dialog_close( 1, data ); +! return( Pt_CONTINUE ); + } + + static int +--- 1478,1484 ---- + { + if( info->reason_subtype == Pt_EDIT_ACTIVATE ) + gui_ph_dialog_close( 1, data ); +! return Pt_CONTINUE; + } + + static int +*************** +*** 1490,1498 **** + if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) ) + { + gui_ph_dialog_close( 0, data ); +! return( Pt_CONSUME ); + } +! return( Pt_PROCESS ); + } + + int +--- 1490,1498 ---- + if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) ) + { + gui_ph_dialog_close( 0, data ); +! return Pt_CONSUME; + } +! return Pt_PROCESS; + } + + int +*************** +*** 1519,1525 **** + button_count = len = i = 0; + + if( buttons == NULL || *buttons == NUL ) +! return( -1 ); + + /* There is one less separator than buttons, so bump up the button count */ + button_count = 1; +--- 1519,1525 ---- + button_count = len = i = 0; + + if( buttons == NULL || *buttons == NUL ) +! return -1; + + /* There is one less separator than buttons, so bump up the button count */ + button_count = 1; +*************** +*** 1637,1643 **** + vim_free( button_array ); + vim_free( buttons_copy ); + +! return( dialog_result ); + } + #endif + /****************************************************************************/ +--- 1637,1643 ---- + vim_free( button_array ); + vim_free( buttons_copy ); + +! return dialog_result; + } + #endif + /****************************************************************************/ +*************** +*** 1653,1659 **** + *x = pos->x; + *y = pos->y; + +! return( OK ); + } + + void +--- 1653,1659 ---- + *x = pos->x; + *y = pos->y; + +! return OK; + } + + void +*************** +*** 1975,1985 **** + hex_digit(int c) + { + if (VIM_ISDIGIT(c)) +! return( c - '0' ); + c = TOLOWER_ASC(c); + if (c >= 'a' && c <= 'f') +! return( c - 'a' + 10 ); +! return( -1000 ); + } + + +--- 1975,1985 ---- + hex_digit(int c) + { + if (VIM_ISDIGIT(c)) +! return c - '0'; + c = TOLOWER_ASC(c); + if (c >= 'a' && c <= 'f') +! return c - 'a' + 10; +! return -1000; + } + + +*************** +*** 2065,2077 **** + b = hex_digit( name[5] ) * 16 + hex_digit( name[6] ); + if( r < 0 || g < 0 || b < 0 ) + return INVALCOLOR; +! return( RGB( r, g, b ) ); + } + + for( i = 0; i < ARRAY_LENGTH( table ); i++ ) + { + if( STRICMP( name, table[i].name ) == 0 ) +! return( table[i].colour ); + } + + /* +--- 2065,2077 ---- + b = hex_digit( name[5] ) * 16 + hex_digit( name[6] ); + if( r < 0 || g < 0 || b < 0 ) + return INVALCOLOR; +! return RGB(r, g, b); + } + + for( i = 0; i < ARRAY_LENGTH( table ); i++ ) + { + if( STRICMP( name, table[i].name ) == 0 ) +! return table[i].colour; + } + + /* +*************** +*** 2115,2121 **** + if (STRICMP(color, name) == 0) + { + fclose(fd); +! return( (guicolor_T) RGB(r,g,b) ); + } + } + +--- 2115,2121 ---- + if (STRICMP(color, name) == 0) + { + fclose(fd); +! return (guicolor_T)RGB(r, g, b); + } + } + +*************** +*** 2451,2458 **** + for (i = 0; special_keys[i].key_sym != 0; i++) + if (name[0] == special_keys[i].vim_code0 && + name[1] == special_keys[i].vim_code1) +! return( OK ); +! return( FAIL ); + } + + /****************************************************************************/ +--- 2451,2458 ---- + for (i = 0; special_keys[i].key_sym != 0; i++) + if (name[0] == special_keys[i].vim_code0 && + name[1] == special_keys[i].vim_code1) +! return OK; +! return FAIL; + } + + /****************************************************************************/ +*************** +*** 2512,2518 **** + + temp_phi = &external_icon; + } +! return( temp_phi ); + } + + /* +--- 2512,2518 ---- + + temp_phi = &external_icon; + } +! return temp_phi; + } + + /* +*************** +*** 2541,2556 **** + icon = gui_ph_toolbar_load_icon( full_pathname ); + + if( icon != NULL ) +! return( icon ); + } + + if( menu->iconidx >= 0 && + ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) ) + { +! return( gui_ph_toolbar_images[ menu->iconidx ] ); + } + +! return( NULL ); + } + #endif + +--- 2541,2556 ---- + icon = gui_ph_toolbar_load_icon( full_pathname ); + + if( icon != NULL ) +! return icon; + } + + if( menu->iconidx >= 0 && + ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) ) + { +! return gui_ph_toolbar_images[menu->iconidx]; + } + +! return NULL; + } + #endif + +*************** +*** 2895,2905 **** + * at least has the bits we're checking for */ + if( font_size == info.size && + style == (info.style & style) ) +! return( (GuiFont) font_tag ); + } + vim_free( font_tag ); + } +! return( NULL ); + } + + /* +--- 2895,2905 ---- + * at least has the bits we're checking for */ + if( font_size == info.size && + style == (info.style & style) ) +! return (GuiFont)font_tag; + } + vim_free( font_tag ); + } +! return NULL; + } + + /* +*************** +*** 2957,2965 **** + } + } + } +! return( TRUE ); + } +! return( FALSE ); + } + + int +--- 2957,2965 ---- + } + } + } +! return TRUE; + } +! return FALSE; + } + + int +*************** +*** 2985,2991 **** + "pcterm12", -1, PHFONT_FIXED, NULL ); + + if( font_tag == NULL ) +! return( FAIL ); + + gui_mch_free_font( gui.norm_font ); + gui.norm_font = font_tag; +--- 2985,2991 ---- + "pcterm12", -1, PHFONT_FIXED, NULL ); + + if( font_tag == NULL ) +! return FAIL; + + gui_mch_free_font( gui.norm_font ); + gui.norm_font = font_tag; +*************** +*** 2997,3009 **** + { + if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, + &font_size ) == FALSE ) +! return( FAIL ); + + font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 ); + if( font_tag == NULL ) + { + vim_free( font_name ); +! return( FAIL ); + } + + gui_mch_free_font( gui.norm_font ); +--- 2997,3009 ---- + { + if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, + &font_size ) == FALSE ) +! return FAIL; + + font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 ); + if( font_tag == NULL ) + { + vim_free( font_name ); +! return FAIL; + } + + gui_mch_free_font( gui.norm_font ); +*************** +*** 3026,3032 **** + gui.char_ascent = - extent.ul.y; + + vim_free( font_name ); +! return( OK ); + } + + /* +--- 3026,3032 ---- + gui.char_ascent = - extent.ul.y; + + vim_free( font_name ); +! return OK; + } + + /* +*************** +*** 3042,3048 **** + gui.char_height = - info.ascender + info.descender + p_linespace; + gui.char_ascent = - info.ascender + p_linespace / 2; + +! return( OK ); + } + + GuiFont +--- 3042,3048 ---- + gui.char_height = - info.ascender + info.descender + p_linespace; + gui.char_ascent = - info.ascender + p_linespace / 2; + +! return OK; + } + + GuiFont +*************** +*** 3060,3072 **** + vim_free( font_name ); + + if( font_tag != NULL ) +! return( (GuiFont) font_tag ); + } + + if( report_error ) + EMSG2(e_font, vim_font_name ); + +! return( FAIL ); + } + + #if defined(FEAT_EVAL) || defined(PROTO) +--- 3060,3072 ---- + vim_free( font_name ); + + if( font_tag != NULL ) +! return (GuiFont)font_tag; + } + + if( report_error ) + EMSG2(e_font, vim_font_name ); + +! return FAIL; + } + + #if defined(FEAT_EVAL) || defined(PROTO) +*** ../vim-7.3.261/src/version.c 2011-07-27 13:59:12.000000000 +0200 +--- src/version.c 2011-07-27 14:08:08.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 262, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.263 b/source/ap/vim/patches/7.3.263 new file mode 100644 index 00000000..98850988 --- /dev/null +++ b/source/ap/vim/patches/7.3.263 @@ -0,0 +1,162 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.263 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.263 +Problem: Perl and Tcl have a few code style problems. +Solution: Clean it up. (Elias Diem) +Files: src/if_perl.xs, src/if_tcl.c + + +*** ../vim-7.3.262/src/if_perl.xs 2010-10-23 14:02:48.000000000 +0200 +--- src/if_perl.xs 2011-07-27 14:11:03.000000000 +0200 +*************** +*** 755,761 **** + #ifdef HAVE_SANDBOX + if (sandbox) + { +! safe = perl_get_sv( "VIM::safe", FALSE ); + # ifndef MAKE_TEST /* avoid a warning for unreachable code */ + if (safe == NULL || !SvTRUE(safe)) + EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module")); +--- 755,761 ---- + #ifdef HAVE_SANDBOX + if (sandbox) + { +! safe = perl_get_sv("VIM::safe", FALSE); + # ifndef MAKE_TEST /* avoid a warning for unreachable code */ + if (safe == NULL || !SvTRUE(safe)) + EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module")); +*************** +*** 1108,1114 **** + VIWIN win + + PPCODE: +! if(items == 1) + { + EXTEND(sp, 2); + if (!win_valid(win)) +--- 1108,1114 ---- + VIWIN win + + PPCODE: +! if (items == 1) + { + EXTEND(sp, 2); + if (!win_valid(win)) +*************** +*** 1116,1122 **** + PUSHs(sv_2mortal(newSViv(win->w_cursor.lnum))); + PUSHs(sv_2mortal(newSViv(win->w_cursor.col))); + } +! else if(items == 3) + { + int lnum, col; + +--- 1116,1122 ---- + PUSHs(sv_2mortal(newSViv(win->w_cursor.lnum))); + PUSHs(sv_2mortal(newSViv(win->w_cursor.col))); + } +! else if (items == 3) + { + int lnum, col; + +*************** +*** 1249,1257 **** + { + lnum = SvIV(ST(1)); + count = 1 + SvIV(ST(2)) - lnum; +! if(count == 0) + count = 1; +! if(count < 0) + { + lnum -= count; + count = -count; +--- 1249,1257 ---- + { + lnum = SvIV(ST(1)); + count = 1 + SvIV(ST(2)) - lnum; +! if (count == 0) + count = 1; +! if (count < 0) + { + lnum -= count; + count = -count; +*** ../vim-7.3.262/src/if_tcl.c 2010-12-17 20:23:56.000000000 +0100 +--- src/if_tcl.c 2011-07-27 14:11:03.000000000 +0200 +*************** +*** 1884,1897 **** + { + int newerr = OK; + +! if (error == TCL_EXIT ) + { + int retval; + char buf[50]; + Tcl_Obj *robj; + + robj = Tcl_GetObjResult(tclinfo.interp); +! if( Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK ) + { + EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org")); + newerr = FAIL; +--- 1884,1897 ---- + { + int newerr = OK; + +! if (error == TCL_EXIT) + { + int retval; + char buf[50]; + Tcl_Obj *robj; + + robj = Tcl_GetObjResult(tclinfo.interp); +! if (Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK) + { + EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org")); + newerr = FAIL; +*************** +*** 1900,1906 **** + { + sprintf(buf, _("E572: exit code %d"), retval); + tclerrmsg(buf); +! if (retval == 0 ) + { + did_emsg = 0; + newerr = OK; +--- 1900,1906 ---- + { + sprintf(buf, _("E572: exit code %d"), retval); + tclerrmsg(buf); +! if (retval == 0) + { + did_emsg = 0; + newerr = OK; +*** ../vim-7.3.262/src/version.c 2011-07-27 14:09:05.000000000 +0200 +--- src/version.c 2011-07-27 14:12:05.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 263, + /**/ + +-- +DEAD PERSON: I don't want to go in the cart! +CUSTOMER: Oh, don't be such a baby. +MORTICIAN: I can't take him... +DEAD PERSON: I feel fine! +CUSTOMER: Oh, do us a favor... +MORTICIAN: I can't. + 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 /// diff --git a/source/ap/vim/patches/7.3.264 b/source/ap/vim/patches/7.3.264 new file mode 100644 index 00000000..71ec851f --- /dev/null +++ b/source/ap/vim/patches/7.3.264 @@ -0,0 +1,159 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.264 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.264 +Problem: When the current directory name contains wildcard characters, such + as "foo[with]bar", the tags file can't be found. (Jeremy + Erickson) +Solution: When searching for matching files also match without expanding + wildcards. This is a bit of a hack. +Files: src/vim.h, src/misc1.c, src/misc2.c + + +*** ../vim-7.3.263/src/vim.h 2011-07-20 15:04:52.000000000 +0200 +--- src/vim.h 2011-07-27 16:21:38.000000000 +0200 +*************** +*** 816,821 **** +--- 816,822 ---- + #define EW_PATH 0x80 /* search in 'path' too */ + #define EW_ICASE 0x100 /* ignore case */ + #define EW_NOERROR 0x200 /* no error for bad regexp */ ++ #define EW_NOTWILD 0x400 /* add match with literal name if exists */ + /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND + * is used when executing commands and EW_SILENT for interactive expanding. */ + +*** ../vim-7.3.263/src/misc1.c 2011-07-20 15:04:52.000000000 +0200 +--- src/misc1.c 2011-07-27 17:24:39.000000000 +0200 +*************** +*** 9119,9125 **** + * all entries found with "matchname". */ + if ((p[0] != '.' || starts_with_dot) + && (matchname == NULL +! || vim_regexec(®match, p, (colnr_T)0))) + { + #ifdef WIN3264 + STRCPY(s, p); +--- 9119,9127 ---- + * all entries found with "matchname". */ + if ((p[0] != '.' || starts_with_dot) + && (matchname == NULL +! || vim_regexec(®match, p, (colnr_T)0) +! || ((flags & EW_NOTWILD) +! && fnamencmp(path + (s - buf), p, e - s) == 0))) + { + #ifdef WIN3264 + STRCPY(s, p); +*************** +*** 9323,9329 **** + e = p; + *e = NUL; + +! /* now we have one wildcard component between "s" and "e" */ + /* Remove backslashes between "wildoff" and the start of the wildcard + * component. */ + for (p = buf + wildoff; p < s; ++p) +--- 9325,9331 ---- + e = p; + *e = NUL; + +! /* Now we have one wildcard component between "s" and "e". */ + /* Remove backslashes between "wildoff" and the start of the wildcard + * component. */ + for (p = buf + wildoff; p < s; ++p) +*************** +*** 9390,9396 **** + if (dp == NULL) + break; + if ((dp->d_name[0] != '.' || starts_with_dot) +! && vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0)) + { + STRCPY(s, dp->d_name); + len = STRLEN(buf); +--- 9392,9400 ---- + if (dp == NULL) + break; + if ((dp->d_name[0] != '.' || starts_with_dot) +! && (vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0) +! || ((flags & EW_NOTWILD) +! && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) + { + STRCPY(s, dp->d_name); + len = STRLEN(buf); +*** ../vim-7.3.263/src/misc2.c 2011-07-07 17:15:29.000000000 +0200 +--- src/misc2.c 2011-07-27 17:21:10.000000000 +0200 +*************** +*** 4653,4661 **** + { + if (r_ptr[0] == '\\' && r_ptr[1] == ';') + { +! /* overwrite the escape char, +! * use STRLEN(r_ptr) to move the trailing '\0' +! */ + STRMOVE(r_ptr, r_ptr + 1); + r_ptr++; + } +--- 4653,4660 ---- + { + if (r_ptr[0] == '\\' && r_ptr[1] == ';') + { +! /* Overwrite the escape char, +! * use STRLEN(r_ptr) to move the trailing '\0'. */ + STRMOVE(r_ptr, r_ptr + 1); + r_ptr++; + } +*************** +*** 4914,4923 **** + stackp->ffs_filearray_size = 0; + } + else + expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs, + &stackp->ffs_filearray_size, + &stackp->ffs_filearray, +! EW_DIR|EW_ADDSLASH|EW_SILENT); + + stackp->ffs_filearray_cur = 0; + stackp->ffs_stage = 0; +--- 4913,4925 ---- + stackp->ffs_filearray_size = 0; + } + else ++ /* Add EW_NOTWILD because the expanded path may contain ++ * wildcard characters that are to be taken literally. ++ * This is a bit of a hack. */ + expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs, + &stackp->ffs_filearray_size, + &stackp->ffs_filearray, +! EW_DIR|EW_ADDSLASH|EW_SILENT|EW_NOTWILD); + + stackp->ffs_filearray_cur = 0; + stackp->ffs_stage = 0; +*** ../vim-7.3.263/src/version.c 2011-07-27 14:15:41.000000000 +0200 +--- src/version.c 2011-07-27 17:25:44.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 264, + /**/ + +-- +CUSTOMER: You're not fooling anyone y'know. Look, isn't there something + you can do? +DEAD PERSON: I feel happy... I feel happy. + [whop] +CUSTOMER: Ah, thanks very much. +MORTICIAN: Not at all. See you on Thursday. +CUSTOMER: Right. + 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 /// diff --git a/source/ap/vim/patches/7.3.265 b/source/ap/vim/patches/7.3.265 new file mode 100644 index 00000000..98cb1b4e --- /dev/null +++ b/source/ap/vim/patches/7.3.265 @@ -0,0 +1,145 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.265 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.265 +Problem: When storing a pattern in search history there is no proper check + for the separator character. +Solution: Pass the separator character to in_history(). (Muraoka Taro) +Files: src/ex_getln.c + + +*** ../vim-7.3.264/src/ex_getln.c 2011-07-07 16:44:33.000000000 +0200 +--- src/ex_getln.c 2011-07-27 17:50:35.000000000 +0200 +*************** +*** 67,73 **** + + static int hist_char2type __ARGS((int c)); + +! static int in_history __ARGS((int, char_u *, int)); + # ifdef FEAT_EVAL + static int calc_hist_idx __ARGS((int histype, int num)); + # endif +--- 67,73 ---- + + static int hist_char2type __ARGS((int c)); + +! static int in_history __ARGS((int, char_u *, int, int)); + # ifdef FEAT_EVAL + static int calc_hist_idx __ARGS((int histype, int num)); + # endif +*************** +*** 5289,5301 **** + * If 'move_to_front' is TRUE, matching entry is moved to end of history. + */ + static int +! in_history(type, str, move_to_front) + int type; + char_u *str; + int move_to_front; /* Move the entry to the front if it exists */ + { + int i; + int last_i = -1; + + if (hisidx[type] < 0) + return FALSE; +--- 5289,5303 ---- + * If 'move_to_front' is TRUE, matching entry is moved to end of history. + */ + static int +! in_history(type, str, move_to_front, sep) + int type; + char_u *str; + int move_to_front; /* Move the entry to the front if it exists */ ++ int sep; + { + int i; + int last_i = -1; ++ char_u *p; + + if (hisidx[type] < 0) + return FALSE; +*************** +*** 5304,5310 **** + { + if (history[type][i].hisstr == NULL) + return FALSE; +! if (STRCMP(str, history[type][i].hisstr) == 0) + { + if (!move_to_front) + return TRUE; +--- 5306,5317 ---- + { + if (history[type][i].hisstr == NULL) + return FALSE; +! +! /* For search history, check that the separator character matches as +! * well. */ +! p = history[type][i].hisstr; +! if (STRCMP(str, p) == 0 +! && (type != HIST_SEARCH || sep == p[STRLEN(p) + 1])) + { + if (!move_to_front) + return TRUE; +*************** +*** 5398,5404 **** + } + last_maptick = -1; + } +! if (!in_history(histype, new_entry, TRUE)) + { + if (++hisidx[histype] == hislen) + hisidx[histype] = 0; +--- 5405,5411 ---- + } + last_maptick = -1; + } +! if (!in_history(histype, new_entry, TRUE, sep)) + { + if (++hisidx[histype] == hislen) + hisidx[histype] = 0; +*************** +*** 5977,5983 **** + if (val != NULL && *val != NUL) + { + if (!in_history(type, val + (type == HIST_SEARCH), +! viminfo_add_at_front)) + { + /* Need to re-allocate to append the separator byte. */ + len = STRLEN(val); +--- 5984,5990 ---- + if (val != NULL && *val != NUL) + { + if (!in_history(type, val + (type == HIST_SEARCH), +! viminfo_add_at_front, *val)) + { + /* Need to re-allocate to append the separator byte. */ + len = STRLEN(val); +*** ../vim-7.3.264/src/version.c 2011-07-27 17:31:42.000000000 +0200 +--- src/version.c 2011-07-27 17:58:22.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 265, + /**/ + +-- + [clop clop] +MORTICIAN: Who's that then? +CUSTOMER: I don't know. +MORTICIAN: Must be a king. +CUSTOMER: Why? +MORTICIAN: He hasn't got shit all over him. + 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 /// diff --git a/source/ap/vim/patches/7.3.266 b/source/ap/vim/patches/7.3.266 new file mode 100644 index 00000000..373280ee --- /dev/null +++ b/source/ap/vim/patches/7.3.266 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.266 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.266 +Problem: In Gvim with iBus typing space in Insert mode doesn't work. +Solution: Clear xim_expected_char after checking it. +Files: src/mbyte.c + + +*** ../vim-7.3.265/src/mbyte.c 2011-07-15 21:16:54.000000000 +0200 +--- src/mbyte.c 2011-07-27 18:21:13.000000000 +0200 +*************** +*** 5170,5175 **** +--- 5170,5179 ---- + /* We had a keypad key, and XIM tried to thieve it */ + return FALSE; + ++ /* This is supposed to fix a problem with iBus, that space ++ * characters don't work in input mode. */ ++ xim_expected_char = NUL; ++ + /* Normal processing */ + return imresult; + } +*** ../vim-7.3.265/src/version.c 2011-07-27 17:58:42.000000000 +0200 +--- src/version.c 2011-07-27 18:23:00.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 266, + /**/ + +-- + [clop clop] +ARTHUR: Old woman! +DENNIS: Man! +ARTHUR: Man, sorry. What knight lives in that castle over there? +DENNIS: I'm thirty seven. +ARTHUR: What? +DENNIS: I'm thirty seven -- I'm not old! + 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 /// diff --git a/source/ap/vim/patches/7.3.267 b/source/ap/vim/patches/7.3.267 new file mode 100644 index 00000000..d986e503 --- /dev/null +++ b/source/ap/vim/patches/7.3.267 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.267 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.267 +Problem: Ruby on Mac OS X 10.7 may crash. +Solution: Avoid alloc(0). (Bjorn Winckler) +Files: src/if_ruby.c + + +*** ../vim-7.3.266/src/if_ruby.c 2011-01-17 19:53:20.000000000 +0100 +--- src/if_ruby.c 2011-08-04 18:57:43.000000000 +0200 +*************** +*** 761,771 **** + char *buff, *p; + + str = rb_obj_as_string(str); +! buff = ALLOCA_N(char, RSTRING_LEN(str)); +! strcpy(buff, RSTRING_PTR(str)); +! p = strchr(buff, '\n'); +! if (p) *p = '\0'; +! MSG(buff); + return Qnil; + } + +--- 761,779 ---- + char *buff, *p; + + str = rb_obj_as_string(str); +! if (RSTRING_LEN(str) > 0) +! { +! /* Only do this when the string isn't empty, alloc(0) causes trouble. */ +! buff = ALLOCA_N(char, RSTRING_LEN(str)); +! strcpy(buff, RSTRING_PTR(str)); +! p = strchr(buff, '\n'); +! if (p) *p = '\0'; +! MSG(buff); +! } +! else +! { +! MSG(""); +! } + return Qnil; + } + +*** ../vim-7.3.266/src/version.c 2011-07-27 18:25:40.000000000 +0200 +--- src/version.c 2011-08-04 19:07:45.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 267, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.268 b/source/ap/vim/patches/7.3.268 new file mode 100644 index 00000000..aa848770 --- /dev/null +++ b/source/ap/vim/patches/7.3.268 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.268 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.268 +Problem: Vim freezes when executing an external command with zsh. +Solution: Use O_NOCTTY both in the master and slave. (Bjorn Winckler) +Files: src/os_unix.c + + +*** ../vim-7.3.267/src/os_unix.c 2011-07-07 16:20:45.000000000 +0200 +--- src/os_unix.c 2011-08-04 19:06:14.000000000 +0200 +*************** +*** 3889,3899 **** + if (p_guipty && !(options & (SHELL_READ|SHELL_WRITE))) + { + pty_master_fd = OpenPTY(&tty_name); /* open pty */ +! if (pty_master_fd >= 0 && ((pty_slave_fd = +! open(tty_name, O_RDWR | O_EXTRA, 0)) < 0)) + { +! close(pty_master_fd); +! pty_master_fd = -1; + } + } + /* +--- 3889,3909 ---- + if (p_guipty && !(options & (SHELL_READ|SHELL_WRITE))) + { + pty_master_fd = OpenPTY(&tty_name); /* open pty */ +! if (pty_master_fd >= 0) + { +! /* Leaving out O_NOCTTY may lead to waitpid() always returning +! * 0 on Mac OS X 10.7 thereby causing freezes. Let's assume +! * adding O_NOCTTY always works when defined. */ +! #ifdef O_NOCTTY +! pty_slave_fd = open(tty_name, O_RDWR | O_NOCTTY | O_EXTRA, 0); +! #else +! pty_slave_fd = open(tty_name, O_RDWR | O_EXTRA, 0); +! #endif +! if (pty_slave_fd < 0) +! { +! close(pty_master_fd); +! pty_master_fd = -1; +! } + } + } + /* +*** ../vim-7.3.267/src/version.c 2011-08-04 19:34:55.000000000 +0200 +--- src/version.c 2011-08-04 19:36:00.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 268, + /**/ + +-- +Mental Floss prevents moral decay! + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.269 b/source/ap/vim/patches/7.3.269 new file mode 100644 index 00000000..a0bfc473 --- /dev/null +++ b/source/ap/vim/patches/7.3.269 @@ -0,0 +1,112 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.269 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.269 +Problem: 'shellcmdflag' only works with one flag. +Solution: Split into multiple arguments. (Gary Johnson) +Files: src/os_unix.c + + +*** ../vim-7.3.268/src/os_unix.c 2011-08-04 19:36:47.000000000 +0200 +--- src/os_unix.c 2011-08-04 20:27:13.000000000 +0200 +*************** +*** 3795,3802 **** +--- 3795,3804 ---- + int retval = -1; + char **argv = NULL; + int argc; ++ char_u *p_shcf_copy = NULL; + int i; + char_u *p; ++ char_u *s; + int inquote; + int pty_master_fd = -1; /* for pty's */ + # ifdef FEAT_GUI +*************** +*** 3855,3860 **** +--- 3857,3875 ---- + } + if (argv == NULL) + { ++ /* ++ * Account for possible multiple args in p_shcf. ++ */ ++ p = p_shcf; ++ for (;;) ++ { ++ p = skiptowhite(p); ++ if (*p == NUL) ++ break; ++ ++argc; ++ p = skipwhite(p); ++ } ++ + argv = (char **)alloc((unsigned)((argc + 4) * sizeof(char *))); + if (argv == NULL) /* out of memory */ + goto error; +*************** +*** 3864,3870 **** + { + if (extra_shell_arg != NULL) + argv[argc++] = (char *)extra_shell_arg; +! argv[argc++] = (char *)p_shcf; + argv[argc++] = (char *)cmd; + } + argv[argc] = NULL; +--- 3879,3901 ---- + { + if (extra_shell_arg != NULL) + argv[argc++] = (char *)extra_shell_arg; +! +! /* Break 'shellcmdflag' into white separated parts. This doesn't +! * handle quoted strings, they are very unlikely to appear. */ +! p_shcf_copy = alloc((unsigned)STRLEN(p_shcf) + 1); +! if (p_shcf_copy == NULL) /* out of memory */ +! goto error; +! s = p_shcf_copy; +! p = p_shcf; +! while (*p != NUL) +! { +! argv[argc++] = (char *)s; +! while (*p && *p != ' ' && *p != TAB) +! *s++ = *p++; +! *s++ = NUL; +! p = skipwhite(p); +! } +! + argv[argc++] = (char *)cmd; + } + argv[argc] = NULL; +*************** +*** 4677,4682 **** +--- 4708,4714 ---- + } + } + vim_free(argv); ++ vim_free(p_shcf_copy); + + error: + if (!did_settmode) +*** ../vim-7.3.268/src/version.c 2011-08-04 19:36:47.000000000 +0200 +--- src/version.c 2011-08-04 20:30:44.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 269, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.270 b/source/ap/vim/patches/7.3.270 new file mode 100644 index 00000000..3eaf6bfa --- /dev/null +++ b/source/ap/vim/patches/7.3.270 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.270 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.270 +Problem: Illegal memory access. +Solution: Swap conditions. (Dominique Pelle) +Files: src/ops.c + + +*** ../vim-7.3.269/src/ops.c 2011-07-15 17:51:30.000000000 +0200 +--- src/ops.c 2011-08-10 12:07:22.000000000 +0200 +*************** +*** 6311,6317 **** + *wc += words; + + /* Add eol_size if the end of line was reached before hitting limit. */ +! if (line[i] == NUL && i < limit) + { + i += eol_size; + chars += eol_size; +--- 6311,6317 ---- + *wc += words; + + /* Add eol_size if the end of line was reached before hitting limit. */ +! if (i < limit && line[i] == NUL) + { + i += eol_size; + chars += eol_size; +*** ../vim-7.3.269/src/version.c 2011-08-04 20:31:50.000000000 +0200 +--- src/version.c 2011-08-10 12:09:30.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 270, + /**/ + +-- +An indication you must be a manager: +You give constructive feedback to your dog. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.271 b/source/ap/vim/patches/7.3.271 new file mode 100644 index 00000000..c42d19a8 --- /dev/null +++ b/source/ap/vim/patches/7.3.271 @@ -0,0 +1,504 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.271 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.271 +Problem: Code not following Vim coding style. +Solution: Fix the style. (Elias Diem) +Files: src/gui_photon.c + + +*** ../vim-7.3.270/src/gui_photon.c 2011-07-27 14:09:05.000000000 +0200 +--- src/gui_photon.c 2011-08-10 12:18:35.000000000 +0200 +*************** +*** 358,378 **** + } + + static int +! gui_ph_handle_window_cb( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) + { + PhWindowEvent_t *we = info->cbdata; + ushort_t *width, *height; + +! switch( we->event_f ) { + case Ph_WM_CLOSE: + gui_shell_closed(); + break; + + case Ph_WM_FOCUS: + /* Just in case it's hidden and needs to be shown */ +! gui_mch_mousehide( MOUSE_SHOW ); + +! if( we->event_state == Ph_WM_EVSTATE_FOCUS ) + { + gui_focus_change(TRUE); + gui_mch_start_blink(); +--- 358,378 ---- + } + + static int +! gui_ph_handle_window_cb(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) + { + PhWindowEvent_t *we = info->cbdata; + ushort_t *width, *height; + +! switch (we->event_f) { + case Ph_WM_CLOSE: + gui_shell_closed(); + break; + + case Ph_WM_FOCUS: + /* Just in case it's hidden and needs to be shown */ +! gui_mch_mousehide(MOUSE_SHOW); + +! if (we->event_state == Ph_WM_EVSTATE_FOCUS) + { + gui_focus_change(TRUE); + gui_mch_start_blink(); +*************** +*** 385,401 **** + break; + + case Ph_WM_RESIZE: +! PtGetResource( gui.vimWindow, Pt_ARG_WIDTH, &width, 0 ); +! PtGetResource( gui.vimWindow, Pt_ARG_HEIGHT, &height, 0 ); + #ifdef USE_PANEL_GROUP + width -= (pg_margin_left + pg_margin_right); + height -= (pg_margin_top + pg_margin_bottom); + #endif +! gui_resize_shell( *width, *height ); +! gui_set_shellsize( FALSE, FALSE, RESIZE_BOTH ); + is_ignore_draw = FALSE; +! PtEndFlux( gui.vimContainer ); +! PtContainerRelease( gui.vimContainer ); + break; + + default: +--- 385,401 ---- + break; + + case Ph_WM_RESIZE: +! PtGetResource(gui.vimWindow, Pt_ARG_WIDTH, &width, 0); +! PtGetResource(gui.vimWindow, Pt_ARG_HEIGHT, &height, 0); + #ifdef USE_PANEL_GROUP + width -= (pg_margin_left + pg_margin_right); + height -= (pg_margin_top + pg_margin_bottom); + #endif +! gui_resize_shell(*width, *height); +! gui_set_shellsize(FALSE, FALSE, RESIZE_BOTH); + is_ignore_draw = FALSE; +! PtEndFlux(gui.vimContainer); +! PtContainerRelease(gui.vimContainer); + break; + + default: +*************** +*** 406,412 **** + } + + static int +! gui_ph_handle_scrollbar( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) + { + PtScrollbarCallback_t *scroll; + scrollbar_T *sb; +--- 406,412 ---- + } + + static int +! gui_ph_handle_scrollbar(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) + { + PtScrollbarCallback_t *scroll; + scrollbar_T *sb; +*************** +*** 415,424 **** + scroll = info->cbdata; + + sb = (scrollbar_T *) data; +! if( sb != NULL ) + { + value = scroll->position; +! switch( scroll->action ) + { + case Pt_SCROLL_DRAGGED: + dragging = TRUE; +--- 415,424 ---- + scroll = info->cbdata; + + sb = (scrollbar_T *) data; +! if (sb != NULL) + { + value = scroll->position; +! switch (scroll->action) + { + case Pt_SCROLL_DRAGGED: + dragging = TRUE; +*************** +*** 436,532 **** + } + + static int +! gui_ph_handle_keyboard( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) + { + PhKeyEvent_t *key; + unsigned char string[6]; + int len, i; + int ch, modifiers; + +! key = PhGetData( info->event ); + + ch = modifiers = len = 0; + +! if( p_mh ) +! gui_mch_mousehide( MOUSE_HIDE ); + + /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */ +! if( key->key_flags & Pk_KF_Compose ) + { + return Pt_CONTINUE; + } + +! if( (key->key_flags & Pk_KF_Cap_Valid) && +! PkIsKeyDown( key->key_flags ) ) + { + #ifdef FEAT_MENU + /* + * Only show the menu if the Alt key is down, and the Shift & Ctrl + * keys aren't down, as well as the other conditions + */ +! if( ( ( key->key_mods & Pk_KM_Alt ) && +! !( key->key_mods & Pk_KM_Shift ) && +! !( key->key_mods & Pk_KM_Ctrl ) ) && + gui.menu_is_active && +! ( *p_wak == 'y' || +! ( *p_wak == 'm' && +! gui_is_menu_shortcut( key->key_cap ) ) ) ) + { + /* Fallthrough and let photon look for the hotkey */ + return Pt_CONTINUE; + } + #endif + +! for( i = 0; special_keys[i].key_sym != 0; i++ ) + { +! if( special_keys[i].key_sym == key->key_cap ) + { + len = 0; +! if( special_keys[i].vim_code1 == NUL ) + ch = special_keys[i].vim_code0; + else + { + /* Detect if a keypad number key has been pressed + * and change the key if Num Lock is on */ +! if( key->key_cap >= Pk_KP_Enter && key->key_cap <= Pk_KP_9 +! && ( key->key_mods & Pk_KM_Num_Lock ) ) + { + /* FIXME: For now, just map the key to a ascii value + * (see <photon/PkKeyDef.h>) */ + ch = key->key_cap - 0xf080; + } + else +! ch = TO_SPECIAL( special_keys[i].vim_code0, +! special_keys[i].vim_code1 ); + } + break; + } + } + +! if( key->key_mods & Pk_KM_Ctrl ) + modifiers |= MOD_MASK_CTRL; +! if( key->key_mods & Pk_KM_Alt ) + modifiers |= MOD_MASK_ALT; +! if( key->key_mods & Pk_KM_Shift ) + modifiers |= MOD_MASK_SHIFT; + + /* Is this not a special key? */ +! if( special_keys[i].key_sym == 0 ) + { +! ch = PhTo8859_1( key ); +! if( ch == -1 + #ifdef FEAT_MBYTE +! || ( enc_utf8 && ch > 127 ) + #endif + ) + { + #ifdef FEAT_MBYTE +! len = PhKeyToMb( string, key ); +! if( len > 0 ) + { + static char buf[6]; + int src_taken, dst_made; +! if( enc_utf8 != TRUE ) + { + PxTranslateFromUTF( + charset_translate, +--- 436,532 ---- + } + + static int +! gui_ph_handle_keyboard(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) + { + PhKeyEvent_t *key; + unsigned char string[6]; + int len, i; + int ch, modifiers; + +! key = PhGetData(info->event); + + ch = modifiers = len = 0; + +! if (p_mh) +! gui_mch_mousehide(MOUSE_HIDE); + + /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */ +! if (key->key_flags & Pk_KF_Compose) + { + return Pt_CONTINUE; + } + +! if ((key->key_flags & Pk_KF_Cap_Valid) && +! PkIsKeyDown(key->key_flags)) + { + #ifdef FEAT_MENU + /* + * Only show the menu if the Alt key is down, and the Shift & Ctrl + * keys aren't down, as well as the other conditions + */ +! if (((key->key_mods & Pk_KM_Alt) && +! !(key->key_mods & Pk_KM_Shift) && +! !(key->key_mods & Pk_KM_Ctrl)) && + gui.menu_is_active && +! (*p_wak == 'y' || +! (*p_wak == 'm' && +! gui_is_menu_shortcut(key->key_cap)))) + { + /* Fallthrough and let photon look for the hotkey */ + return Pt_CONTINUE; + } + #endif + +! for(i = 0; special_keys[i].key_sym != 0; i++) + { +! if (special_keys[i].key_sym == key->key_cap) + { + len = 0; +! if (special_keys[i].vim_code1 == NUL) + ch = special_keys[i].vim_code0; + else + { + /* Detect if a keypad number key has been pressed + * and change the key if Num Lock is on */ +! if (key->key_cap >= Pk_KP_Enter && key->key_cap <= Pk_KP_9 +! && (key->key_mods & Pk_KM_Num_Lock)) + { + /* FIXME: For now, just map the key to a ascii value + * (see <photon/PkKeyDef.h>) */ + ch = key->key_cap - 0xf080; + } + else +! ch = TO_SPECIAL(special_keys[i].vim_code0, +! special_keys[i].vim_code1); + } + break; + } + } + +! if (key->key_mods & Pk_KM_Ctrl) + modifiers |= MOD_MASK_CTRL; +! if (key->key_mods & Pk_KM_Alt) + modifiers |= MOD_MASK_ALT; +! if (key->key_mods & Pk_KM_Shift) + modifiers |= MOD_MASK_SHIFT; + + /* Is this not a special key? */ +! if (special_keys[i].key_sym == 0) + { +! ch = PhTo8859_1(key); +! if (ch == -1 + #ifdef FEAT_MBYTE +! || (enc_utf8 && ch > 127) + #endif + ) + { + #ifdef FEAT_MBYTE +! len = PhKeyToMb(string, key); +! if (len > 0) + { + static char buf[6]; + int src_taken, dst_made; +! if (enc_utf8 != TRUE) + { + PxTranslateFromUTF( + charset_translate, +*************** +*** 2931,2943 **** + name_len = (int_u) ( mark - vim_font ); + + *font_name = vim_strnsave( vim_font, name_len ); +! if( *font_name != NULL ) + { +! if( mark != NULL ) + { +! while( *mark != NUL && *mark++ == ':') + { +! switch( tolower( *mark++ ) ) + { + case 'a': *font_flags |= PF_STYLE_ANTIALIAS; break; + case 'b': *font_flags |= PF_STYLE_BOLD; break; +--- 2931,2943 ---- + name_len = (int_u) ( mark - vim_font ); + + *font_name = vim_strnsave( vim_font, name_len ); +! if (*font_name != NULL) + { +! if (mark != NULL) + { +! while (*mark != NUL && *mark++ == ':') + { +! switch (tolower(*mark++)) + { + case 'a': *font_flags |= PF_STYLE_ANTIALIAS; break; + case 'b': *font_flags |= PF_STYLE_BOLD; break; +*************** +*** 2946,2952 **** + case 's': + size = getdigits( &mark ); + /* Restrict the size to some vague limits */ +! if( size < 1 || size > 100 ) + size = 8; + + *font_size = size; +--- 2946,2952 ---- + case 's': + size = getdigits( &mark ); + /* Restrict the size to some vague limits */ +! if (size < 1 || size > 100) + size = 8; + + *font_size = size; +*************** +*** 2973,2990 **** + FontQueryInfo info; + PhRect_t extent; + +! if( vim_font_name == NULL ) + { + /* Default font */ + vim_font_name = "PC Terminal"; + } + +! if( STRCMP( vim_font_name, "*" ) == 0 ) + { + font_tag = PtFontSelection( gui.vimWindow, NULL, NULL, + "pcterm12", -1, PHFONT_FIXED, NULL ); + +! if( font_tag == NULL ) + return FAIL; + + gui_mch_free_font( gui.norm_font ); +--- 2973,2990 ---- + FontQueryInfo info; + PhRect_t extent; + +! if (vim_font_name == NULL) + { + /* Default font */ + vim_font_name = "PC Terminal"; + } + +! if (STRCMP( vim_font_name, "*" ) == 0) + { + font_tag = PtFontSelection( gui.vimWindow, NULL, NULL, + "pcterm12", -1, PHFONT_FIXED, NULL ); + +! if (font_tag == NULL) + return FAIL; + + gui_mch_free_font( gui.norm_font ); +*************** +*** 2995,3006 **** + } + else + { +! if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, +! &font_size ) == FALSE ) + return FAIL; + + font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 ); +! if( font_tag == NULL ) + { + vim_free( font_name ); + return FAIL; +--- 2995,3006 ---- + } + else + { +! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, +! &font_size ) == FALSE) + return FAIL; + + font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 ); +! if (font_tag == NULL) + { + vim_free( font_name ); + return FAIL; +*************** +*** 3053,3069 **** + int_u font_size = 12; + int_u font_flags = 0; + +! if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, +! &font_size ) != FALSE ) + { + font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 ); + vim_free( font_name ); + +! if( font_tag != NULL ) + return (GuiFont)font_tag; + } + +! if( report_error ) + EMSG2(e_font, vim_font_name ); + + return FAIL; +--- 3053,3069 ---- + int_u font_size = 12; + int_u font_flags = 0; + +! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, +! &font_size ) != FALSE) + { + font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 ); + vim_free( font_name ); + +! if (font_tag != NULL) + return (GuiFont)font_tag; + } + +! if (report_error) + EMSG2(e_font, vim_font_name ); + + return FAIL; +*** ../vim-7.3.270/src/version.c 2011-08-10 12:10:55.000000000 +0200 +--- src/version.c 2011-08-10 12:17:06.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 271, + /**/ + +-- +An indication you must be a manager: +You believe you never have any problems in your life, just +"issues" and "improvement opportunities". + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.272 b/source/ap/vim/patches/7.3.272 new file mode 100644 index 00000000..b512a1fd --- /dev/null +++ b/source/ap/vim/patches/7.3.272 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.272 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.272 +Problem: ":put =list" does not add an empty line for a trailing empty + item. +Solution: Add a trailing NL when turning a list into a string. +Files: src/eval.c + + +*** ../vim-7.3.271/src/eval.c 2011-07-15 21:24:06.000000000 +0200 +--- src/eval.c 2011-08-10 12:31:51.000000000 +0200 +*************** +*** 1357,1363 **** +--- 1357,1367 ---- + { + ga_init2(&ga, (int)sizeof(char), 80); + if (tv.vval.v_list != NULL) ++ { + list_join(&ga, tv.vval.v_list, (char_u *)"\n", TRUE, 0); ++ if (tv.vval.v_list->lv_len > 0) ++ ga_append(&ga, NL); ++ } + ga_append(&ga, NUL); + retval = (char_u *)ga.ga_data; + } +*** ../vim-7.3.271/src/version.c 2011-08-10 12:19:00.000000000 +0200 +--- src/version.c 2011-08-10 12:36:41.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 272, + /**/ + +-- +Lose weight, NEVER Diet again with + The "Invisible Weight Loss Patch" + (spam e-mail) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.273 b/source/ap/vim/patches/7.3.273 new file mode 100644 index 00000000..e74eb5a2 --- /dev/null +++ b/source/ap/vim/patches/7.3.273 @@ -0,0 +1,124 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.273 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.273 +Problem: A BOM in an error file is seen as text. (Aleksey Baibarin) +Solution: Remove the BOM from the text before evaluating. (idea by Christian + Brabandt) +Files: src/quickfix.c, src/mbyte.c, src/proto/mbyte.pro, + src/testdir/test10.in + + +*** ../vim-7.3.272/src/quickfix.c 2011-05-19 17:42:54.000000000 +0200 +--- src/quickfix.c 2011-08-10 12:56:15.000000000 +0200 +*************** +*** 561,566 **** +--- 561,570 ---- + break; + + IObuff[CMDBUFFSIZE - 2] = NUL; /* for very long lines */ ++ #ifdef FEAT_MBYTE ++ remove_bom(IObuff); ++ #endif ++ + if ((efmp = vim_strrchr(IObuff, '\n')) != NULL) + *efmp = NUL; + #ifdef USE_CRNL +*** ../vim-7.3.272/src/mbyte.c 2011-07-27 18:25:40.000000000 +0200 +--- src/mbyte.c 2011-08-10 13:11:56.000000000 +0200 +*************** +*** 838,843 **** +--- 838,864 ---- + } + + /* ++ * Remove all BOM from "s" by moving remaining text. ++ */ ++ void ++ remove_bom(s) ++ char_u *s; ++ { ++ if (enc_utf8) ++ { ++ char_u *p = s; ++ ++ while ((p = vim_strbyte(p, 0xef)) != NULL) ++ { ++ if (p[1] == 0xbb && p[2] == 0xbf) ++ STRMOVE(p, p + 3); ++ else ++ ++p; ++ } ++ } ++ } ++ ++ /* + * Get class of pointer: + * 0 for blank or NUL + * 1 for punctuation +*** ../vim-7.3.272/src/proto/mbyte.pro 2011-07-07 15:08:53.000000000 +0200 +--- src/proto/mbyte.pro 2011-08-10 12:50:44.000000000 +0200 +*************** +*** 2,7 **** +--- 2,8 ---- + int enc_canon_props __ARGS((char_u *name)); + char_u *mb_init __ARGS((void)); + int bomb_size __ARGS((void)); ++ void remove_bom __ARGS((char_u *s)); + int mb_get_class __ARGS((char_u *p)); + int dbcs_class __ARGS((unsigned lead, unsigned trail)); + int latin_char2len __ARGS((int c)); +*** ../vim-7.3.272/src/testdir/test10.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test10.in 2011-08-10 13:01:46.000000000 +0200 +*************** +*** 2,7 **** +--- 2,10 ---- + + STARTTEST + :so small.vim ++ :" Also test a BOM is ignored. ++ :so mbyte.vim ++ :set encoding=utf-8 + :/start of errorfile/,/end of errorfile/w! Xerrorfile + :/start of testfile/,/end of testfile/w! Xtestfile + :cf Xerrorfile +*************** +*** 20,26 **** + + start of errorfile + "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. +! "Xtestfile", line 7 col 19; this is an error + gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c + Xtestfile:13: parse error before `asd' + make: *** [vim] Error 1 +--- 23,29 ---- + + start of errorfile + "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. +! "Xtestfile", line 7 col 19; this is an error + gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c + Xtestfile:13: parse error before `asd' + make: *** [vim] Error 1 +*** ../vim-7.3.272/src/version.c 2011-08-10 12:38:02.000000000 +0200 +--- src/version.c 2011-08-10 13:14:35.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 273, + /**/ + +-- +Compilation process failed successfully. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.274 b/source/ap/vim/patches/7.3.274 new file mode 100644 index 00000000..48faf3cf --- /dev/null +++ b/source/ap/vim/patches/7.3.274 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.274 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.274 +Problem: With concealed characters tabs do not have the right size. +Solution: Use VCOL_HLC instead of vcol. (Eiichi Sato) +Files: src/screen.c + + +*** ../vim-7.3.273/src/screen.c 2011-03-22 13:29:20.000000000 +0100 +--- src/screen.c 2011-08-10 14:22:47.000000000 +0200 +*************** +*** 4252,4258 **** + { + /* tab amount depends on current column */ + n_extra = (int)wp->w_buffer->b_p_ts +! - vcol % (int)wp->w_buffer->b_p_ts - 1; + #ifdef FEAT_MBYTE + mb_utf8 = FALSE; /* don't draw as UTF-8 */ + #endif +--- 4252,4258 ---- + { + /* tab amount depends on current column */ + n_extra = (int)wp->w_buffer->b_p_ts +! - VCOL_HLC % (int)wp->w_buffer->b_p_ts - 1; + #ifdef FEAT_MBYTE + mb_utf8 = FALSE; /* don't draw as UTF-8 */ + #endif +*** ../vim-7.3.273/src/version.c 2011-08-10 13:21:30.000000000 +0200 +--- src/version.c 2011-08-10 14:23:38.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 274, + /**/ + +-- + Arthur pulls Pin out. The MONK blesses the grenade as ... +ARTHUR: (quietly) One, two, five ... +GALAHAD: Three, sir! +ARTHUR: Three. + "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 /// diff --git a/source/ap/vim/patches/7.3.275 b/source/ap/vim/patches/7.3.275 new file mode 100644 index 00000000..2bdd145b --- /dev/null +++ b/source/ap/vim/patches/7.3.275 @@ -0,0 +1,77 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.275 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.275 +Problem: MS-Windows: When using a black background some screen updates + cause the window to flicker. +Solution: Add WS_CLIPCHILDREN to CreateWindow(). (René Aguirre) +Files: src/gui_w32.c + + +*** ../vim-7.3.274/src/gui_w32.c 2011-07-07 17:43:37.000000000 +0200 +--- src/gui_w32.c 2011-08-10 14:40:58.000000000 +0200 +*************** +*** 1379,1385 **** + s_hwnd = CreateWindowEx( + WS_EX_MDICHILD, + szVimWndClass, "Vim MSWindows GUI", +! WS_OVERLAPPEDWINDOW | WS_CHILD | WS_CLIPSIBLINGS | 0xC000, + gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x, + gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y, + 100, /* Any value will do */ +--- 1379,1386 ---- + s_hwnd = CreateWindowEx( + WS_EX_MDICHILD, + szVimWndClass, "Vim MSWindows GUI", +! WS_OVERLAPPEDWINDOW | WS_CHILD +! | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 0xC000, + gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x, + gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y, + 100, /* Any value will do */ +*************** +*** 1410,1416 **** + * titlebar, it will be reparented below. */ + s_hwnd = CreateWindow( + szVimWndClass, "Vim MSWindows GUI", +! win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP, + gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x, + gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y, + 100, /* Any value will do */ +--- 1411,1418 ---- + * titlebar, it will be reparented below. */ + s_hwnd = CreateWindow( + szVimWndClass, "Vim MSWindows GUI", +! (win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP) +! | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, + gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x, + gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y, + 100, /* Any value will do */ +*** ../vim-7.3.274/src/version.c 2011-08-10 14:32:33.000000000 +0200 +--- src/version.c 2011-08-10 14:39:14.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 275, + /**/ + +-- +ARTHUR: What does it say? +BROTHER MAYNARD: It reads ... "Here may be found the last words of Joseph of + Aramathea." "He who is valorous and pure of heart may find + the Holy Grail in the aaaaarrrrrrggghhh..." +ARTHUR: What? +BROTHER MAYNARD: "The Aaaaarrrrrrggghhh..." + "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 /// diff --git a/source/ap/vim/patches/7.3.276 b/source/ap/vim/patches/7.3.276 new file mode 100644 index 00000000..3af02457 --- /dev/null +++ b/source/ap/vim/patches/7.3.276 @@ -0,0 +1,130 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.276 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.276 +Problem: GvimExt sets $LANG in the wrong way. +Solution: Save the environment and use it for gvim. (Yasuhiro Matsumoto) +Files: src/GvimExt/gvimext.cpp + + +*** ../vim-7.3.275/src/GvimExt/gvimext.cpp 2011-07-20 17:27:17.000000000 +0200 +--- src/GvimExt/gvimext.cpp 2011-08-10 16:25:32.000000000 +0200 +*************** +*** 142,147 **** +--- 142,148 ---- + static int dyn_libintl_init(char *dir); + static void dyn_libintl_end(void); + ++ static wchar_t *oldenv = NULL; + static HINSTANCE hLibintlDLL = 0; + static char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext; + static char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain; +*************** +*** 339,346 **** + inc_cRefThisDLL() + { + #ifdef FEAT_GETTEXT +! if (g_cRefThisDll == 0) + dyn_gettext_load(); + #endif + InterlockedIncrement((LPLONG)&g_cRefThisDll); + } +--- 340,349 ---- + inc_cRefThisDLL() + { + #ifdef FEAT_GETTEXT +! if (g_cRefThisDll == 0) { + dyn_gettext_load(); ++ oldenv = GetEnvironmentStringsW(); ++ } + #endif + InterlockedIncrement((LPLONG)&g_cRefThisDll); + } +*************** +*** 349,356 **** + dec_cRefThisDLL() + { + #ifdef FEAT_GETTEXT +! if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0) + dyn_gettext_free(); + #else + InterlockedDecrement((LPLONG)&g_cRefThisDll); + #endif +--- 352,364 ---- + dec_cRefThisDLL() + { + #ifdef FEAT_GETTEXT +! if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0) { + dyn_gettext_free(); ++ if (oldenv != NULL) { ++ FreeEnvironmentStringsW(oldenv); ++ oldenv = NULL; ++ } ++ } + #else + InterlockedDecrement((LPLONG)&g_cRefThisDll); + #endif +*************** +*** 905,912 **** + NULL, // Process handle not inheritable. + NULL, // Thread handle not inheritable. + FALSE, // Set handle inheritance to FALSE. +! 0, // No creation flags. +! NULL, // Use parent's environment block. + NULL, // Use parent's starting directory. + &si, // Pointer to STARTUPINFO structure. + &pi) // Pointer to PROCESS_INFORMATION structure. +--- 913,920 ---- + NULL, // Process handle not inheritable. + NULL, // Thread handle not inheritable. + FALSE, // Set handle inheritance to FALSE. +! oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT, +! oldenv, // Use unmodified environment block. + NULL, // Use parent's starting directory. + &si, // Pointer to STARTUPINFO structure. + &pi) // Pointer to PROCESS_INFORMATION structure. +*************** +*** 987,994 **** + NULL, // Process handle not inheritable. + NULL, // Thread handle not inheritable. + FALSE, // Set handle inheritance to FALSE. +! 0, // No creation flags. +! NULL, // Use parent's environment block. + NULL, // Use parent's starting directory. + &si, // Pointer to STARTUPINFO structure. + &pi) // Pointer to PROCESS_INFORMATION structure. +--- 995,1002 ---- + NULL, // Process handle not inheritable. + NULL, // Thread handle not inheritable. + FALSE, // Set handle inheritance to FALSE. +! oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT, +! oldenv, // Use unmodified environment block. + NULL, // Use parent's starting directory. + &si, // Pointer to STARTUPINFO structure. + &pi) // Pointer to PROCESS_INFORMATION structure. +*** ../vim-7.3.275/src/version.c 2011-08-10 15:56:24.000000000 +0200 +--- src/version.c 2011-08-10 16:28:42.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 276, + /**/ + +-- +User: I'm having problems with my text editor. +Help desk: Which editor are you using? +User: I don't know, but it's version VI (pronounced: 6). +Help desk: Oh, then you should upgrade to version VIM (pronounced: 994). + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.277 b/source/ap/vim/patches/7.3.277 new file mode 100644 index 00000000..3509a1a6 --- /dev/null +++ b/source/ap/vim/patches/7.3.277 @@ -0,0 +1,348 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.277 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.277 +Problem: MS-Windows: some characters do not show in dialogs. +Solution: Use the wide methods when available. (Yanwei Jia) +Files: src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, src/os_win32.c, + src/os_win32.h + + +*** ../vim-7.3.276/src/gui_w32.c 2011-08-10 15:56:24.000000000 +0200 +--- src/gui_w32.c 2011-08-10 16:52:55.000000000 +0200 +*************** +*** 1270,1275 **** +--- 1270,1294 ---- + pGetMonitorInfo = (TGetMonitorInfo)GetProcAddress(user32_lib, + "GetMonitorInfoA"); + } ++ ++ #ifdef FEAT_MBYTE ++ /* If the OS is Windows NT, use wide functions; ++ * this enables common dialogs input unicode from IME. */ ++ if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT) ++ { ++ pDispatchMessage = DispatchMessageW; ++ pGetMessage = GetMessageW; ++ pIsDialogMessage = IsDialogMessageW; ++ pPeekMessage = PeekMessageW; ++ } ++ else ++ { ++ pDispatchMessage = DispatchMessageA; ++ pGetMessage = GetMessageA; ++ pIsDialogMessage = IsDialogMessageA; ++ pPeekMessage = PeekMessageA; ++ } ++ #endif + } + + /* +*** ../vim-7.3.276/src/gui_w48.c 2010-10-20 21:22:17.000000000 +0200 +--- src/gui_w48.c 2011-08-10 16:49:39.000000000 +0200 +*************** +*** 390,396 **** + KillTimer(NULL, idEvent); + + /* Eat spurious WM_TIMER messages */ +! while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) + ; + + if (blink_state == BLINK_ON) +--- 390,396 ---- + KillTimer(NULL, idEvent); + + /* Eat spurious WM_TIMER messages */ +! while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) + ; + + if (blink_state == BLINK_ON) +*************** +*** 418,424 **** + { + KillTimer(NULL, blink_timer); + /* Eat spurious WM_TIMER messages */ +! while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) + ; + blink_timer = 0; + } +--- 418,424 ---- + { + KillTimer(NULL, blink_timer); + /* Eat spurious WM_TIMER messages */ +! while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) + ; + blink_timer = 0; + } +*************** +*** 476,482 **** + s_timed_out = TRUE; + + /* Eat spurious WM_TIMER messages */ +! while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) + ; + if (idEvent == s_wait_timer) + s_wait_timer = 0; +--- 476,482 ---- + s_timed_out = TRUE; + + /* Eat spurious WM_TIMER messages */ +! while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) + ; + if (idEvent == s_wait_timer) + s_wait_timer = 0; +*************** +*** 1707,1713 **** + static char_u k10[] = {K_SPECIAL, 'k', ';', 0}; + #endif + +! GetMessage(&msg, NULL, 0, 0); + + #ifdef FEAT_OLE + /* Look after OLE Automation commands */ +--- 1707,1713 ---- + static char_u k10[] = {K_SPECIAL, 'k', ';', 0}; + #endif + +! pGetMessage(&msg, NULL, 0, 0); + + #ifdef FEAT_OLE + /* Look after OLE Automation commands */ +*************** +*** 1718,1724 **** + { + /* Message can't be ours, forward it. Fixes problem with Ultramon + * 3.0.4 */ +! DispatchMessage(&msg); + } + else + { +--- 1718,1724 ---- + { + /* Message can't be ours, forward it. Fixes problem with Ultramon + * 3.0.4 */ +! pDispatchMessage(&msg); + } + else + { +*************** +*** 1749,1762 **** + if (msg.message == WM_USER) + { + MyTranslateMessage(&msg); +! DispatchMessage(&msg); + return; + } + #endif + + #ifdef MSWIN_FIND_REPLACE + /* Don't process messages used by the dialog */ +! if (s_findrep_hwnd != NULL && IsDialogMessage(s_findrep_hwnd, &msg)) + { + HandleMouseHide(msg.message, msg.lParam); + return; +--- 1749,1762 ---- + if (msg.message == WM_USER) + { + MyTranslateMessage(&msg); +! pDispatchMessage(&msg); + return; + } + #endif + + #ifdef MSWIN_FIND_REPLACE + /* Don't process messages used by the dialog */ +! if (s_findrep_hwnd != NULL && pIsDialogMessage(s_findrep_hwnd, &msg)) + { + HandleMouseHide(msg.message, msg.lParam); + return; +*************** +*** 1928,1934 **** + if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE, + NULL, NULL) == NULL) + #endif +! DispatchMessage(&msg); + } + + /* +--- 1928,1934 ---- + if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE, + NULL, NULL) == NULL) + #endif +! pDispatchMessage(&msg); + } + + /* +*************** +*** 1943,1949 **** + MSG msg; + + if (!s_busy_processing) +! while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) + && !vim_is_input_buf_full()) + process_message(); + } +--- 1943,1949 ---- + MSG msg; + + if (!s_busy_processing) +! while (pPeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) + && !vim_is_input_buf_full()) + process_message(); + } +*************** +*** 2019,2025 **** + KillTimer(NULL, s_wait_timer); + + /* Eat spurious WM_TIMER messages */ +! while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) + ; + s_wait_timer = 0; + } +--- 2019,2025 ---- + KillTimer(NULL, s_wait_timer); + + /* Eat spurious WM_TIMER messages */ +! while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) + ; + s_wait_timer = 0; + } +*** ../vim-7.3.276/src/os_mswin.c 2011-06-19 01:30:01.000000000 +0200 +--- src/os_mswin.c 2011-08-10 16:45:24.000000000 +0200 +*************** +*** 1856,1867 **** + { + MSG msg; + +! while (!*bUserAbort && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { +! if (!hDlgPrint || !IsDialogMessage(hDlgPrint, &msg)) + { + TranslateMessage(&msg); +! DispatchMessage(&msg); + } + } + return !*bUserAbort; +--- 1856,1867 ---- + { + MSG msg; + +! while (!*bUserAbort && pPeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { +! if (!hDlgPrint || !pIsDialogMessage(hDlgPrint, &msg)) + { + TranslateMessage(&msg); +! pDispatchMessage(&msg); + } + } + return !*bUserAbort; +*************** +*** 3132,3141 **** + { + MSG msg; + +! while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); +! DispatchMessage(&msg); + } + } + +--- 3132,3141 ---- + { + MSG msg; + +! while (pPeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); +! pDispatchMessage(&msg); + } + } + +*** ../vim-7.3.276/src/os_win32.c 2011-07-07 16:20:45.000000000 +0200 +--- src/os_win32.c 2011-08-10 16:54:50.000000000 +0200 +*************** +*** 152,157 **** +--- 152,165 ---- + # define wcsicmp(a, b) wcscmpi((a), (b)) + #endif + ++ /* Enable common dialogs input unicode from IME if posible. */ ++ #ifdef FEAT_MBYTE ++ LRESULT (WINAPI *pDispatchMessage)(LPMSG) = DispatchMessage; ++ BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage; ++ BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG) = IsDialogMessage; ++ BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT) = PeekMessage; ++ #endif ++ + #ifndef FEAT_GUI_W32 + /* Win32 Console handles for input and output */ + static HANDLE g_hConIn = INVALID_HANDLE_VALUE; +*************** +*** 3284,3293 **** + { + MSG msg; + +! if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); +! DispatchMessage(&msg); + } + if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) + break; +--- 3292,3301 ---- + { + MSG msg; + +! if (pPeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); +! pDispatchMessage(&msg); + } + if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) + break; +*** ../vim-7.3.276/src/os_win32.h 2011-05-05 18:31:54.000000000 +0200 +--- src/os_win32.h 2011-08-10 16:51:58.000000000 +0200 +*************** +*** 193,195 **** +--- 193,209 ---- + #else + # define vim_mkdir(x, y) mch_mkdir(x) + #endif ++ ++ /* Enable common dialogs input unicode from IME if posible. */ ++ #ifdef FEAT_MBYTE ++ /* The variables are defined in os_win32.c. */ ++ extern LRESULT (WINAPI *pDispatchMessage)(LPMSG); ++ extern BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT); ++ extern BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG); ++ extern BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT); ++ #else ++ # define pDispatchMessage DispatchMessage ++ # define pGetMessage GetMessage ++ # define pIsDialogMessage IsDialogMessage ++ # define pPeekMessage PeekMessage ++ #endif +*** ../vim-7.3.276/src/version.c 2011-08-10 16:31:18.000000000 +0200 +--- src/version.c 2011-08-10 17:06:55.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 277, + /**/ + +-- +Veni, Vidi, VW -- I came, I saw, I drove around in a little car. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.278 b/source/ap/vim/patches/7.3.278 new file mode 100644 index 00000000..60bc0ac8 --- /dev/null +++ b/source/ap/vim/patches/7.3.278 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.278 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.278 +Problem: Passing the file name to open in VisVim doesn't work. +Solution: Adjust the index and check for end of buffer. (Jiri Sedlak) +Files: src/VisVim/Commands.cpp + + +*** ../vim-7.3.277/src/VisVim/Commands.cpp 2010-08-15 21:57:27.000000000 +0200 +--- src/VisVim/Commands.cpp 2011-08-10 17:21:27.000000000 +0200 +*************** +*** 549,555 **** + if (g_bNewTabs) + { + sprintf(VimCmd, ":tab drop "); +! s = VimCmd + 11; + } + else + { +--- 549,555 ---- + if (g_bNewTabs) + { + sprintf(VimCmd, ":tab drop "); +! s = VimCmd + 10; + } + else + { +*************** +*** 557,564 **** + s = VimCmd + 6; + } + sprintf(FileNameTmp, "%S", (char *)FileName); +! for (p = FileNameTmp; *p != '\0' && s < FileNameTmp + MAX_OLE_STR - 4; +! ++p) + if (*p == '\\') + *s++ = '/'; + else +--- 557,563 ---- + s = VimCmd + 6; + } + sprintf(FileNameTmp, "%S", (char *)FileName); +! for (p = FileNameTmp; *p != '\0' && s < VimCmd + MAX_OLE_STR - 4; ++p) + if (*p == '\\') + *s++ = '/'; + else +*** ../vim-7.3.277/src/version.c 2011-08-10 17:07:56.000000000 +0200 +--- src/version.c 2011-08-10 17:25:20.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 278, + /**/ + +-- +ARTHUR: But if he was dying, he wouldn't bother to carve + "Aaaaarrrrrrggghhh". He'd just say it. +BROTHER MAYNARD: It's down there carved in stone. +GALAHAD: Perhaps he was dictating. + "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 /// diff --git a/source/ap/vim/patches/7.3.279 b/source/ap/vim/patches/7.3.279 new file mode 100644 index 00000000..6a8814b6 --- /dev/null +++ b/source/ap/vim/patches/7.3.279 @@ -0,0 +1,118 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.279 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.279 +Problem: With GTK, when gvim is full-screen and a tab is opened and using a + specific monitor configuration the window is too big. +Solution: Adjust the window size like on MS-Windows. (Yukihiro Nakadaira) +Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro + + +*** ../vim-7.3.278/src/gui.c 2011-06-26 04:48:56.000000000 +0200 +--- src/gui.c 2011-08-10 17:40:31.000000000 +0200 +*************** +*** 1407,1413 **** + if (!gui.shell_created) + return; + +! #ifdef MSWIN + /* If not setting to a user specified size and maximized, calculate the + * number of characters that fit in the maximized window. */ + if (!mustset && gui_mch_maximized()) +--- 1407,1413 ---- + if (!gui.shell_created) + return; + +! #if defined(MSWIN) || defined(FEAT_GUI_GTK) + /* If not setting to a user specified size and maximized, calculate the + * number of characters that fit in the maximized window. */ + if (!mustset && gui_mch_maximized()) +*** ../vim-7.3.278/src/gui_gtk_x11.c 2011-06-26 04:48:56.000000000 +0200 +--- src/gui_gtk_x11.c 2011-08-10 17:42:19.000000000 +0200 +*************** +*** 3900,3905 **** +--- 3900,3920 ---- + } + + /* ++ * Called when the font changed while the window is maximized. Compute the ++ * new Rows and Columns. This is like resizing the window. ++ */ ++ void ++ gui_mch_newfont() ++ { ++ int w, h; ++ ++ gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h); ++ w -= get_menu_tool_width(); ++ h -= get_menu_tool_height(); ++ gui_resize_shell(w, h); ++ } ++ ++ /* + * Set the windows size. + */ + void +*************** +*** 4409,4422 **** + + if (gui_mch_maximized()) + { +- int w, h; +- + /* Update lines and columns in accordance with the new font, keep the + * window maximized. */ +! gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h); +! w -= get_menu_tool_width(); +! h -= get_menu_tool_height(); +! gui_resize_shell(w, h); + } + else + { +--- 4424,4432 ---- + + if (gui_mch_maximized()) + { + /* Update lines and columns in accordance with the new font, keep the + * window maximized. */ +! gui_mch_newfont(); + } + else + { +*** ../vim-7.3.278/src/proto/gui_gtk_x11.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/gui_gtk_x11.pro 2011-08-10 17:42:29.000000000 +0200 +*************** +*** 20,25 **** +--- 20,26 ---- + void gui_mch_set_winpos __ARGS((int x, int y)); + int gui_mch_maximized __ARGS((void)); + void gui_mch_unmaximize __ARGS((void)); ++ void gui_mch_newfont __ARGS((void)); + void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction)); + void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h)); + void gui_mch_settitle __ARGS((char_u *title, char_u *icon)); +*** ../vim-7.3.278/src/version.c 2011-08-10 17:25:48.000000000 +0200 +--- src/version.c 2011-08-10 17:43:22.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 279, + /**/ + +-- +LAUNCELOT: Isn't there a St. Aaaaarrrrrrggghhh's in Cornwall? +ARTHUR: No, that's Saint Ives. + "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 /// diff --git a/source/ap/vim/patches/7.3.280 b/source/ap/vim/patches/7.3.280 new file mode 100644 index 00000000..1c1387ae --- /dev/null +++ b/source/ap/vim/patches/7.3.280 @@ -0,0 +1,181 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.280 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.280 +Problem: ":lmake" does not update the quickfix window title. +Solution: Update the title. (Lech Lorens) +Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok + + +*** ../vim-7.3.279/src/quickfix.c 2011-08-10 13:21:30.000000000 +0200 +--- src/quickfix.c 2011-08-10 18:09:19.000000000 +0200 +*************** +*** 126,131 **** +--- 126,132 ---- + static win_T *qf_find_win __ARGS((qf_info_T *qi)); + static buf_T *qf_find_buf __ARGS((qf_info_T *qi)); + static void qf_update_buffer __ARGS((qf_info_T *qi)); ++ static void qf_set_title __ARGS((qf_info_T *qi)); + static void qf_fill_buffer __ARGS((qf_info_T *qi)); + #endif + static char_u *get_mef_name __ARGS((void)); +*************** +*** 2388,2395 **** + qf_fill_buffer(qi); + + if (qi->qf_lists[qi->qf_curlist].qf_title != NULL) +! set_internal_string_var((char_u *)"w:quickfix_title", +! qi->qf_lists[qi->qf_curlist].qf_title); + + curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index; + curwin->w_cursor.col = 0; +--- 2389,2395 ---- + qf_fill_buffer(qi); + + if (qi->qf_lists[qi->qf_curlist].qf_title != NULL) +! qf_set_title(qi); + + curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index; + curwin->w_cursor.col = 0; +*************** +*** 2526,2531 **** +--- 2526,2533 ---- + qf_info_T *qi; + { + buf_T *buf; ++ win_T *win; ++ win_T *curwin_save; + aco_save_T aco; + + /* Check if a buffer for the quickfix list exists. Update it. */ +*************** +*** 2537,2542 **** +--- 2539,2554 ---- + + qf_fill_buffer(qi); + ++ if (qi->qf_lists[qi->qf_curlist].qf_title != NULL ++ && (win = qf_find_win(qi)) != NULL) ++ { ++ curwin_save = curwin; ++ curwin = win; ++ qf_set_title(qi); ++ curwin = curwin_save; ++ ++ } ++ + /* restore curwin/curbuf and a few other things */ + aucmd_restbuf(&aco); + +*************** +*** 2544,2549 **** +--- 2556,2569 ---- + } + } + ++ static void ++ qf_set_title(qi) ++ qf_info_T *qi; ++ { ++ set_internal_string_var((char_u *)"w:quickfix_title", ++ qi->qf_lists[qi->qf_curlist].qf_title); ++ } ++ + /* + * Fill current buffer with quickfix errors, replacing any previous contents. + * curbuf must be the quickfix buffer! +*** ../vim-7.3.279/src/testdir/test10.in 2011-08-10 13:21:30.000000000 +0200 +--- src/testdir/test10.in 2011-08-10 18:28:31.000000000 +0200 +*************** +*** 5,13 **** + :" Also test a BOM is ignored. + :so mbyte.vim + :set encoding=utf-8 +! :/start of errorfile/,/end of errorfile/w! Xerrorfile + :/start of testfile/,/end of testfile/w! Xtestfile +! :cf Xerrorfile + rA + :cn + rB +--- 5,20 ---- + :" Also test a BOM is ignored. + :so mbyte.vim + :set encoding=utf-8 +! :7/start of errorfile/,/end of errorfile/w! Xerrorfile1 +! :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2 + :/start of testfile/,/end of testfile/w! Xtestfile +! :cf Xerrorfile2 +! :clast +! :copen +! :let a=w:quickfix_title +! :wincmd p +! gR=a
+! :cf Xerrorfile1 + rA + :cn + rB +*************** +*** 17,22 **** +--- 24,34 ---- + rD + :cn + rE ++ :cn ++ :wincmd w ++ :let a=w:quickfix_title ++ :wincmd p ++ gR=a
+ :w! test.out " Write contents of this file + :qa! + ENDTEST +*************** +*** 33,38 **** +--- 45,52 ---- + "Xtestfile", linenr 19: yet another problem + + Does anyone know what is the problem and how to correction it? ++ "Xtestfile", line 21 col 9: What is the title of the quickfix window? ++ "Xtestfile", line 22 col 9: What is the title of the quickfix window? + end of errorfile + + start of testfile +*** ../vim-7.3.279/src/testdir/test10.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test10.ok 2011-08-10 18:03:53.000000000 +0200 +*************** +*** 18,23 **** + line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + end of testfile +--- 18,23 ---- + line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 21 :cf Xerrorfile1xxxxxxxxxxxxxxx +! line 22 :cf Xerrorfile2xxxxxxxxxxxxxxx + end of testfile +*** ../vim-7.3.279/src/version.c 2011-08-10 17:44:41.000000000 +0200 +--- src/version.c 2011-08-10 18:35:52.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 280, + /**/ + +-- +"When I die, I want a tombstone that says "GAME OVER" - Ton Richters + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.281 b/source/ap/vim/patches/7.3.281 new file mode 100644 index 00000000..f90e95e1 --- /dev/null +++ b/source/ap/vim/patches/7.3.281 @@ -0,0 +1,134 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.281 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.281 +Problem: After using "expand('%:8')" the buffer name is changed. +Solution: Make a copy of the file name before shortening it. +Files: src/eval.c + + +*** ../vim-7.3.280/src/eval.c 2011-08-10 12:38:02.000000000 +0200 +--- src/eval.c 2011-08-17 15:12:39.000000000 +0200 +*************** +*** 23205,23210 **** +--- 23205,23211 ---- + int c; + int has_fullname = 0; + #ifdef WIN3264 ++ char_u *fname_start = *fnamep; + int has_shortname = 0; + #endif + +*************** +*** 23379,23402 **** + } + + #ifdef WIN3264 +! /* Check shortname after we have done 'heads' and before we do 'tails' + */ + if (has_shortname) + { +! pbuf = NULL; +! /* Copy the string if it is shortened by :h */ +! if (*fnamelen < (int)STRLEN(*fnamep)) + { + p = vim_strnsave(*fnamep, *fnamelen); +! if (p == 0) + return -1; + vim_free(*bufp); + *bufp = *fnamep = p; + } + + /* Split into two implementations - makes it easier. First is where +! * there isn't a full name already, second is where there is. +! */ + if (!has_fullname && !vim_isAbsName(*fnamep)) + { + if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL) +--- 23380,23404 ---- + } + + #ifdef WIN3264 +! /* +! * Handle ":8" after we have done 'heads' and before we do 'tails'. + */ + if (has_shortname) + { +! /* Copy the string if it is shortened by :h and when it wasn't copied +! * yet, because we are going to change it in place. Avoids changing +! * the buffer name for "%:8". */ +! if (*fnamelen < (int)STRLEN(*fnamep) || *fnamep == fname_start) + { + p = vim_strnsave(*fnamep, *fnamelen); +! if (p == NULL) + return -1; + vim_free(*bufp); + *bufp = *fnamep = p; + } + + /* Split into two implementations - makes it easier. First is where +! * there isn't a full name already, second is where there is. */ + if (!has_fullname && !vim_isAbsName(*fnamep)) + { + if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL) +*************** +*** 23404,23421 **** + } + else + { +! int l; + +! /* Simple case, already have the full-name + * Nearly always shorter, so try first time. */ +- l = *fnamelen; + if (get_short_pathname(fnamep, bufp, &l) == FAIL) + return -1; + + if (l == 0) + { +! /* Couldn't find the filename.. search the paths. +! */ + l = *fnamelen; + if (shortpath_for_invalid_fname(fnamep, bufp, &l) == FAIL) + return -1; +--- 23406,23421 ---- + } + else + { +! int l = *fnamelen; + +! /* Simple case, already have the full-name. + * Nearly always shorter, so try first time. */ + if (get_short_pathname(fnamep, bufp, &l) == FAIL) + return -1; + + if (l == 0) + { +! /* Couldn't find the filename, search the paths. */ + l = *fnamelen; + if (shortpath_for_invalid_fname(fnamep, bufp, &l) == FAIL) + return -1; +*** ../vim-7.3.280/src/version.c 2011-08-10 18:36:49.000000000 +0200 +--- src/version.c 2011-08-17 15:21:41.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 281, + /**/ + +-- +Kisses may last for as much as, but no more than, five minutes. + [real standing law in Iowa, 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 /// diff --git a/source/ap/vim/patches/7.3.282 b/source/ap/vim/patches/7.3.282 new file mode 100644 index 00000000..dcd16806 --- /dev/null +++ b/source/ap/vim/patches/7.3.282 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.282 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.282 +Problem: When using input() and :echo in a loop the displayed text is + incorrect. (Benjamin Fritz) +Solution: Only restore the cursor position when there is a command line. + (Ben Schmidt) +Files: src/ex_getln.c + + +*** ../vim-7.3.281/src/ex_getln.c 2011-07-27 17:58:42.000000000 +0200 +--- src/ex_getln.c 2011-08-17 15:57:39.000000000 +0200 +*************** +*** 1969,1976 **** + # endif + s = getcmdline(firstc, 1L, 0); + restore_cmdline(&save_ccline); +! /* Restore msg_col, the prompt from input() may have changed it. */ +! msg_col = msg_col_save; + + return s; + } +--- 1969,1980 ---- + # endif + s = getcmdline(firstc, 1L, 0); + restore_cmdline(&save_ccline); +! /* Restore msg_col, the prompt from input() may have changed it. +! * But only if called recursively and the commandline is therefore being +! * restored to an old one; if not, the input() prompt stays on the screen, +! * so we need its modified msg_col left intact. */ +! if (ccline.cmdbuff != NULL) +! msg_col = msg_col_save; + + return s; + } +*** ../vim-7.3.281/src/version.c 2011-08-17 15:23:16.000000000 +0200 +--- src/version.c 2011-08-17 16:24:04.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 282, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.283 b/source/ap/vim/patches/7.3.283 new file mode 100644 index 00000000..1a3a6358 --- /dev/null +++ b/source/ap/vim/patches/7.3.283 @@ -0,0 +1,114 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.283 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.283 +Problem: An expression mapping with a multi-byte character containing a + 0x80 byte gets messed up. (ZyX) +Solution: Unescape the expression before evaluating it (Yukihiro Nakadaira) +Files: src/getchar.c + + +*** ../vim-7.3.282/src/getchar.c 2011-04-28 17:30:05.000000000 +0200 +--- src/getchar.c 2011-08-17 17:04:38.000000000 +0200 +*************** +*** 3262,3270 **** + validate_maphash(); + + /* +! * find end of keys and skip CTRL-Vs (and backslashes) in it + * Accept backslash like CTRL-V when 'cpoptions' does not contain 'B'. +! * with :unmap white space is included in the keys, no argument possible + */ + p = keys; + do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL); +--- 3262,3270 ---- + validate_maphash(); + + /* +! * Find end of keys and skip CTRL-Vs (and backslashes) in it. + * Accept backslash like CTRL-V when 'cpoptions' does not contain 'B'. +! * with :unmap white space is included in the keys, no argument possible. + */ + p = keys; + do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL); +*************** +*** 4506,4517 **** +--- 4506,4528 ---- + { + char_u *res; + char_u *p; ++ char_u *expr; + char_u *save_cmd; + pos_T save_cursor; + ++ /* Remove escaping of CSI, because "str" is in a format to be used as ++ * typeahead. */ ++ expr = vim_strsave(str); ++ if (expr == NULL) ++ return NULL; ++ vim_unescape_csi(expr); ++ + save_cmd = save_cmdline_alloc(); + if (save_cmd == NULL) ++ { ++ vim_free(expr); + return NULL; ++ } + + /* Forbid changing text or using ":normal" to avoid most of the bad side + * effects. Also restore the cursor position. */ +*************** +*** 4521,4527 **** + #endif + set_vim_var_char(c); /* set v:char to the typed character */ + save_cursor = curwin->w_cursor; +! p = eval_to_string(str, NULL, FALSE); + --textlock; + #ifdef FEAT_EX_EXTRA + --ex_normal_lock; +--- 4532,4538 ---- + #endif + set_vim_var_char(c); /* set v:char to the typed character */ + save_cursor = curwin->w_cursor; +! p = eval_to_string(expr, NULL, FALSE); + --textlock; + #ifdef FEAT_EX_EXTRA + --ex_normal_lock; +*************** +*** 4529,4536 **** +--- 4540,4550 ---- + curwin->w_cursor = save_cursor; + + restore_cmdline_alloc(save_cmd); ++ vim_free(expr); ++ + if (p == NULL) + return NULL; ++ /* Escape CSI in the result to be able to use the string as typeahead. */ + res = vim_strsave_escape_csi(p); + vim_free(p); + +*** ../vim-7.3.282/src/version.c 2011-08-17 16:25:43.000000000 +0200 +--- src/version.c 2011-08-17 17:17:03.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 283, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.284 b/source/ap/vim/patches/7.3.284 new file mode 100644 index 00000000..c621ced6 --- /dev/null +++ b/source/ap/vim/patches/7.3.284 @@ -0,0 +1,211 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.284 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.284 +Problem: The str2special() function doesn't handle multi-byte characters + properly. +Solution: Recognize multi-byte characters. (partly by Vladimir Vichniakov) +Files: src/getchar.c, src/message.c, src/misc2.c + + +*** ../vim-7.3.283/src/getchar.c 2011-08-17 17:18:14.000000000 +0200 +--- src/getchar.c 2011-08-17 20:11:58.000000000 +0200 +*************** +*** 3964,3970 **** + if (*mp->m_str == NUL) + msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8)); + else +! msg_outtrans_special(mp->m_str, FALSE); + #ifdef FEAT_EVAL + if (p_verbose > 0) + last_set_msg(mp->m_script_ID); +--- 3964,3980 ---- + if (*mp->m_str == NUL) + msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8)); + else +! { +! /* Remove escaping of CSI, because "m_str" is in a format to be used +! * as typeahead. */ +! char_u *s = vim_strsave(mp->m_str); +! if (s != NULL) +! { +! vim_unescape_csi(s); +! msg_outtrans_special(s, FALSE); +! vim_free(s); +! } +! } + #ifdef FEAT_EVAL + if (p_verbose > 0) + last_set_msg(mp->m_script_ID); +*** ../vim-7.3.283/src/message.c 2011-03-22 13:07:19.000000000 +0100 +--- src/message.c 2011-08-17 18:40:10.000000000 +0200 +*************** +*** 1547,1562 **** + if (IS_SPECIAL(c) || modifiers) /* special key */ + special = TRUE; + } +- *sp = str + 1; + + #ifdef FEAT_MBYTE +! /* For multi-byte characters check for an illegal byte. */ +! if (has_mbyte && MB_BYTE2LEN(*str) > (*mb_ptr2len)(str)) + { +! transchar_nonprint(buf, c); +! return buf; + } + #endif + + /* Make unprintable characters in <> form, also <M-Space> and <Tab>. + * Use <Space> only for lhs of a mapping. */ +--- 1547,1573 ---- + if (IS_SPECIAL(c) || modifiers) /* special key */ + special = TRUE; + } + + #ifdef FEAT_MBYTE +! if (has_mbyte && !IS_SPECIAL(c)) + { +! int len = (*mb_ptr2len)(str); +! +! /* For multi-byte characters check for an illegal byte. */ +! if (has_mbyte && MB_BYTE2LEN(*str) > len) +! { +! transchar_nonprint(buf, c); +! *sp = str + 1; +! return buf; +! } +! /* Since 'special' is TRUE the multi-byte character 'c' will be +! * processed by get_special_key_name() */ +! c = (*mb_ptr2char)(str); +! *sp = str + len; + } ++ else + #endif ++ *sp = str + 1; + + /* Make unprintable characters in <> form, also <M-Space> and <Tab>. + * Use <Space> only for lhs of a mapping. */ +*** ../vim-7.3.283/src/misc2.c 2011-07-27 17:31:42.000000000 +0200 +--- src/misc2.c 2011-08-17 20:27:30.000000000 +0200 +*************** +*** 2754,2759 **** +--- 2754,2760 ---- + int bit; + int key; + unsigned long n; ++ int l; + + src = *srcp; + if (src[0] != '<') +*************** +*** 2766,2773 **** + if (*bp == '-') + { + last_dash = bp; +! if (bp[1] != NUL && bp[2] == '>') +! ++bp; /* anything accepted, like <C-?> */ + } + if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3]) + bp += 3; /* skip t_xx, xx may be '-' or '>' */ +--- 2767,2783 ---- + if (*bp == '-') + { + last_dash = bp; +! if (bp[1] != NUL) +! { +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! l = mb_ptr2len(bp + 1); +! else +! #endif +! l = 1; +! if (bp[l + 1] == '>') +! bp += l; /* anything accepted, like <C-?> */ +! } + } + if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3]) + bp += 3; /* skip t_xx, xx may be '-' or '>' */ +*************** +*** 2777,2791 **** + { + end_of_name = bp + 1; + +- if (STRNICMP(src + 1, "char-", 5) == 0 && VIM_ISDIGIT(src[6])) +- { +- /* <Char-123> or <Char-033> or <Char-0x33> */ +- vim_str2nr(src + 6, NULL, NULL, TRUE, TRUE, NULL, &n); +- *modp = 0; +- *srcp = end_of_name; +- return (int)n; +- } +- + /* Which modifiers are given? */ + modifiers = 0x0; + for (bp = src + 1; bp < last_dash; bp++) +--- 2787,2792 ---- +*************** +*** 2804,2814 **** + */ + if (bp >= last_dash) + { + /* + * Modifier with single letter, or special key name. + */ +! if (modifiers != 0 && last_dash[2] == '>') +! key = last_dash[1]; + else + { + key = get_special_key_code(last_dash + 1); +--- 2805,2831 ---- + */ + if (bp >= last_dash) + { ++ if (STRNICMP(last_dash + 1, "char-", 5) == 0 ++ && VIM_ISDIGIT(last_dash[6])) ++ { ++ /* <Char-123> or <Char-033> or <Char-0x33> */ ++ vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n); ++ *modp = modifiers; ++ *srcp = end_of_name; ++ return (int)n; ++ } ++ + /* + * Modifier with single letter, or special key name. + */ +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! l = mb_ptr2len(last_dash + 1); +! else +! #endif +! l = 1; +! if (modifiers != 0 && last_dash[l + 1] == '>') +! key = PTR2CHAR(last_dash + 1); + else + { + key = get_special_key_code(last_dash + 1); +*** ../vim-7.3.283/src/version.c 2011-08-17 17:18:14.000000000 +0200 +--- src/version.c 2011-08-17 20:27:47.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 284, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.285 b/source/ap/vim/patches/7.3.285 new file mode 100644 index 00000000..24be28bc --- /dev/null +++ b/source/ap/vim/patches/7.3.285 @@ -0,0 +1,144 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.285 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.285 (after 7.3.284) +Problem: Mapping <Char-123> no longer works. +Solution: Properly check for "char-". Add a test for it. +Files: src/misc2.c, src/testdir/test75.in, src/testdir/test75.ok + + +*** ../vim-7.3.284/src/misc2.c 2011-08-17 20:33:18.000000000 +0200 +--- src/misc2.c 2011-08-19 22:08:37.000000000 +0200 +*************** +*** 2781,2786 **** +--- 2781,2792 ---- + } + if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3]) + bp += 3; /* skip t_xx, xx may be '-' or '>' */ ++ else if (STRNICMP(bp, "char-", 5) == 0) ++ { ++ vim_str2nr(bp + 5, NULL, &l, TRUE, TRUE, NULL, NULL); ++ bp += l + 5; ++ break; ++ } + } + + if (*bp == '>') /* found matching '>' */ +*************** +*** 2810,2836 **** + { + /* <Char-123> or <Char-033> or <Char-0x33> */ + vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n); +! *modp = modifiers; +! *srcp = end_of_name; +! return (int)n; + } +- +- /* +- * Modifier with single letter, or special key name. +- */ +- #ifdef FEAT_MBYTE +- if (has_mbyte) +- l = mb_ptr2len(last_dash + 1); +- else +- #endif +- l = 1; +- if (modifiers != 0 && last_dash[l + 1] == '>') +- key = PTR2CHAR(last_dash + 1); + else + { +! key = get_special_key_code(last_dash + 1); +! if (!keep_x_key) +! key = handle_x_keys(key); + } + + /* +--- 2816,2842 ---- + { + /* <Char-123> or <Char-033> or <Char-0x33> */ + vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n); +! key = (int)n; + } + else + { +! /* +! * Modifier with single letter, or special key name. +! */ +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! l = mb_ptr2len(last_dash + 1); +! else +! #endif +! l = 1; +! if (modifiers != 0 && last_dash[l + 1] == '>') +! key = PTR2CHAR(last_dash + 1); +! else +! { +! key = get_special_key_code(last_dash + 1); +! if (!keep_x_key) +! key = handle_x_keys(key); +! } + } + + /* +*** ../vim-7.3.284/src/testdir/test75.in 2010-10-20 21:22:17.000000000 +0200 +--- src/testdir/test75.in 2011-08-19 22:05:13.000000000 +0200 +*************** +*** 2,7 **** +--- 2,8 ---- + + STARTTEST + :so small.vim ++ :set cpo-=< + :" Test maparg() with a string result + :map foo<C-V> is<F4>foo + :vnoremap <script> <buffer> <expr> <silent> bar isbar +*************** +*** 9,14 **** +--- 10,20 ---- + :call append('$', string(maparg('foo<C-V>', '', 0, 1))) + :call append('$', string(maparg('bar', '', 0, 1))) + :" ++ :map abc x<char-114>x ++ :call append('$', maparg('abc')) ++ :map abc y<S-char-114>y ++ :call append('$', maparg('abc')) ++ :" + :/^eof/+1,$w! test.out + :qa! + ENDTEST +*** ../vim-7.3.284/src/testdir/test75.ok 2010-10-20 21:22:17.000000000 +0200 +--- src/testdir/test75.ok 2011-08-19 21:53:26.000000000 +0200 +*************** +*** 1,3 **** +--- 1,5 ---- + is<F4>foo + {'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'expr': 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0} + {'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'expr': 1, 'sid': 0, 'rhs': 'isbar', 'buffer': 1} ++ xrx ++ yRy +*** ../vim-7.3.284/src/version.c 2011-08-17 20:33:18.000000000 +0200 +--- src/version.c 2011-08-19 22:15:22.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 285, + /**/ + + +-- +No man may purchase alcohol without written consent from his wife. + [real standing law in Pennsylvania, 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 /// diff --git a/source/ap/vim/patches/7.3.286 b/source/ap/vim/patches/7.3.286 new file mode 100644 index 00000000..308d5105 --- /dev/null +++ b/source/ap/vim/patches/7.3.286 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.286 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.286 +Problem: Crash when using "zd" on a large number of folds. (Sam King) +Solution: Recompute pointer after reallocating array. Move fewer entries + when making room. +Files: src/fold.c + + +*** ../vim-7.3.285/src/fold.c 2010-08-15 21:57:27.000000000 +0200 +--- src/fold.c 2011-08-26 16:03:56.000000000 +0200 +*************** +*** 1469,1479 **** + } + else + { +! /* move nested folds one level up, to overwrite the fold that is + * deleted. */ + moved = fp->fd_nested.ga_len; + if (ga_grow(gap, (int)(moved - 1)) == OK) + { + /* adjust fd_top and fd_flags for the moved folds */ + nfp = (fold_T *)fp->fd_nested.ga_data; + for (i = 0; i < moved; ++i) +--- 1469,1482 ---- + } + else + { +! /* Move nested folds one level up, to overwrite the fold that is + * deleted. */ + moved = fp->fd_nested.ga_len; + if (ga_grow(gap, (int)(moved - 1)) == OK) + { ++ /* Get "fp" again, the array may have been reallocated. */ ++ fp = (fold_T *)gap->ga_data + idx; ++ + /* adjust fd_top and fd_flags for the moved folds */ + nfp = (fold_T *)fp->fd_nested.ga_data; + for (i = 0; i < moved; ++i) +*************** +*** 1486,1494 **** + } + + /* move the existing folds down to make room */ +! if (idx < gap->ga_len) + mch_memmove(fp + moved, fp + 1, +! sizeof(fold_T) * (gap->ga_len - idx)); + /* move the contained folds one level up */ + mch_memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved)); + vim_free(nfp); +--- 1489,1497 ---- + } + + /* move the existing folds down to make room */ +! if (idx + 1 < gap->ga_len) + mch_memmove(fp + moved, fp + 1, +! sizeof(fold_T) * (gap->ga_len - (idx + 1))); + /* move the contained folds one level up */ + mch_memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved)); + vim_free(nfp); +*** ../vim-7.3.285/src/version.c 2011-08-19 22:28:58.000000000 +0200 +--- src/version.c 2011-08-26 16:07:59.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 286, + /**/ + +-- +To keep milk from turning sour: Keep it in the cow. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.287 b/source/ap/vim/patches/7.3.287 new file mode 100644 index 00000000..5c6da035 --- /dev/null +++ b/source/ap/vim/patches/7.3.287 @@ -0,0 +1,100 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.287 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.287 +Problem: Can't compile with MSVC and tiny options. +Solution: Move variables and #ifdefs. (Sergey Khorev) +Files: src/os_win32.c + + +*** ../vim-7.3.286/src/os_win32.c 2011-08-10 17:07:56.000000000 +0200 +--- src/os_win32.c 2011-08-27 15:07:28.000000000 +0200 +*************** +*** 3419,3426 **** + { + DWORD availableBytes = 0; + DWORD i; +- int c; +- char_u *p; + int ret; + DWORD len; + DWORD toRead; +--- 3419,3424 ---- +*************** +*** 3479,3484 **** +--- 3477,3484 ---- + else if (has_mbyte) + { + int l; ++ int c; ++ char_u *p; + + len += *buffer_off; + buffer[len] = NUL; +*************** +*** 3558,3566 **** + int noread_cnt = 0; + garray_T ga; + int delay = 1; +- # ifdef FEAT_MBYTE + DWORD buffer_off = 0; /* valid bytes in buffer[] */ +- # endif + + SECURITY_ATTRIBUTES saAttr; + +--- 3558,3564 ---- +*************** +*** 3777,3790 **** + + if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) + { +! dump_pipe(options, g_hChildStd_OUT_Rd, +! &ga, buffer, &buffer_off); + break; + } + + ++noread_cnt; +! dump_pipe(options, g_hChildStd_OUT_Rd, +! &ga, buffer, &buffer_off); + + /* We start waiting for a very short time and then increase it, so + * that we respond quickly when the process is quick, and don't +--- 3775,3786 ---- + + if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) + { +! dump_pipe(options, g_hChildStd_OUT_Rd, &ga, buffer, &buffer_off); + break; + } + + ++noread_cnt; +! dump_pipe(options, g_hChildStd_OUT_Rd, &ga, buffer, &buffer_off); + + /* We start waiting for a very short time and then increase it, so + * that we respond quickly when the process is quick, and don't +*** ../vim-7.3.286/src/version.c 2011-08-26 16:12:55.000000000 +0200 +--- src/version.c 2011-08-27 15:08:27.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 287, + /**/ + +-- +SUPERIMPOSE "England AD 787". After a few more seconds we hear hoofbeats in +the distance. They come slowly closer. Then out of the mist comes KING +ARTHUR followed by a SERVANT who is banging two half coconuts together. + "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 /// diff --git a/source/ap/vim/patches/7.3.288 b/source/ap/vim/patches/7.3.288 new file mode 100644 index 00000000..d1f66268 --- /dev/null +++ b/source/ap/vim/patches/7.3.288 @@ -0,0 +1,76 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.288 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.288 +Problem: has('python') may give an error message for not being able to load + the library after using python3. +Solution: Only give the error when the verbose argument is true. +Files: src/if_python.c, src/if_python3.c + + +*** ../vim-7.3.287/src/if_python.c 2011-06-19 00:27:46.000000000 +0200 +--- src/if_python.c 2011-08-21 17:03:52.000000000 +0200 +*************** +*** 368,374 **** + * standard C extension libraries of one or both python versions. */ + if (python3_loaded()) + { +! EMSG(_("E836: This Vim cannot execute :python after using :py3")); + return FAIL; + } + #endif +--- 368,375 ---- + * standard C extension libraries of one or both python versions. */ + if (python3_loaded()) + { +! if (verbose) +! EMSG(_("E836: This Vim cannot execute :python after using :py3")); + return FAIL; + } + #endif +*** ../vim-7.3.287/src/if_python3.c 2011-07-15 15:54:39.000000000 +0200 +--- src/if_python3.c 2011-08-21 17:05:19.000000000 +0200 +*************** +*** 367,373 **** + * standard C extension libraries of one or both python versions. */ + if (python_loaded()) + { +! EMSG(_("E837: This Vim cannot execute :py3 after using :python")); + return FAIL; + } + # endif +--- 367,374 ---- + * standard C extension libraries of one or both python versions. */ + if (python_loaded()) + { +! if (verbose) +! EMSG(_("E837: This Vim cannot execute :py3 after using :python")); + return FAIL; + } + # endif +*** ../vim-7.3.287/src/version.c 2011-08-27 15:10:00.000000000 +0200 +--- src/version.c 2011-08-28 15:59:11.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 288, + /**/ + +-- +FIRST SOLDIER: So they wouldn't be able to bring a coconut back anyway. +SECOND SOLDIER: Wait a minute! Suppose two swallows carried it together? +FIRST SOLDIER: No, they'd have to have it on a line. + "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 /// diff --git a/source/ap/vim/patches/7.3.289 b/source/ap/vim/patches/7.3.289 new file mode 100644 index 00000000..30258e42 --- /dev/null +++ b/source/ap/vim/patches/7.3.289 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.289 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.289 +Problem: Complete function isn't called when the leader changed. +Solution: Call ins_compl_restart() when the leader changed. (Taro Muraoka) +Files: src/edit.c + + +*** ../vim-7.3.288/src/edit.c 2011-05-19 17:25:36.000000000 +0200 +--- src/edit.c 2011-08-28 15:53:47.000000000 +0200 +*************** +*** 3367,3372 **** +--- 3367,3381 ---- + ins_bytes(compl_leader + ins_compl_len()); + compl_used_match = FALSE; + ++ #ifdef FEAT_COMPL_FUNC ++ /* ++ * To call eval 'completefunc' when leader is changed, restart completion ++ * every time. ++ */ ++ if (ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI) ++ ins_compl_restart(); ++ #endif ++ + if (compl_started) + ins_compl_set_original_text(compl_leader); + else +*** ../vim-7.3.288/src/version.c 2011-08-28 16:00:14.000000000 +0200 +--- src/version.c 2011-08-28 16:01:22.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 289, + /**/ + +-- +THEOREM: VI is perfect. +PROOF: VI in roman numerals is 6. The natural numbers < 6 which divide 6 are +1, 2, and 3. 1+2+3 = 6. So 6 is a perfect number. Therefore, VI is perfect. +QED + -- Arthur Tateishi + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.290 b/source/ap/vim/patches/7.3.290 new file mode 100644 index 00000000..b50cacfc --- /dev/null +++ b/source/ap/vim/patches/7.3.290 @@ -0,0 +1,75 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.290 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.290 +Problem: When a BufWriteCmd autocommand resets 'modified' this doesn't + change older buffer states to be marked as 'modified' like + ":write" does. (Yukihiro Nakadaira) +Solution: When the BufWriteCmd resets 'modified' then adjust the undo + information like ":write" does. +Files: src/fileio.c + + +*** ../vim-7.3.289/src/fileio.c 2011-07-20 18:29:33.000000000 +0200 +--- src/fileio.c 2011-08-29 21:49:27.000000000 +0200 +*************** +*** 3342,3349 **** + } + else if (reset_changed && whole) + { +! if (!(did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD, +! sfname, sfname, FALSE, curbuf, eap))) + { + #ifdef FEAT_QUICKFIX + if (overwriting && bt_nofile(curbuf)) +--- 3342,3363 ---- + } + else if (reset_changed && whole) + { +! int was_changed = curbufIsChanged(); +! +! did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD, +! sfname, sfname, FALSE, curbuf, eap); +! if (did_cmd) +! { +! if (was_changed && !curbufIsChanged()) +! { +! /* Written everything correctly and BufWriteCmd has reset +! * 'modified': Correct the undo information so that an +! * undo now sets 'modified'. */ +! u_unchanged(curbuf); +! u_update_save_nr(curbuf); +! } +! } +! else + { + #ifdef FEAT_QUICKFIX + if (overwriting && bt_nofile(curbuf)) +*** ../vim-7.3.289/src/version.c 2011-08-28 16:02:23.000000000 +0200 +--- src/version.c 2011-09-02 11:37:25.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 290, + /**/ + +-- +OLD WOMAN: Well, how did you become king, then? +ARTHUR: The Lady of the Lake, her arm clad in the purest shimmering samite, + held Excalibur aloft from the bosom of the water to signify by Divine + Providence ... that I, Arthur, was to carry Excalibur ... That is + why I am your king! + "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 /// diff --git a/source/ap/vim/patches/7.3.291 b/source/ap/vim/patches/7.3.291 new file mode 100644 index 00000000..1d394e4c --- /dev/null +++ b/source/ap/vim/patches/7.3.291 @@ -0,0 +1,125 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.291 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.291 +Problem: Configure doesn't work properly with Python3. +Solution: Put -ldl before $LDFLAGS. Add PY3_NO_RTLD_GLOBAL. (Roland + Puntaier) +Files: src/config.h.in, src/auto/configure, src/configure.in + + +*** ../vim-7.3.290/src/config.h.in 2010-10-27 16:49:41.000000000 +0200 +--- src/config.h.in 2011-09-02 11:22:21.000000000 +0200 +*************** +*** 346,351 **** +--- 346,354 ---- + /* Define if dynamic python does not require RTLD_GLOBAL */ + #undef PY_NO_RTLD_GLOBAL + ++ /* Define if dynamic python3 does not require RTLD_GLOBAL */ ++ #undef PY3_NO_RTLD_GLOBAL ++ + /* Define if you want to include the Ruby interpreter. */ + #undef FEAT_RUBY + +*** ../vim-7.3.290/src/auto/configure 2011-07-15 13:09:46.000000000 +0200 +--- src/auto/configure 2011-09-02 11:23:15.000000000 +0200 +*************** +*** 5733,5739 **** + cflags_save=$CFLAGS + CFLAGS="$CFLAGS $PYTHON_CFLAGS" + ldflags_save=$LDFLAGS +! LDFLAGS="$LDFLAGS -ldl" + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +--- 5733,5739 ---- + cflags_save=$CFLAGS + CFLAGS="$CFLAGS $PYTHON_CFLAGS" + ldflags_save=$LDFLAGS +! LDFLAGS="-ldl $LDFLAGS" + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +*************** +*** 5798,5804 **** + cflags_save=$CFLAGS + CFLAGS="$CFLAGS $PYTHON3_CFLAGS" + ldflags_save=$LDFLAGS +! LDFLAGS="$LDFLAGS -ldl" + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +--- 5798,5804 ---- + cflags_save=$CFLAGS + CFLAGS="$CFLAGS $PYTHON3_CFLAGS" + ldflags_save=$LDFLAGS +! LDFLAGS="-ldl $LDFLAGS" + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +*** ../vim-7.3.290/src/configure.in 2011-07-15 13:09:46.000000000 +0200 +--- src/configure.in 2011-09-02 11:19:51.000000000 +0200 +*************** +*** 1161,1167 **** + cflags_save=$CFLAGS + CFLAGS="$CFLAGS $PYTHON_CFLAGS" + ldflags_save=$LDFLAGS +! LDFLAGS="$LDFLAGS -ldl" + AC_RUN_IFELSE([ + #include <dlfcn.h> + /* If this program fails, then RTLD_GLOBAL is needed. +--- 1161,1168 ---- + cflags_save=$CFLAGS + CFLAGS="$CFLAGS $PYTHON_CFLAGS" + ldflags_save=$LDFLAGS +! dnl -ldl must go first to make this work on Archlinux (Roland Puntaier) +! LDFLAGS="-ldl $LDFLAGS" + AC_RUN_IFELSE([ + #include <dlfcn.h> + /* If this program fails, then RTLD_GLOBAL is needed. +*************** +*** 1205,1211 **** + cflags_save=$CFLAGS + CFLAGS="$CFLAGS $PYTHON3_CFLAGS" + ldflags_save=$LDFLAGS +! LDFLAGS="$LDFLAGS -ldl" + AC_RUN_IFELSE([ + #include <dlfcn.h> + #include <wchar.h> +--- 1206,1213 ---- + cflags_save=$CFLAGS + CFLAGS="$CFLAGS $PYTHON3_CFLAGS" + ldflags_save=$LDFLAGS +! dnl -ldl must go first to make this work on Archlinux (Roland Puntaier) +! LDFLAGS="-ldl $LDFLAGS" + AC_RUN_IFELSE([ + #include <dlfcn.h> + #include <wchar.h> +*** ../vim-7.3.290/src/version.c 2011-09-02 11:56:15.000000000 +0200 +--- src/version.c 2011-09-02 12:25:13.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 291, + /**/ + +-- +DENNIS: Look, strange women lying on their backs in ponds handing out + swords ... that's no basis for a system of government. Supreme + executive power derives from a mandate from the masses, not from some + farcical aquatic ceremony. + "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 /// diff --git a/source/ap/vim/patches/7.3.292 b/source/ap/vim/patches/7.3.292 new file mode 100644 index 00000000..fc9480fe --- /dev/null +++ b/source/ap/vim/patches/7.3.292 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.292 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.292 +Problem: Crash when using fold markers and selecting a visual block that + includes a folded line and goes to end of line. (Sam Lidder) +Solution: Check for the column to be MAXCOL. (James Vega) +Files: src/screen.c + + +*** ../vim-7.3.291/src/screen.c 2011-08-10 14:32:33.000000000 +0200 +--- src/screen.c 2011-09-02 13:58:18.000000000 +0200 +*************** +*** 2531,2537 **** + /* Visual block mode: highlight the chars part of the block */ + if (wp->w_old_cursor_fcol + txtcol < (colnr_T)W_WIDTH(wp)) + { +! if (wp->w_old_cursor_lcol + txtcol < (colnr_T)W_WIDTH(wp)) + len = wp->w_old_cursor_lcol; + else + len = W_WIDTH(wp) - txtcol; +--- 2531,2539 ---- + /* Visual block mode: highlight the chars part of the block */ + if (wp->w_old_cursor_fcol + txtcol < (colnr_T)W_WIDTH(wp)) + { +! if (wp->w_old_cursor_lcol != MAXCOL +! && wp->w_old_cursor_lcol + txtcol +! < (colnr_T)W_WIDTH(wp)) + len = wp->w_old_cursor_lcol; + else + len = W_WIDTH(wp) - txtcol; +*** ../vim-7.3.291/src/version.c 2011-09-02 12:27:20.000000000 +0200 +--- src/version.c 2011-09-02 14:00:03.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 292, + /**/ + +-- +Hacker: Someone skilled in computer programming (good guy). +Cracker: A hacker that uses his skills to crack software (bad guy). + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.293 b/source/ap/vim/patches/7.3.293 new file mode 100644 index 00000000..4072e32f --- /dev/null +++ b/source/ap/vim/patches/7.3.293 @@ -0,0 +1,74 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.293 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.293 +Problem: MSVC compiler has a problem with non-ASCII characters. +Solution: Avoid non-ASCII characters. (Hong Xu) +Files: src/ascii.h, src/spell.c + + +*** ../vim-7.3.292/src/ascii.h 2011-05-10 16:41:13.000000000 +0200 +--- src/ascii.h 2011-09-02 14:12:48.000000000 +0200 +*************** +*** 123,129 **** + #define DCS 0x90 /* Device Control String */ + #define STERM 0x9c /* String Terminator */ + +! #define POUND '£' + + #define CTRL_F_STR "\056" + #define CTRL_H_STR "\026" +--- 123,129 ---- + #define DCS 0x90 /* Device Control String */ + #define STERM 0x9c /* String Terminator */ + +! #define POUND '\xA3' + + #define CTRL_F_STR "\056" + #define CTRL_H_STR "\026" +*** ../vim-7.3.292/src/spell.c 2011-04-11 21:35:03.000000000 +0200 +--- src/spell.c 2011-09-02 14:13:30.000000000 +0200 +*************** +*** 11197,11203 **** + c = *s++; + + #ifdef FEAT_MBYTE +! /* We only change ß to SS when we are certain latin1 is used. It + * would cause weird errors in other 8-bit encodings. */ + if (enc_latin1like && c == 0xdf) + { +--- 11197,11203 ---- + c = *s++; + + #ifdef FEAT_MBYTE +! /* We only change 0xdf to SS when we are certain latin1 is used. It + * would cause weird errors in other 8-bit encodings. */ + if (enc_latin1like && c == 0xdf) + { +*** ../vim-7.3.292/src/version.c 2011-09-02 14:07:31.000000000 +0200 +--- src/version.c 2011-09-02 14:13:57.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 293, + /**/ + +-- + A village. Sound of chanting of Latin canon, punctuated by short, sharp + cracks. It comes nearer. We see it is a line of MONKS ala SEVENTH SEAL + flagellation scene, chanting and banging themselves on the foreheads with + wooden boards. + "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 /// diff --git a/source/ap/vim/patches/7.3.294 b/source/ap/vim/patches/7.3.294 new file mode 100644 index 00000000..84252ba3 --- /dev/null +++ b/source/ap/vim/patches/7.3.294 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.294 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.294 (after 7.3.289) +Problem: Patch 289 causes more problems than it solves. +Solution: Rever the patch untill a better solution is found. +Files: src/edit.c + + +*** ../vim-7.3.293/src/edit.c 2011-08-28 16:02:23.000000000 +0200 +--- src/edit.c 2011-09-05 20:07:49.000000000 +0200 +*************** +*** 3367,3381 **** + ins_bytes(compl_leader + ins_compl_len()); + compl_used_match = FALSE; + +- #ifdef FEAT_COMPL_FUNC +- /* +- * To call eval 'completefunc' when leader is changed, restart completion +- * every time. +- */ +- if (ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI) +- ins_compl_restart(); +- #endif +- + if (compl_started) + ins_compl_set_original_text(compl_leader); + else +--- 3367,3372 ---- +*** ../vim-7.3.293/src/version.c 2011-09-02 14:18:14.000000000 +0200 +--- src/version.c 2011-09-05 20:08:27.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 294, + /**/ + +-- +Scientists decoded the first message from an alien civilization: + SIMPLY SEND 6 TIMES 10 TO THE 50 ATOMS OF HYDROGEN TO THE STAR +SYSTEM AT THE TOP OF THE LIST, CROSS OFF THAT STAR SYSTEM, THEN PUT +YOUR STAR SYSTEM AT THE BOTTOM OF THE LIST AND SEND IT TO 100 OTHER +STAR SYSTEMS. WITHIN ONE TENTH GALACTIC ROTATION YOU WILL RECEIVE +ENOUGH HYDROGREN TO POWER YOUR CIVILIZATION UNTIL ENTROPY REACHES ITS +MAXIMUM! IT REALLY WORKS! + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.295 b/source/ap/vim/patches/7.3.295 new file mode 100644 index 00000000..fad7ea3e --- /dev/null +++ b/source/ap/vim/patches/7.3.295 @@ -0,0 +1,109 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.295 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.295 +Problem: When filtering text with an external command Vim may not read all + the output. +Solution: When select() is interrupted loop and try again. (James Vega) +Files: src/os_unix.c + + +*** ../vim-7.3.294/src/os_unix.c 2011-08-04 20:31:50.000000000 +0200 +--- src/os_unix.c 2011-09-07 13:34:09.000000000 +0200 +*************** +*** 4819,4825 **** + + /* + * Wait "msec" msec until a character is available from file descriptor "fd". +! * Time == -1 will block forever. + * When a GUI is being used, this will not be used for input -- webb + * Returns also, when a request from Sniff is waiting -- toni. + * Or when a Linux GPM mouse event is waiting. +--- 4819,4826 ---- + + /* + * Wait "msec" msec until a character is available from file descriptor "fd". +! * "msec" == 0 will check for characters once. +! * "msec" == -1 will block until a character is available. + * When a GUI is being used, this will not be used for input -- webb + * Returns also, when a request from Sniff is waiting -- toni. + * Or when a Linux GPM mouse event is waiting. +*************** +*** 5057,5063 **** + /* + * Select on ready for reading and exceptional condition (end of file). + */ +! FD_ZERO(&rfds); /* calls bzero() on a sun */ + FD_ZERO(&efds); + FD_SET(fd, &rfds); + # if !defined(__QNX__) && !defined(__CYGWIN32__) +--- 5058,5065 ---- + /* + * Select on ready for reading and exceptional condition (end of file). + */ +! select_eintr: +! FD_ZERO(&rfds); + FD_ZERO(&efds); + FD_SET(fd, &rfds); + # if !defined(__QNX__) && !defined(__CYGWIN32__) +*************** +*** 5117,5122 **** +--- 5119,5132 ---- + # else + ret = select(maxfd + 1, &rfds, NULL, &efds, tvp); + # endif ++ # ifdef EINTR ++ if (ret == -1 && errno == EINTR) ++ /* Interrupted by a signal, need to try again. We ignore msec ++ * here, because we do want to check even after a timeout if ++ * characters are available. Needed for reading output of an ++ * external command after the process has finished. */ ++ goto select_eintr; ++ # endif + # ifdef __TANDEM + if (ret == -1 && errno == ENOTSUP) + { +*************** +*** 5124,5130 **** + FD_ZERO(&efds); + ret = 0; + } +! #endif + # ifdef FEAT_MZSCHEME + if (ret == 0 && mzquantum_used) + /* loop if MzThreads must be scheduled and timeout occurred */ +--- 5134,5140 ---- + FD_ZERO(&efds); + ret = 0; + } +! # endif + # ifdef FEAT_MZSCHEME + if (ret == 0 && mzquantum_used) + /* loop if MzThreads must be scheduled and timeout occurred */ +*** ../vim-7.3.294/src/version.c 2011-09-05 20:13:37.000000000 +0200 +--- src/version.c 2011-09-07 14:05:05.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 295, + /**/ + +-- +"You're fired." (1980) +"You're laid off." (1985) +"You're downsized." (1990) +"You're rightsized." (1992) + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.296 b/source/ap/vim/patches/7.3.296 new file mode 100644 index 00000000..80369d1a --- /dev/null +++ b/source/ap/vim/patches/7.3.296 @@ -0,0 +1,222 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.296 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.296 +Problem: When writing to an external command a zombie process may be left + behind. +Solution: Wait on the process. (James Vega) +Files: src/os_unix.c + + +*** ../vim-7.3.295/src/os_unix.c 2011-09-07 14:06:38.000000000 +0200 +--- src/os_unix.c 2011-09-07 14:54:11.000000000 +0200 +*************** +*** 154,159 **** +--- 154,166 ---- + + static void may_core_dump __ARGS((void)); + ++ #ifdef HAVE_UNION_WAIT ++ typedef union wait waitstatus; ++ #else ++ typedef int waitstatus; ++ #endif ++ static int wait4pid __ARGS((pid_t, waitstatus *)); ++ + static int WaitForChar __ARGS((long)); + #if defined(__BEOS__) + int RealWaitForChar __ARGS((int, long, int *)); +*************** +*** 3660,3665 **** +--- 3667,3713 ---- + /* Nothing to do. */ + } + ++ /* ++ * Wait for process "child" to end. ++ * Return "child" if it exited properly, <= 0 on error. ++ */ ++ static pid_t ++ wait4pid(child, status) ++ pid_t child; ++ waitstatus *status; ++ { ++ pid_t wait_pid = 0; ++ ++ while (wait_pid != child) ++ { ++ # ifdef _THREAD_SAFE ++ /* Ugly hack: when compiled with Python threads are probably ++ * used, in which case wait() sometimes hangs for no obvious ++ * reason. Use waitpid() instead and loop (like the GUI). */ ++ # ifdef __NeXT__ ++ wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0); ++ # else ++ wait_pid = waitpid(child, status, WNOHANG); ++ # endif ++ if (wait_pid == 0) ++ { ++ /* Wait for 1/100 sec before trying again. */ ++ mch_delay(10L, TRUE); ++ continue; ++ } ++ # else ++ wait_pid = wait(status); ++ # endif ++ if (wait_pid <= 0 ++ # ifdef ECHILD ++ && errno == ECHILD ++ # endif ++ ) ++ break; ++ } ++ return wait_pid; ++ } ++ + int + mch_call_shell(cmd, options) + char_u *cmd; +*************** +*** 4234,4240 **** + { + MSG_PUTS(_("\nCannot fork\n")); + } +! else if (wpid == 0) + { + linenr_T lnum = curbuf->b_op_start.lnum; + int written = 0; +--- 4282,4288 ---- + { + MSG_PUTS(_("\nCannot fork\n")); + } +! else if (wpid == 0) /* child */ + { + linenr_T lnum = curbuf->b_op_start.lnum; + int written = 0; +*************** +*** 4242,4248 **** + char_u *s; + size_t l; + +- /* child */ + close(fromshell_fd); + for (;;) + { +--- 4290,4295 ---- +*************** +*** 4287,4293 **** + } + _exit(0); + } +! else + { + close(toshell_fd); + toshell_fd = -1; +--- 4334,4340 ---- + } + _exit(0); + } +! else /* parent */ + { + close(toshell_fd); + toshell_fd = -1; +*************** +*** 4584,4590 **** + * typed characters (otherwise we would lose typeahead). + */ + # ifdef __NeXT__ +! wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *) 0); + # else + wait_pid = waitpid(pid, &status, WNOHANG); + # endif +--- 4631,4637 ---- + * typed characters (otherwise we would lose typeahead). + */ + # ifdef __NeXT__ +! wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *)0); + # else + wait_pid = waitpid(pid, &status, WNOHANG); + # endif +*************** +*** 4633,4665 **** + * Don't wait if wait_pid was already set above, indicating the + * child already exited. + */ +! while (wait_pid != pid) +! { +! # ifdef _THREAD_SAFE +! /* Ugly hack: when compiled with Python threads are probably +! * used, in which case wait() sometimes hangs for no obvious +! * reason. Use waitpid() instead and loop (like the GUI). */ +! # ifdef __NeXT__ +! wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *)0); +! # else +! wait_pid = waitpid(pid, &status, WNOHANG); +! # endif +! if (wait_pid == 0) +! { +! /* Wait for 1/100 sec before trying again. */ +! mch_delay(10L, TRUE); +! continue; +! } +! # else +! wait_pid = wait(&status); +! # endif +! if (wait_pid <= 0 +! # ifdef ECHILD +! && errno == ECHILD +! # endif +! ) +! break; +! } + + # ifdef FEAT_GUI + /* Close slave side of pty. Only do this after the child has +--- 4680,4687 ---- + * Don't wait if wait_pid was already set above, indicating the + * child already exited. + */ +! if (wait_pid != pid) +! wait_pid = wait4pid(pid, &status); + + # ifdef FEAT_GUI + /* Close slave side of pty. Only do this after the child has +*************** +*** 4672,4678 **** +--- 4694,4703 ---- + /* Make sure the child that writes to the external program is + * dead. */ + if (wpid > 0) ++ { + kill(wpid, SIGKILL); ++ wait4pid(wpid, NULL); ++ } + + /* + * Set to raw mode right now, otherwise a CTRL-C after +*** ../vim-7.3.295/src/version.c 2011-09-07 14:06:39.000000000 +0200 +--- src/version.c 2011-09-07 15:03:24.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 296, + /**/ + +-- +If your company is not involved in something called "ISO 9000" you probably +have no idea what it is. If your company _is_ involved in ISO 9000 then you +definitely have no idea what it is. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.297 b/source/ap/vim/patches/7.3.297 new file mode 100644 index 00000000..09be7684 --- /dev/null +++ b/source/ap/vim/patches/7.3.297 @@ -0,0 +1,130 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.297 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.297 +Problem: Can't load Perl 5.14 dynamically. +Solution: Add code in #ifdefs. (Charles Cooper) +Files: if_perl.xs + + +*** ../vim-7.3.296/src/if_perl.xs 2011-07-27 14:15:41.000000000 +0200 +--- src/if_perl.xs 2011-09-07 18:47:07.000000000 +0200 +*************** +*** 147,153 **** +--- 147,158 ---- + # define Perl_save_int dll_Perl_save_int + # define Perl_stack_grow dll_Perl_stack_grow + # 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 + # define Perl_sv_2iv dll_Perl_sv_2iv + # define Perl_sv_2mortal dll_Perl_sv_2mortal + # if (PERL_REVISION == 5) && (PERL_VERSION >= 8) +*************** +*** 252,258 **** +--- 257,268 ---- + static void (*Perl_save_int)(pTHX_ int*); + static SV** (*Perl_stack_grow)(pTHX_ SV**, SV**p, int); + static SV** (*Perl_set_context)(void*); ++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) ++ static bool (*Perl_sv_2bool_flags)(pTHX_ SV*, I32); ++ static void (*Perl_xs_apiversion_bootcheck)(pTHX_ SV *module, const char *api_p, STRLEN api_len); ++ #else + static bool (*Perl_sv_2bool)(pTHX_ SV*); ++ #endif + static IV (*Perl_sv_2iv)(pTHX_ SV*); + static SV* (*Perl_sv_2mortal)(pTHX_ SV*); + #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) +*************** +*** 360,366 **** +--- 370,381 ---- + {"Perl_save_int", (PERL_PROC*)&Perl_save_int}, + {"Perl_stack_grow", (PERL_PROC*)&Perl_stack_grow}, + {"Perl_set_context", (PERL_PROC*)&Perl_set_context}, ++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) ++ {"Perl_sv_2bool_flags", (PERL_PROC*)&Perl_sv_2bool_flags}, ++ {"Perl_xs_apiversion_bootcheck",(PERL_PROC*)&Perl_xs_apiversion_bootcheck}, ++ #else + {"Perl_sv_2bool", (PERL_PROC*)&Perl_sv_2bool}, ++ #endif + {"Perl_sv_2iv", (PERL_PROC*)&Perl_sv_2iv}, + {"Perl_sv_2mortal", (PERL_PROC*)&Perl_sv_2mortal}, + #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) +*************** +*** 407,412 **** +--- 422,430 ---- + {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2}, + {"Perl_sys_init", (PERL_PROC*)&Perl_sys_init}, + {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term}, ++ {"Perl_call_list", (PERL_PROC*)&Perl_call_list}, ++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) ++ # else + {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr}, + {"Perl_Istack_max_ptr", (PERL_PROC*)&Perl_Istack_max_ptr}, + {"Perl_Istack_base_ptr", (PERL_PROC*)&Perl_Istack_base_ptr}, +*************** +*** 418,432 **** + {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr}, + {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr}, + {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr}, +- {"Perl_call_list", (PERL_PROC*)&Perl_call_list}, + {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr}, + {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr}, + #endif + {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr}, + {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr}, + {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr}, +- {"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader}, + {"Perl_Gthr_key_ptr", (PERL_PROC*)&Perl_Gthr_key_ptr}, + {"", NULL}, + }; + +--- 436,453 ---- + {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr}, + {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr}, + {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr}, + {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr}, + {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr}, ++ # endif + #endif ++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) ++ #else + {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr}, + {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr}, + {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr}, + {"Perl_Gthr_key_ptr", (PERL_PROC*)&Perl_Gthr_key_ptr}, ++ #endif ++ {"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader}, + {"", NULL}, + }; + +*** ../vim-7.3.296/src/version.c 2011-09-07 15:04:26.000000000 +0200 +--- src/version.c 2011-09-07 18:45:28.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 297, + /**/ + +-- +At some point in the project somebody will start whining about the need to +determine the project "requirements". This involves interviewing people who +don't know what they want but, curiously, know exactly when they need it. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.298 b/source/ap/vim/patches/7.3.298 new file mode 100644 index 00000000..65a51aa0 --- /dev/null +++ b/source/ap/vim/patches/7.3.298 @@ -0,0 +1,167 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.298 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.298 +Problem: Built-in colors are different from rgb.txt. +Solution: Adjust the color values. (Benjamin Haskell) +Files: src/gui_photon.c, src/gui_w48.c + + +*** ../vim-7.3.297/src/gui_photon.c 2011-08-10 12:19:00.000000000 +0200 +--- src/gui_photon.c 2011-09-07 18:55:09.000000000 +0200 +*************** +*** 2007,2014 **** + static GuiColourTable table[] = + { + {"Black", RGB(0x00, 0x00, 0x00)}, +! {"DarkGray", RGB(0x80, 0x80, 0x80)}, +! {"DarkGrey", RGB(0x80, 0x80, 0x80)}, + {"Gray", RGB(0xC0, 0xC0, 0xC0)}, + {"Grey", RGB(0xC0, 0xC0, 0xC0)}, + {"LightGray", RGB(0xD3, 0xD3, 0xD3)}, +--- 2007,2014 ---- + static GuiColourTable table[] = + { + {"Black", RGB(0x00, 0x00, 0x00)}, +! {"DarkGray", RGB(0xA9, 0xA9, 0xA9)}, +! {"DarkGrey", RGB(0xA9, 0xA9, 0xA9)}, + {"Gray", RGB(0xC0, 0xC0, 0xC0)}, + {"Grey", RGB(0xC0, 0xC0, 0xC0)}, + {"LightGray", RGB(0xD3, 0xD3, 0xD3)}, +*************** +*** 2037,2055 **** + {"LightRed", RGB(0xFF, 0xA0, 0xA0)}, + {"DarkBlue", RGB(0x00, 0x00, 0x80)}, + {"Blue", RGB(0x00, 0x00, 0xFF)}, +! {"LightBlue", RGB(0xA0, 0xA0, 0xFF)}, + {"DarkGreen", RGB(0x00, 0x80, 0x00)}, + {"Green", RGB(0x00, 0xFF, 0x00)}, +! {"LightGreen", RGB(0xA0, 0xFF, 0xA0)}, + {"DarkCyan", RGB(0x00, 0x80, 0x80)}, + {"Cyan", RGB(0x00, 0xFF, 0xFF)}, +! {"LightCyan", RGB(0xA0, 0xFF, 0xFF)}, + {"DarkMagenta", RGB(0x80, 0x00, 0x80)}, + {"Magenta", RGB(0xFF, 0x00, 0xFF)}, + {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)}, + {"Brown", RGB(0x80, 0x40, 0x40)}, + {"Yellow", RGB(0xFF, 0xFF, 0x00)}, +! {"LightYellow", RGB(0xFF, 0xFF, 0xA0)}, + {"SeaGreen", RGB(0x2E, 0x8B, 0x57)}, + {"Orange", RGB(0xFF, 0xA5, 0x00)}, + {"Purple", RGB(0xA0, 0x20, 0xF0)}, +--- 2037,2055 ---- + {"LightRed", RGB(0xFF, 0xA0, 0xA0)}, + {"DarkBlue", RGB(0x00, 0x00, 0x80)}, + {"Blue", RGB(0x00, 0x00, 0xFF)}, +! {"LightBlue", RGB(0xAD, 0xD8, 0xE6)}, + {"DarkGreen", RGB(0x00, 0x80, 0x00)}, + {"Green", RGB(0x00, 0xFF, 0x00)}, +! {"LightGreen", RGB(0x90, 0xEE, 0x90)}, + {"DarkCyan", RGB(0x00, 0x80, 0x80)}, + {"Cyan", RGB(0x00, 0xFF, 0xFF)}, +! {"LightCyan", RGB(0xE0, 0xFF, 0xFF)}, + {"DarkMagenta", RGB(0x80, 0x00, 0x80)}, + {"Magenta", RGB(0xFF, 0x00, 0xFF)}, + {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)}, + {"Brown", RGB(0x80, 0x40, 0x40)}, + {"Yellow", RGB(0xFF, 0xFF, 0x00)}, +! {"LightYellow", RGB(0xFF, 0xFF, 0xE0)}, + {"SeaGreen", RGB(0x2E, 0x8B, 0x57)}, + {"Orange", RGB(0xFF, 0xA5, 0x00)}, + {"Purple", RGB(0xA0, 0x20, 0xF0)}, +*** ../vim-7.3.297/src/gui_w48.c 2011-08-10 17:07:56.000000000 +0200 +--- src/gui_w48.c 2011-09-07 18:55:09.000000000 +0200 +*************** +*** 1411,1422 **** + static guicolor_tTable table[] = + { + {"Black", RGB(0x00, 0x00, 0x00)}, +! {"DarkGray", RGB(0x80, 0x80, 0x80)}, +! {"DarkGrey", RGB(0x80, 0x80, 0x80)}, + {"Gray", RGB(0xC0, 0xC0, 0xC0)}, + {"Grey", RGB(0xC0, 0xC0, 0xC0)}, +! {"LightGray", RGB(0xE0, 0xE0, 0xE0)}, +! {"LightGrey", RGB(0xE0, 0xE0, 0xE0)}, + {"Gray10", RGB(0x1A, 0x1A, 0x1A)}, + {"Grey10", RGB(0x1A, 0x1A, 0x1A)}, + {"Gray20", RGB(0x33, 0x33, 0x33)}, +--- 1411,1422 ---- + static guicolor_tTable table[] = + { + {"Black", RGB(0x00, 0x00, 0x00)}, +! {"DarkGray", RGB(0xA9, 0xA9, 0xA9)}, +! {"DarkGrey", RGB(0xA9, 0xA9, 0xA9)}, + {"Gray", RGB(0xC0, 0xC0, 0xC0)}, + {"Grey", RGB(0xC0, 0xC0, 0xC0)}, +! {"LightGray", RGB(0xD3, 0xD3, 0xD3)}, +! {"LightGrey", RGB(0xD3, 0xD3, 0xD3)}, + {"Gray10", RGB(0x1A, 0x1A, 0x1A)}, + {"Grey10", RGB(0x1A, 0x1A, 0x1A)}, + {"Gray20", RGB(0x33, 0x33, 0x33)}, +*************** +*** 1441,1459 **** + {"LightRed", RGB(0xFF, 0xA0, 0xA0)}, + {"DarkBlue", RGB(0x00, 0x00, 0x80)}, + {"Blue", RGB(0x00, 0x00, 0xFF)}, +! {"LightBlue", RGB(0xA0, 0xA0, 0xFF)}, + {"DarkGreen", RGB(0x00, 0x80, 0x00)}, + {"Green", RGB(0x00, 0xFF, 0x00)}, +! {"LightGreen", RGB(0xA0, 0xFF, 0xA0)}, + {"DarkCyan", RGB(0x00, 0x80, 0x80)}, + {"Cyan", RGB(0x00, 0xFF, 0xFF)}, +! {"LightCyan", RGB(0xA0, 0xFF, 0xFF)}, + {"DarkMagenta", RGB(0x80, 0x00, 0x80)}, + {"Magenta", RGB(0xFF, 0x00, 0xFF)}, + {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)}, + {"Brown", RGB(0x80, 0x40, 0x40)}, + {"Yellow", RGB(0xFF, 0xFF, 0x00)}, +! {"LightYellow", RGB(0xFF, 0xFF, 0xA0)}, + {"DarkYellow", RGB(0xBB, 0xBB, 0x00)}, + {"SeaGreen", RGB(0x2E, 0x8B, 0x57)}, + {"Orange", RGB(0xFF, 0xA5, 0x00)}, +--- 1441,1459 ---- + {"LightRed", RGB(0xFF, 0xA0, 0xA0)}, + {"DarkBlue", RGB(0x00, 0x00, 0x80)}, + {"Blue", RGB(0x00, 0x00, 0xFF)}, +! {"LightBlue", RGB(0xAD, 0xD8, 0xE6)}, + {"DarkGreen", RGB(0x00, 0x80, 0x00)}, + {"Green", RGB(0x00, 0xFF, 0x00)}, +! {"LightGreen", RGB(0x90, 0xEE, 0x90)}, + {"DarkCyan", RGB(0x00, 0x80, 0x80)}, + {"Cyan", RGB(0x00, 0xFF, 0xFF)}, +! {"LightCyan", RGB(0xE0, 0xFF, 0xFF)}, + {"DarkMagenta", RGB(0x80, 0x00, 0x80)}, + {"Magenta", RGB(0xFF, 0x00, 0xFF)}, + {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)}, + {"Brown", RGB(0x80, 0x40, 0x40)}, + {"Yellow", RGB(0xFF, 0xFF, 0x00)}, +! {"LightYellow", RGB(0xFF, 0xFF, 0xE0)}, + {"DarkYellow", RGB(0xBB, 0xBB, 0x00)}, + {"SeaGreen", RGB(0x2E, 0x8B, 0x57)}, + {"Orange", RGB(0xFF, 0xA5, 0x00)}, +*** ../vim-7.3.297/src/version.c 2011-09-07 18:47:19.000000000 +0200 +--- src/version.c 2011-09-07 18:55:27.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 298, + /**/ + +-- +You can test a person's importance in the organization by asking how much RAM +his computer has. Anybody who knows the answer to that question is not a +decision-maker. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.299 b/source/ap/vim/patches/7.3.299 new file mode 100644 index 00000000..4f755d90 --- /dev/null +++ b/source/ap/vim/patches/7.3.299 @@ -0,0 +1,516 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.299 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.299 +Problem: Source code not in Vim style. +Solution: Adjust the style. (Elias Diem) +Files: src/gui_photon.c + + +*** ../vim-7.3.298/src/gui_photon.c 2011-09-07 18:58:24.000000000 +0200 +--- src/gui_photon.c 2011-09-07 19:02:59.000000000 +0200 +*************** +*** 535,547 **** + &src_taken, + buf, + 6, +! &dst_made ); + +! add_to_input_buf( buf, dst_made ); + } + else + { +! add_to_input_buf( string, len ); + } + + return Pt_CONSUME; +--- 535,547 ---- + &src_taken, + buf, + 6, +! &dst_made); + +! add_to_input_buf(buf, dst_made); + } + else + { +! add_to_input_buf(string, len); + } + + return Pt_CONSUME; +*************** +*** 549,579 **** + len = 0; + #endif + ch = key->key_cap; +! if( ch < 0xff ) + { + /* FIXME: is this the right thing to do? */ +! if( modifiers & MOD_MASK_CTRL ) + { + modifiers &= ~MOD_MASK_CTRL; + +! if( ( ch >= 'a' && ch <= 'z' ) || + ch == '[' || + ch == ']' || +! ch == '\\' ) +! ch = Ctrl_chr( ch ); +! else if( ch == '2' ) + ch = NUL; +! else if( ch == '6' ) + ch = 0x1e; +! else if( ch == '-' ) + ch = 0x1f; + else + modifiers |= MOD_MASK_CTRL; + } + +! if( modifiers & MOD_MASK_ALT ) + { +! ch = Meta( ch ); + modifiers &= ~MOD_MASK_ALT; + } + } +--- 549,579 ---- + len = 0; + #endif + ch = key->key_cap; +! if (ch < 0xff) + { + /* FIXME: is this the right thing to do? */ +! if (modifiers & MOD_MASK_CTRL) + { + modifiers &= ~MOD_MASK_CTRL; + +! if ((ch >= 'a' && ch <= 'z') || + ch == '[' || + ch == ']' || +! ch == '\\') +! ch = Ctrl_chr(ch); +! else if (ch == '2') + ch = NUL; +! else if (ch == '6') + ch = 0x1e; +! else if (ch == '-') + ch = 0x1f; + else + modifiers |= MOD_MASK_CTRL; + } + +! if (modifiers & MOD_MASK_ALT) + { +! ch = Meta(ch); + modifiers &= ~MOD_MASK_ALT; + } + } +*************** +*** 586,604 **** + modifiers &= ~MOD_MASK_SHIFT; + } + +! ch = simplify_key( ch, &modifiers ); +! if( modifiers ) + { + string[ len++ ] = CSI; + string[ len++ ] = KS_MODIFIER; + string[ len++ ] = modifiers; + } + +! if( IS_SPECIAL( ch ) ) + { + string[ len++ ] = CSI; +! string[ len++ ] = K_SECOND( ch ); +! string[ len++ ] = K_THIRD( ch ); + } + else + { +--- 586,604 ---- + modifiers &= ~MOD_MASK_SHIFT; + } + +! ch = simplify_key(ch, &modifiers); +! if (modifiers) + { + string[ len++ ] = CSI; + string[ len++ ] = KS_MODIFIER; + string[ len++ ] = modifiers; + } + +! if (IS_SPECIAL(ch)) + { + string[ len++ ] = CSI; +! string[ len++ ] = K_SECOND(ch); +! string[ len++ ] = K_THIRD(ch); + } + else + { +*************** +*** 619,627 **** + string[ len++ ] = KE_CSI; + } + +! if( len > 0 ) + { +! add_to_input_buf( string, len ); + return Pt_CONSUME; + } + } +--- 619,627 ---- + string[ len++ ] = KE_CSI; + } + +! if (len > 0) + { +! add_to_input_buf(string, len); + return Pt_CONSUME; + } + } +*************** +*** 630,646 **** + } + + static int +! gui_ph_handle_mouse( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) + { + PhPointerEvent_t *pointer; + PhRect_t *pos; + int button = 0, repeated_click, modifiers = 0x0; + short mouse_x, mouse_y; + +! pointer = PhGetData( info->event ); +! pos = PhGetRects( info->event ); + +! gui_mch_mousehide( MOUSE_SHOW ); + + /* + * Coordinates need to be relative to the base window, +--- 630,646 ---- + } + + static int +! gui_ph_handle_mouse(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) + { + PhPointerEvent_t *pointer; + PhRect_t *pos; + int button = 0, repeated_click, modifiers = 0x0; + short mouse_x, mouse_y; + +! pointer = PhGetData(info->event); +! pos = PhGetRects(info->event); + +! gui_mch_mousehide(MOUSE_SHOW); + + /* + * Coordinates need to be relative to the base window, +*************** +*** 649,675 **** + mouse_x = pos->ul.x + gui.border_width; + mouse_y = pos->ul.y + gui.border_width; + +! if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON ) + { +! gui_mouse_moved( mouse_x, mouse_y ); + return Pt_CONTINUE; + } + +! if( pointer->key_mods & Pk_KM_Shift ) + modifiers |= MOUSE_SHIFT; +! if( pointer->key_mods & Pk_KM_Ctrl ) + modifiers |= MOUSE_CTRL; +! if( pointer->key_mods & Pk_KM_Alt ) + modifiers |= MOUSE_ALT; + + /* + * FIXME More than one button may be involved, but for + * now just deal with one + */ +! if( pointer->buttons & Ph_BUTTON_SELECT ) + button = MOUSE_LEFT; + +! if( pointer->buttons & Ph_BUTTON_MENU ) + { + button = MOUSE_RIGHT; + /* Need the absolute coordinates for the popup menu */ +--- 649,675 ---- + mouse_x = pos->ul.x + gui.border_width; + mouse_y = pos->ul.y + gui.border_width; + +! if (info->event->type == Ph_EV_PTR_MOTION_NOBUTTON) + { +! gui_mouse_moved(mouse_x, mouse_y); + return Pt_CONTINUE; + } + +! if (pointer->key_mods & Pk_KM_Shift) + modifiers |= MOUSE_SHIFT; +! if (pointer->key_mods & Pk_KM_Ctrl) + modifiers |= MOUSE_CTRL; +! if (pointer->key_mods & Pk_KM_Alt) + modifiers |= MOUSE_ALT; + + /* + * FIXME More than one button may be involved, but for + * now just deal with one + */ +! if (pointer->buttons & Ph_BUTTON_SELECT) + button = MOUSE_LEFT; + +! if (pointer->buttons & Ph_BUTTON_MENU) + { + button = MOUSE_RIGHT; + /* Need the absolute coordinates for the popup menu */ +*************** +*** 677,705 **** + abs_mouse.y = pointer->pos.y; + } + +! if( pointer->buttons & Ph_BUTTON_ADJUST ) + button = MOUSE_MIDDLE; + + /* Catch a real release (not phantom or other releases */ +! if( info->event->type == Ph_EV_BUT_RELEASE ) + button = MOUSE_RELEASE; + +! if( info->event->type & Ph_EV_PTR_MOTION_BUTTON ) + button = MOUSE_DRAG; + + #if 0 + /* Vim doesn't use button repeats */ +! if( info->event->type & Ph_EV_BUT_REPEAT ) + button = MOUSE_DRAG; + #endif + + /* Don't do anything if it is one of the phantom mouse release events */ +! if( ( button != MOUSE_RELEASE ) || +! ( info->event->subtype == Ph_EV_RELEASE_REAL ) ) + { + repeated_click = (pointer->click_count >= 2) ? TRUE : FALSE; + +! gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers ); + } + + return Pt_CONTINUE; +--- 677,705 ---- + abs_mouse.y = pointer->pos.y; + } + +! if (pointer->buttons & Ph_BUTTON_ADJUST) + button = MOUSE_MIDDLE; + + /* Catch a real release (not phantom or other releases */ +! if (info->event->type == Ph_EV_BUT_RELEASE) + button = MOUSE_RELEASE; + +! if (info->event->type & Ph_EV_PTR_MOTION_BUTTON) + button = MOUSE_DRAG; + + #if 0 + /* Vim doesn't use button repeats */ +! if (info->event->type & Ph_EV_BUT_REPEAT) + button = MOUSE_DRAG; + #endif + + /* Don't do anything if it is one of the phantom mouse release events */ +! if ((button != MOUSE_RELEASE) || +! (info->event->subtype == Ph_EV_RELEASE_REAL)) + { + repeated_click = (pointer->click_count >= 2) ? TRUE : FALSE; + +! gui_send_mouse_event(button , mouse_x, mouse_y, repeated_click, modifiers); + } + + return Pt_CONTINUE; +*************** +*** 707,741 **** + + /* Handle a focus change of the PtRaw widget */ + static int +! gui_ph_handle_focus( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) + { +! if( info->reason == Pt_CB_LOST_FOCUS ) + { +! PtRemoveEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, +! gui_ph_handle_mouse, NULL ); + +! gui_mch_mousehide( MOUSE_SHOW ); + } + else + { +! PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, +! gui_ph_handle_mouse, NULL ); + } + return Pt_CONTINUE; + } + + static void +! gui_ph_handle_raw_draw( PtWidget_t *widget, PhTile_t *damage ) + { + PhRect_t *r; + PhPoint_t offset; + PhPoint_t translation; + +! if( is_ignore_draw == TRUE ) + return; + +! PtSuperClassDraw( PtBasic, widget, damage ); +! PgGetTranslation( &translation ); + PgClearTranslation(); + + #if 0 +--- 707,741 ---- + + /* Handle a focus change of the PtRaw widget */ + static int +! gui_ph_handle_focus(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) + { +! if (info->reason == Pt_CB_LOST_FOCUS) + { +! PtRemoveEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, +! gui_ph_handle_mouse, NULL); + +! gui_mch_mousehide(MOUSE_SHOW); + } + else + { +! PtAddEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, +! gui_ph_handle_mouse, NULL); + } + return Pt_CONTINUE; + } + + static void +! gui_ph_handle_raw_draw(PtWidget_t *widget, PhTile_t *damage) + { + PhRect_t *r; + PhPoint_t offset; + PhPoint_t translation; + +! if (is_ignore_draw == TRUE) + return; + +! PtSuperClassDraw(PtBasic, widget, damage); +! PgGetTranslation(&translation); + PgClearTranslation(); + + #if 0 +*************** +*** 750,770 **** + out_flush(); + #endif + +! PtWidgetOffset( widget, &offset ); +! PhTranslatePoint( &offset, PtWidgetPos( gui.vimTextArea, NULL ) ); + + #if 1 + /* Redraw individual damage regions */ +! if( damage->next != NULL ) + damage = damage->next; + +! while( damage != NULL ) + { + r = &damage->rect; + gui_redraw( + r->ul.x - offset.x, r->ul.y - offset.y, + r->lr.x - r->ul.x + 1, +! r->lr.y - r->ul.y + 1 ); + damage = damage->next; + } + #else +--- 750,770 ---- + out_flush(); + #endif + +! PtWidgetOffset(widget, &offset); +! PhTranslatePoint(&offset, PtWidgetPos(gui.vimTextArea, NULL)); + + #if 1 + /* Redraw individual damage regions */ +! if (damage->next != NULL) + damage = damage->next; + +! while(damage != NULL) + { + r = &damage->rect; + gui_redraw( + r->ul.x - offset.x, r->ul.y - offset.y, + r->lr.x - r->ul.x + 1, +! r->lr.y - r->ul.y + 1); + damage = damage->next; + } + #else +*************** +*** 773,796 **** + gui_redraw( + r->ul.x - offset.x, r->ul.y - offset.y, + r->lr.x - r->ul.x + 1, +! r->lr.y - r->ul.y + 1 ); + #endif + +! PgSetTranslation( &translation, 0 ); + } + + static int + gui_ph_handle_pulldown_menu( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info ) + { +! if( data != NULL ) + { + vimmenu_T *menu = (vimmenu_T *) data; + +! PtPositionMenu( menu->submenu_id, NULL ); +! PtRealizeWidget( menu->submenu_id ); + } + + return Pt_CONTINUE; +--- 773,796 ---- + gui_redraw( + r->ul.x - offset.x, r->ul.y - offset.y, + r->lr.x - r->ul.x + 1, +! r->lr.y - r->ul.y + 1); + #endif + +! PgSetTranslation(&translation, 0); + } + + static int + gui_ph_handle_pulldown_menu( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info) + { +! if (data != NULL) + { + vimmenu_T *menu = (vimmenu_T *) data; + +! PtPositionMenu(menu->submenu_id, NULL); +! PtRealizeWidget(menu->submenu_id); + } + + return Pt_CONTINUE; +*** ../vim-7.3.298/src/version.c 2011-09-07 18:58:24.000000000 +0200 +--- src/version.c 2011-09-07 19:01:17.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 299, + /**/ + +-- +The only way the average employee can speak to an executive is by taking a +second job as a golf caddie. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.300 b/source/ap/vim/patches/7.3.300 new file mode 100644 index 00000000..132b14a7 --- /dev/null +++ b/source/ap/vim/patches/7.3.300 @@ -0,0 +1,74 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.300 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.300 +Problem: Python doesn't parse multi-byte argument correctly. +Solution: Use "t" instead of "s". (lilydjwg) +Files: src/if_py_both.h + + +*** ../vim-7.3.299/src/if_py_both.h 2011-07-07 15:08:53.000000000 +0200 +--- src/if_py_both.h 2011-09-07 19:25:12.000000000 +0200 +*************** +*** 74,80 **** + char *str = NULL; + int error = ((OutputObject *)(self))->error; + +! if (!PyArg_ParseTuple(args, "es#", ENC_OPT, &str, &len)) + return NULL; + + Py_BEGIN_ALLOW_THREADS +--- 74,80 ---- + char *str = NULL; + int error = ((OutputObject *)(self))->error; + +! if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len)) + return NULL; + + Py_BEGIN_ALLOW_THREADS +*************** +*** 114,120 **** + char *str = NULL; + PyInt len; + +! if (!PyArg_Parse(line, "es#", ENC_OPT, &str, &len)) { + PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); + Py_DECREF(list); + return NULL; +--- 114,120 ---- + char *str = NULL; + PyInt len; + +! if (!PyArg_Parse(line, "et#", ENC_OPT, &str, &len)) { + PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); + Py_DECREF(list); + return NULL; +*** ../vim-7.3.299/src/version.c 2011-09-07 19:08:57.000000000 +0200 +--- src/version.c 2011-09-07 19:26:05.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 300, + /**/ + +-- +A salesperson says: Translation: +"backward compatible" Old technology +"Premium" Overpriced +"Can't keep it on the shelf" Unavailable +"Stands alone" Piece of shit +"Proprietary" Incompatible + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.301 b/source/ap/vim/patches/7.3.301 new file mode 100644 index 00000000..bb52974d --- /dev/null +++ b/source/ap/vim/patches/7.3.301 @@ -0,0 +1,97 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.301 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.301 +Problem: When 'smartindent' and 'copyindent' are set a Tab is used even + though 'expandtab' is set. +Solution: Do not insert Tabs. Add a test. (Christian Brabandt) +Files: src/misc1.c, src/testdir/test19.in, src/testdir/test19.ok + + +*** ../vim-7.3.300/src/misc1.c 2011-07-27 17:31:42.000000000 +0200 +--- src/misc1.c 2011-09-07 19:37:04.000000000 +0200 +*************** +*** 363,369 **** + + /* Fill to next tabstop with a tab, if possible */ + tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); +! if (todo >= tab_pad) + { + todo -= tab_pad; + ++ind_len; +--- 363,369 ---- + + /* Fill to next tabstop with a tab, if possible */ + tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); +! if (todo >= tab_pad && !curbuf->b_p_et) + { + todo -= tab_pad; + ++ind_len; +*************** +*** 372,378 **** + } + + /* Add tabs required for indent */ +! while (todo >= (int)curbuf->b_p_ts) + { + todo -= (int)curbuf->b_p_ts; + ++ind_len; +--- 372,378 ---- + } + + /* Add tabs required for indent */ +! while (todo >= (int)curbuf->b_p_ts && !curbuf->b_p_et) + { + todo -= (int)curbuf->b_p_ts; + ++ind_len; +*** ../vim-7.3.300/src/testdir/test19.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test19.in 2011-09-07 19:46:17.000000000 +0200 +*************** +*** 12,17 **** +--- 12,20 ---- + 0wR + :" Test replacing with Tabs + 0wR ++ :" Test that copyindent works with expandtab set ++ :set expandtab smartindent copyindent ts=8 sw=8 sts=8 ++ :exe "norm! o{\<cr>x" + :?^start?,$w! test.out + :qa! + ENDTEST +*** ../vim-7.3.300/src/testdir/test19.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test19.ok 2011-09-07 19:37:04.000000000 +0200 +*************** +*** 5,7 **** +--- 5,9 ---- + a cde + hi + test text ++ { ++ x +*** ../vim-7.3.300/src/version.c 2011-09-07 19:30:17.000000000 +0200 +--- src/version.c 2011-09-07 19:38:48.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 301, + /**/ + +-- +I recommend ordering large cargo containers of paper towels to make up +whatever budget underruns you have. Paper products are always useful and they +have the advantage of being completely flushable if you need to make room in +the storage area later. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.302 b/source/ap/vim/patches/7.3.302 new file mode 100644 index 00000000..f8d2c249 --- /dev/null +++ b/source/ap/vim/patches/7.3.302 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.302 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.302 (after 7.3.301) +Problem: Test 19 fails without 'smartindent' and +eval. +Solution: Don't use ":exe". Source small.vim. +Files: src/testdir/test19.in + + +*** ../vim-7.3.301/src/testdir/test19.in 2011-09-07 19:58:04.000000000 +0200 +--- src/testdir/test19.in 2011-09-08 20:32:33.000000000 +0200 +*************** +*** 1,6 **** +--- 1,7 ---- + Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set. + + STARTTEST ++ :so small.vim + :set smarttab expandtab ts=8 sw=4 + :" make sure that backspace works, no matter what termcap is used + :set t_kD=x7f t_kb=x08 +*************** +*** 14,21 **** + 0wR + :" Test that copyindent works with expandtab set + :set expandtab smartindent copyindent ts=8 sw=8 sts=8 +! :exe "norm! o{\<cr>x" +! :?^start?,$w! test.out + :qa! + ENDTEST + +--- 15,22 ---- + 0wR + :" Test that copyindent works with expandtab set + :set expandtab smartindent copyindent ts=8 sw=8 sts=8 +! o{ +! x:?^start?,$w! test.out + :qa! + ENDTEST + +*** ../vim-7.3.301/src/version.c 2011-09-07 19:58:04.000000000 +0200 +--- src/version.c 2011-09-08 23:22:01.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 302, + /**/ + +-- +Engineers are always delighted to share wisdom, even in areas in which they +have no experience whatsoever. Their logic provides them with inherent +insight into any field of expertise. This can be a problem when dealing with +the illogical people who believe that knowledge can only be derived through +experience. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.303 b/source/ap/vim/patches/7.3.303 new file mode 100644 index 00000000..f85bf68d --- /dev/null +++ b/source/ap/vim/patches/7.3.303 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.303 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.303 (after 7.3.296) +Problem: Compilation error. +Solution: Correct return type from int to pid_t. (Danek Duvall) +Files: src/os_unix.c + + +*** ../vim-7.3.302/src/os_unix.c 2011-09-07 15:04:26.000000000 +0200 +--- src/os_unix.c 2011-09-08 20:47:47.000000000 +0200 +*************** +*** 159,165 **** + #else + typedef int waitstatus; + #endif +! static int wait4pid __ARGS((pid_t, waitstatus *)); + + static int WaitForChar __ARGS((long)); + #if defined(__BEOS__) +--- 159,165 ---- + #else + typedef int waitstatus; + #endif +! static pid_t wait4pid __ARGS((pid_t, waitstatus *)); + + static int WaitForChar __ARGS((long)); + #if defined(__BEOS__) +*** ../vim-7.3.302/src/version.c 2011-09-08 23:22:35.000000000 +0200 +--- src/version.c 2011-09-08 23:23:43.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 303, + /**/ + +-- +For humans, honesty is a matter of degree. Engineers are always honest in +matters of technology and human relationships. That's why it's a good idea +to keep engineers away from customers, romantic interests, and other people +who can't handle the truth. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.304 b/source/ap/vim/patches/7.3.304 new file mode 100644 index 00000000..6abfe9cc --- /dev/null +++ b/source/ap/vim/patches/7.3.304 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.304 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.304 +Problem: Strawberry Perl doesn't work on MS-Windows. +Solution: Use xsubpp if needed. (Yasuhiro Matsumoto) +Files: src/Make_ming.mak, src/Make_mvc.mak + + +*** ../vim-7.3.303/src/Make_ming.mak 2011-06-19 01:30:01.000000000 +0200 +--- src/Make_ming.mak 2011-09-14 10:44:55.000000000 +0200 +*************** +*** 108,113 **** +--- 108,120 ---- + # on NT, it's here: + PERLLIB=$(PERL)/lib + PERLLIBS=$(PERLLIB)/Core ++ XSUBPP=$(PERLLIB)/ExtUtils/xsubpp ++ XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPP)'") ++ ifeq "$(XSUBPP_EXISTS)" "" ++ XSUBPP=perl $(XSUBPP) ++ else ++ XSUBPP=xsubpp ++ endif + endif + + # uncomment 'LUA' if you want a Lua-enabled version +*************** +*** 696,702 **** + endif + + if_perl.c: if_perl.xs typemap +! perl $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap \ + $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@ + + $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC) +--- 703,709 ---- + endif + + if_perl.c: if_perl.xs typemap +! $(XSUBPP) -prototypes -typemap \ + $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@ + + $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC) +*** ../vim-7.3.303/src/Make_mvc.mak 2011-06-12 20:31:25.000000000 +0200 +--- src/Make_mvc.mak 2011-09-14 10:46:08.000000000 +0200 +*************** +*** 785,790 **** +--- 785,795 ---- + PERL_INC = /I $(PERL_INCDIR) + PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj + XSUBPP = $(PERL)\lib\ExtUtils\xsubpp ++ !if exist($(XSUBPP) ++ XSUBPP = $(PERL_EXE) $(XSUBPP) ++ !else ++ XSUBPP = xsubpp ++ !endif + XSUBPP_TYPEMAP = $(PERL)\lib\ExtUtils\typemap + + !endif +*************** +*** 1041,1047 **** + $(CC) $(CFLAGS) $(LUA_INC) if_lua.c + + if_perl.c : if_perl.xs typemap +! $(PERL_EXE) $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \ + -typemap typemap if_perl.xs > if_perl.c + + $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL) +--- 1046,1052 ---- + $(CC) $(CFLAGS) $(LUA_INC) if_lua.c + + if_perl.c : if_perl.xs typemap +! $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \ + -typemap typemap if_perl.xs > if_perl.c + + $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL) +*** ../vim-7.3.303/src/version.c 2011-09-08 23:24:09.000000000 +0200 +--- src/version.c 2011-09-14 10:47:41.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 304, + /**/ + +-- +It's totally unfair to suggest - as many have - that engineers are socially +inept. Engineers simply have different objectives when it comes to social +interaction. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.305 b/source/ap/vim/patches/7.3.305 new file mode 100644 index 00000000..e70fd594 --- /dev/null +++ b/source/ap/vim/patches/7.3.305 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.305 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.305 +Problem: Auto-loading a function while editing the command line causes + scrolling up the display. +Solution: Don't set msg_scroll when defining a function and the user is not + typing. (Yasuhiro Matsumoto) +Files: src/eval.c + + +*** ../vim-7.3.304/src/eval.c 2011-08-17 15:23:16.000000000 +0200 +--- src/eval.c 2011-09-14 14:28:21.000000000 +0200 +*************** +*** 20786,20792 **** + nesting = 0; + for (;;) + { +! msg_scroll = TRUE; + need_wait_return = FALSE; + sourcing_lnum_off = sourcing_lnum; + +--- 20786,20793 ---- + nesting = 0; + for (;;) + { +! if (KeyTyped) +! msg_scroll = TRUE; + need_wait_return = FALSE; + sourcing_lnum_off = sourcing_lnum; + +*** ../vim-7.3.304/src/version.c 2011-09-14 10:49:44.000000000 +0200 +--- src/version.c 2011-09-14 14:30:49.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 305, + /**/ + +-- +If someone questions your market projections, simply point out that your +target market is "People who are nuts" and "People who will buy any damn +thing". Nobody is going to tell you there aren't enough of those people +to go around. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.306 b/source/ap/vim/patches/7.3.306 new file mode 100644 index 00000000..62bd4cfc --- /dev/null +++ b/source/ap/vim/patches/7.3.306 @@ -0,0 +1,244 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.306 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.306 +Problem: When closing a window there is a chance that deleting a scrollbar + triggers a GUI resize, which uses the window while it is not in a + valid state. +Solution: Set the buffer pointer to NULL to be able to detect the invalid + situation. Fix a few places that used the buffer pointer + incorrectly. +Files: src/buffer.c, src/ex_cmds.c, src/term.c, src/window.c + + +*** ../vim-7.3.305/src/buffer.c 2011-05-19 13:40:47.000000000 +0200 +--- src/buffer.c 2011-09-10 13:46:59.000000000 +0200 +*************** +*** 416,421 **** +--- 416,423 ---- + #endif + + buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0)); ++ if (win_valid(win) && win->w_buffer == buf) ++ win->w_buffer = NULL; /* make sure we don't use the buffer now */ + + #ifdef FEAT_AUTOCMD + /* Autocommands may have deleted the buffer. */ +*************** +*** 560,565 **** +--- 562,571 ---- + #ifdef FEAT_DIFF + diff_buf_delete(buf); /* Can't use 'diff' for unloaded buffer. */ + #endif ++ #ifdef FEAT_SYN_HL ++ if (curwin->w_buffer == buf) ++ reset_synblock(curwin); /* remove any ownsyntax */ ++ #endif + + #ifdef FEAT_FOLDING + /* No folds in an empty buffer. */ +*************** +*** 1346,1351 **** +--- 1352,1361 ---- + # endif + #endif + { ++ #ifdef FEAT_SYN_HL ++ if (prevbuf == curwin->w_buffer) ++ reset_synblock(curwin); ++ #endif + #ifdef FEAT_WINDOWS + if (unload) + close_windows(prevbuf, FALSE); +*************** +*** 1395,1404 **** + foldUpdateAll(curwin); /* update folds (later). */ + #endif + +- #ifdef FEAT_SYN_HL +- reset_synblock(curwin); +- curwin->w_s = &(buf->b_s); +- #endif + /* Get the buffer in the current window. */ + curwin->w_buffer = buf; + curbuf = buf; +--- 1405,1410 ---- +*************** +*** 1409,1414 **** +--- 1415,1424 ---- + diff_buf_add(curbuf); + #endif + ++ #ifdef FEAT_SYN_HL ++ curwin->w_s = &(buf->b_s); ++ #endif ++ + /* Cursor on first line by default. */ + curwin->w_cursor.lnum = 1; + curwin->w_cursor.col = 0; +*** ../vim-7.3.305/src/ex_cmds.c 2011-07-07 16:20:45.000000000 +0200 +--- src/ex_cmds.c 2011-09-10 13:39:13.000000000 +0200 +*************** +*** 3619,3628 **** + */ + check_arg_idx(curwin); + +- #ifdef FEAT_SYN_HL +- reset_synblock(curwin); /* remove any ownsyntax */ +- #endif +- + #ifdef FEAT_AUTOCMD + if (!auto_buf) + #endif +--- 3619,3624 ---- +*** ../vim-7.3.305/src/term.c 2011-05-10 16:41:13.000000000 +0200 +--- src/term.c 2011-09-14 14:39:39.000000000 +0200 +*************** +*** 3017,3028 **** + if (width < 0 || height < 0) /* just checking... */ + return; + +! if (State == HITRETURN || State == SETWSIZE) /* postpone the resizing */ + { + State = SETWSIZE; + return; + } + + ++busy; + + #ifdef AMIGA +--- 3017,3036 ---- + if (width < 0 || height < 0) /* just checking... */ + return; + +! if (State == HITRETURN || State == SETWSIZE) + { ++ /* postpone the resizing */ + State = SETWSIZE; + return; + } + ++ /* curwin->w_buffer can be NULL when we are closing a window and the ++ * buffer has already been closed and removing a scrollbar causes a resize ++ * event. Don't resize then, it will happen after entering another buffer. ++ */ ++ if (curwin->w_buffer == NULL) ++ return; ++ + ++busy; + + #ifdef AMIGA +*** ../vim-7.3.305/src/window.c 2011-01-08 14:45:57.000000000 +0100 +--- src/window.c 2011-09-10 14:04:56.000000000 +0200 +*************** +*** 1226,1240 **** + } + newp->w_tagstackidx = oldp->w_tagstackidx; + newp->w_tagstacklen = oldp->w_tagstacklen; +! # ifdef FEAT_FOLDING + copyFoldingState(oldp, newp); +! # endif + + win_init_some(newp, oldp); + +! # ifdef FEAT_SYN_HL + check_colorcolumn(newp); +! # endif + } + + /* +--- 1226,1240 ---- + } + newp->w_tagstackidx = oldp->w_tagstackidx; + newp->w_tagstacklen = oldp->w_tagstacklen; +! #ifdef FEAT_FOLDING + copyFoldingState(oldp, newp); +! #endif + + win_init_some(newp, oldp); + +! #ifdef FEAT_SYN_HL + check_colorcolumn(newp); +! #endif + } + + /* +*************** +*** 2212,2217 **** +--- 2212,2222 ---- + out_flush(); + #endif + ++ #ifdef FEAT_SYN_HL ++ /* Free independent synblock before the buffer is freed. */ ++ reset_synblock(win); ++ #endif ++ + /* + * Close the link to the buffer. + */ +*************** +*** 2222,2228 **** + if (!win_valid(win) || last_window() || curtab != prev_curtab) + return; + +! /* Free the memory used for the window. */ + wp = win_free_mem(win, &dir, NULL); + + /* Make sure curwin isn't invalid. It can cause severe trouble when +--- 2227,2234 ---- + if (!win_valid(win) || last_window() || curtab != prev_curtab) + return; + +! /* Free the memory used for the window and get the window that received +! * the screen space. */ + wp = win_free_mem(win, &dir, NULL); + + /* Make sure curwin isn't invalid. It can cause severe trouble when +*************** +*** 3247,3252 **** +--- 3253,3261 ---- + else + wp->w_farsi = W_CONV; + #endif ++ #ifdef FEAT_SYN_HL ++ wp->w_s = &wp->w_buffer->b_s; ++ #endif + } + + /* +*************** +*** 4437,4443 **** + #endif /* FEAT_GUI */ + + #ifdef FEAT_SYN_HL +- reset_synblock(wp); /* free independent synblock */ + vim_free(wp->w_p_cc_cols); + #endif + +--- 4446,4451 ---- +*** ../vim-7.3.305/src/version.c 2011-09-14 14:33:47.000000000 +0200 +--- src/version.c 2011-09-14 14:35:30.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 306, + /**/ + +-- +A consultant is a person who takes your money and annoys your employees while +tirelessly searching for the best way to extend the consulting contract. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.307 b/source/ap/vim/patches/7.3.307 new file mode 100644 index 00000000..3fd95e11 --- /dev/null +++ b/source/ap/vim/patches/7.3.307 @@ -0,0 +1,180 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.307 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.307 +Problem: Python 3 doesn't support slice assignment. +Solution: Implement slices. (Brett Overesch, Roland Puntaier) +Files: src/if_python3.c + + +*** ../vim-7.3.306/src/if_python3.c 2011-08-28 16:00:14.000000000 +0200 +--- src/if_python3.c 2011-09-14 15:01:26.000000000 +0200 +*************** +*** 855,862 **** + + static Py_ssize_t BufferLength(PyObject *); + static PyObject *BufferItem(PyObject *, Py_ssize_t); +! static PyObject* BufferSubscript(PyObject *self, PyObject* idx); +! static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val); + + + /* Line range type - Implementation functions +--- 855,862 ---- + + static Py_ssize_t BufferLength(PyObject *); + static PyObject *BufferItem(PyObject *, Py_ssize_t); +! static PyObject* BufferSubscript(PyObject *self, PyObject *idx); +! static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject *idx, PyObject *val); + + + /* Line range type - Implementation functions +*************** +*** 865,872 **** + + #define RangeType_Check(obj) ((obj)->ob_base.ob_type == &RangeType) + +! static PyObject* RangeSubscript(PyObject *self, PyObject* idx); + static Py_ssize_t RangeAsItem(PyObject *, Py_ssize_t, PyObject *); + + /* Current objects type - Implementation functions + * ----------------------------------------------- +--- 865,873 ---- + + #define RangeType_Check(obj) ((obj)->ob_base.ob_type == &RangeType) + +! static PyObject* RangeSubscript(PyObject *self, PyObject *idx); + static Py_ssize_t RangeAsItem(PyObject *, Py_ssize_t, PyObject *); ++ static Py_ssize_t RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val); + + /* Current objects type - Implementation functions + * ----------------------------------------------- +*************** +*** 1035,1041 **** + &step, &slicelen) < 0) { + return NULL; + } +! return BufferSlice(self,start,stop); + } else { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return NULL; +--- 1036,1042 ---- + &step, &slicelen) < 0) { + return NULL; + } +! return BufferSlice(self, start, stop); + } else { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return NULL; +*************** +*** 1084,1090 **** + PyMappingMethods RangeAsMapping = { + /* mp_length */ (lenfunc)RangeLength, + /* mp_subscript */ (binaryfunc)RangeSubscript, +! /* mp_ass_subscript */ (objobjargproc)0, + }; + + /* Line range object - Implementation +--- 1085,1091 ---- + PyMappingMethods RangeAsMapping = { + /* mp_length */ (lenfunc)RangeLength, + /* mp_subscript */ (binaryfunc)RangeSubscript, +! /* mp_ass_subscript */ (objobjargproc)RangeAsSubscript, + }; + + /* Line range object - Implementation +*************** +*** 1123,1128 **** +--- 1124,1138 ---- + &((RangeObject *)(self))->end); + } + ++ static Py_ssize_t ++ RangeAsSlice(PyObject *self, Py_ssize_t lo, Py_ssize_t hi, PyObject *val) ++ { ++ return RBAsSlice(((RangeObject *)(self))->buf, lo, hi, val, ++ ((RangeObject *)(self))->start, ++ ((RangeObject *)(self))->end, ++ &((RangeObject *)(self))->end); ++ } ++ + static PyObject * + RangeSubscript(PyObject *self, PyObject* idx) + { +*************** +*** 1138,1150 **** + &step, &slicelen) < 0) { + return NULL; + } +! return RangeSlice(self,start,stop+1); + } else { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return NULL; + } + } + + /* Buffer list object - Definitions + */ + +--- 1148,1183 ---- + &step, &slicelen) < 0) { + return NULL; + } +! return RangeSlice(self, start, stop); + } else { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return NULL; + } + } + ++ static Py_ssize_t ++ RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val) ++ { ++ if (PyLong_Check(idx)) { ++ long n = PyLong_AsLong(idx); ++ return RangeAsItem(self, n, val); ++ } else if (PySlice_Check(idx)) { ++ Py_ssize_t start, stop, step, slicelen; ++ ++ if (PySlice_GetIndicesEx((PySliceObject *)idx, ++ ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, ++ &start, &stop, ++ &step, &slicelen) < 0) { ++ return -1; ++ } ++ return RangeAsSlice(self, start, stop, val); ++ } else { ++ PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); ++ return -1; ++ } ++ } ++ ++ + /* Buffer list object - Definitions + */ + +*** ../vim-7.3.306/src/version.c 2011-09-14 14:43:21.000000000 +0200 +--- src/version.c 2011-09-14 14:58:16.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 307, + /**/ + +-- +The process for understanding customers primarily involves sitting around with +other marketing people and talking about what you would to if you were dumb +enough to be a customer. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.308 b/source/ap/vim/patches/7.3.308 new file mode 100644 index 00000000..36e5de51 --- /dev/null +++ b/source/ap/vim/patches/7.3.308 @@ -0,0 +1,260 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.308 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.308 +Problem: Writing to 'verbosefile' has problems, e.g. for :highlight. +Solution: Do not use a separate verbose_write() function but write with the + same code that does redirecting. (Yasuhiro Matsumoto) +Files: src/message.c + + +*** ../vim-7.3.307/src/message.c 2011-08-17 20:33:18.000000000 +0200 +--- src/message.c 2011-09-14 15:32:57.000000000 +0200 +*************** +*** 39,45 **** + static void msg_screen_putchar __ARGS((int c, int attr)); + static int msg_check_screen __ARGS((void)); + static void redir_write __ARGS((char_u *s, int maxlen)); +- static void verbose_write __ARGS((char_u *s, int maxlen)); + #ifdef FEAT_CON_DIALOG + static char_u *msg_show_console_dialog __ARGS((char_u *message, char_u *buttons, int dfltbutton)); + static int confirm_msg_used = FALSE; /* displaying confirm_msg */ +--- 39,44 ---- +*************** +*** 58,63 **** +--- 57,65 ---- + static struct msg_hist *last_msg_hist = NULL; + static int msg_hist_len = 0; + ++ static FILE *verbose_fd = NULL; ++ static int verbose_did_open = FALSE; ++ + /* + * When writing messages to the screen, there are many different situations. + * A number of variables is used to remember the current state: +*************** +*** 1551,1557 **** + #ifdef FEAT_MBYTE + if (has_mbyte && !IS_SPECIAL(c)) + { +! int len = (*mb_ptr2len)(str); + + /* For multi-byte characters check for an illegal byte. */ + if (has_mbyte && MB_BYTE2LEN(*str) > len) +--- 1553,1559 ---- + #ifdef FEAT_MBYTE + if (has_mbyte && !IS_SPECIAL(c)) + { +! int len = (*mb_ptr2len)(str); + + /* For multi-byte characters check for an illegal byte. */ + if (has_mbyte && MB_BYTE2LEN(*str) > len) +*************** +*** 1560,1569 **** + *sp = str + 1; + return buf; + } +! /* Since 'special' is TRUE the multi-byte character 'c' will be +! * processed by get_special_key_name() */ +! c = (*mb_ptr2char)(str); +! *sp = str + len; + } + else + #endif +--- 1562,1571 ---- + *sp = str + 1; + return buf; + } +! /* Since 'special' is TRUE the multi-byte character 'c' will be +! * processed by get_special_key_name() */ +! c = (*mb_ptr2char)(str); +! *sp = str + len; + } + else + #endif +*************** +*** 3065,3076 **** + if (redir_off) + return; + +! /* +! * If 'verbosefile' is set write message in that file. +! * Must come before the rest because of updating "msg_col". +! */ +! if (*p_vfile != NUL) +! verbose_write(s, maxlen); + + if (redirecting()) + { +--- 3067,3075 ---- + if (redir_off) + return; + +! /* If 'verbosefile' is set prepare for writing in that file. */ +! if (*p_vfile != NUL && verbose_fd == NULL) +! verbose_open(); + + if (redirecting()) + { +*************** +*** 3084,3092 **** + write_reg_contents(redir_reg, (char_u *)" ", -1, TRUE); + else if (redir_vname) + var_redir_str((char_u *)" ", -1); +! else if (redir_fd) + #endif + fputs(" ", redir_fd); + ++cur_col; + } + } +--- 3083,3094 ---- + write_reg_contents(redir_reg, (char_u *)" ", -1, TRUE); + else if (redir_vname) + var_redir_str((char_u *)" ", -1); +! else + #endif ++ if (redir_fd != NULL) + fputs(" ", redir_fd); ++ if (verbose_fd != NULL) ++ fputs(" ", verbose_fd); + ++cur_col; + } + } +*************** +*** 3098,3110 **** + var_redir_str(s, maxlen); + #endif + +! /* Adjust the current column */ + while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen)) + { + #ifdef FEAT_EVAL +! if (!redir_reg && !redir_vname && redir_fd != NULL) + #endif +! putc(*s, redir_fd); + if (*s == '\r' || *s == '\n') + cur_col = 0; + else if (*s == '\t') +--- 3100,3115 ---- + var_redir_str(s, maxlen); + #endif + +! /* Write and adjust the current column. */ + while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen)) + { + #ifdef FEAT_EVAL +! if (!redir_reg && !redir_vname) + #endif +! if (redir_fd != NULL) +! putc(*s, redir_fd); +! if (verbose_fd != NULL) +! putc(*s, verbose_fd); + if (*s == '\r' || *s == '\n') + cur_col = 0; + else if (*s == '\t') +*************** +*** 3122,3128 **** + int + redirecting() + { +! return redir_fd != NULL + #ifdef FEAT_EVAL + || redir_reg || redir_vname + #endif +--- 3127,3133 ---- + int + redirecting() + { +! return redir_fd != NULL || *p_vfile != NUL + #ifdef FEAT_EVAL + || redir_reg || redir_vname + #endif +*************** +*** 3180,3188 **** + cmdline_row = msg_row; + } + +- static FILE *verbose_fd = NULL; +- static int verbose_did_open = FALSE; +- + /* + * Called when 'verbosefile' is set: stop writing to the file. + */ +--- 3185,3190 ---- +*************** +*** 3220,3268 **** + } + + /* +- * Write a string to 'verbosefile'. +- * When "maxlen" is -1 write the whole string, otherwise up to "maxlen" bytes. +- */ +- static void +- verbose_write(str, maxlen) +- char_u *str; +- int maxlen; +- { +- char_u *s = str; +- static int cur_col = 0; +- +- /* Open the file when called the first time. */ +- if (verbose_fd == NULL) +- verbose_open(); +- +- if (verbose_fd != NULL) +- { +- /* If the string doesn't start with CR or NL, go to msg_col */ +- if (*s != '\n' && *s != '\r') +- { +- while (cur_col < msg_col) +- { +- fputs(" ", verbose_fd); +- ++cur_col; +- } +- } +- +- /* Adjust the current column */ +- while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen)) +- { +- putc(*s, verbose_fd); +- if (*s == '\r' || *s == '\n') +- cur_col = 0; +- else if (*s == '\t') +- cur_col += (8 - cur_col % 8); +- else +- ++cur_col; +- ++s; +- } +- } +- } +- +- /* + * Give a warning message (for searching). + * Use 'w' highlighting and may repeat the message after redrawing + */ +--- 3222,3227 ---- +*** ../vim-7.3.307/src/version.c 2011-09-14 15:01:54.000000000 +0200 +--- src/version.c 2011-09-14 15:38:31.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 308, + /**/ + +-- +The average life of an organization chart is six months. You can safely +ignore any order from your boss that would take six months to complete. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.309 b/source/ap/vim/patches/7.3.309 new file mode 100644 index 00000000..f274284b --- /dev/null +++ b/source/ap/vim/patches/7.3.309 @@ -0,0 +1,105 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.309 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.309 (after 7.3.307) +Problem: Warnings for pointer types. +Solution: Change PySliceObject to PyObject. +Files: src/if_python3.c + + +*** ../vim-7.3.308/src/if_python3.c 2011-09-14 15:01:54.000000000 +0200 +--- src/if_python3.c 2011-09-14 15:30:45.000000000 +0200 +*************** +*** 1030,1036 **** + } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, + &step, &slicelen) < 0) { +--- 1030,1036 ---- + } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PyObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, + &step, &slicelen) < 0) { +*************** +*** 1054,1060 **** + } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, + &step, &slicelen) < 0) { +--- 1054,1060 ---- + } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PyObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, + &step, &slicelen) < 0) { +*************** +*** 1142,1148 **** + } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, + &step, &slicelen) < 0) { +--- 1142,1148 ---- + } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PyObject *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, + &step, &slicelen) < 0) { +*************** +*** 1164,1170 **** + } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, + &step, &slicelen) < 0) { +--- 1164,1170 ---- + } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PyObject *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, + &step, &slicelen) < 0) { +*** ../vim-7.3.308/src/version.c 2011-09-14 15:39:26.000000000 +0200 +--- src/version.c 2011-09-14 15:40:17.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 309, + /**/ + +-- +Never enter the boss's office unless it's absolutely necessary. Every boss +saves one corner of the desk for useless assignments that are doled out like +Halloween candy to each visitor. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.310 b/source/ap/vim/patches/7.3.310 new file mode 100644 index 00000000..e3ffa5a4 --- /dev/null +++ b/source/ap/vim/patches/7.3.310 @@ -0,0 +1,3524 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.310 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.310 +Problem: Code not following Vim style. +Solution: Fix the style. (Elias Diem) +Files: src/gui_photon.c + + +*** ../vim-7.3.309/src/gui_photon.c 2011-09-07 19:08:57.000000000 +0200 +--- src/gui_photon.c 2011-09-14 16:01:55.000000000 +0200 +*************** +*** 477,483 **** + } + #endif + +! for(i = 0; special_keys[i].key_sym != 0; i++) + { + if (special_keys[i].key_sym == key->key_cap) + { +--- 477,483 ---- + } + #endif + +! for (i = 0; special_keys[i].key_sym != 0; i++) + { + if (special_keys[i].key_sym == key->key_cap) + { +*************** +*** 758,764 **** + if (damage->next != NULL) + damage = damage->next; + +! while(damage != NULL) + { + r = &damage->rect; + gui_redraw( +--- 758,764 ---- + if (damage->next != NULL) + damage = damage->next; + +! while (damage != NULL) + { + r = &damage->rect; + gui_redraw( +*************** +*** 798,809 **** + + /* This is used for pulldown/popup menus and also toolbar buttons */ + static int +! gui_ph_handle_menu( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) + { +! if( data != NULL ) + { + vimmenu_T *menu = (vimmenu_T *) data; +! gui_menu_cb( menu ); + } + return Pt_CONTINUE; + } +--- 798,809 ---- + + /* This is used for pulldown/popup menus and also toolbar buttons */ + static int +! gui_ph_handle_menu(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) + { +! if (data != NULL) + { + vimmenu_T *menu = (vimmenu_T *) data; +! gui_menu_cb(menu); + } + return Pt_CONTINUE; + } +*************** +*** 813,821 **** + gui_ph_handle_menu_unrealized( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info ) + { +! PtGiveFocus( gui.vimTextArea, NULL ); + return Pt_CONTINUE; + } + +--- 813,821 ---- + gui_ph_handle_menu_unrealized( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info) + { +! PtGiveFocus(gui.vimTextArea, NULL); + return Pt_CONTINUE; + } + +*************** +*** 823,831 **** + gui_ph_handle_window_open( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info ) + { +! gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH ); + return Pt_CONTINUE; + } + +--- 823,831 ---- + gui_ph_handle_window_open( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info) + { +! gui_set_shellsize(FALSE, TRUE, RESIZE_BOTH); + return Pt_CONTINUE; + } + +*************** +*** 836,909 **** + + /* TODO: Set a clipping rect? */ + static void +! gui_ph_draw_start( void ) + { + PhGC_t *gc; + + gc = PgGetGC(); +! PgSetRegion( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ) ); +! PgClearClippingsCx( gc ); +! PgClearTranslationCx( gc ); + +! PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset ); +! PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos( gui.vimTextArea, NULL ) ); + +! PgSetTranslation( &gui_ph_raw_offset, Pg_RELATIVE ); + } + + static void +! gui_ph_draw_end( void ) + { + gui_ph_raw_offset.x = -gui_ph_raw_offset.x; + gui_ph_raw_offset.y = -gui_ph_raw_offset.y; +! PgSetTranslation( &gui_ph_raw_offset, Pg_RELATIVE ); + } + + #ifdef USE_PANEL_GROUP + static vimmenu_T * +! gui_ph_find_buffer_item( char_u *name ) + { + vimmenu_T *top_level = root_menu; + vimmenu_T *items = NULL; + +! while( top_level != NULL && +! ( STRCMP( top_level->dname, "Buffers" ) != 0 ) ) + top_level = top_level->next; + +! if( top_level != NULL ) + { + items = top_level->children; + +! while( items != NULL && +! ( STRCMP( items->dname, name ) != 0 ) ) + items = items->next; + } + return items; + } + + static void +! gui_ph_pg_set_buffer_num( int_u buf_num ) + { + int i; + char search[16]; + char *mark; + +! if( gui.vimTextArea == NULL || buf_num == 0 ) + return; + + search[0] = '('; +! ultoa( buf_num, &search[1], 10 ); +! STRCAT( search, ")" ); + +! for( i = 0; i < num_panels; i++ ) + { + /* find the last "(" in the panel title and see if the buffer + * number in the title matches the one we're looking for */ +! mark = STRRCHR( panel_titles[ i ], '(' ); +! if( mark != NULL && STRCMP( mark, search ) == 0 ) + { +! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_CURRENT_INDEX, +! i, 0 ); + } + } + } +--- 836,909 ---- + + /* TODO: Set a clipping rect? */ + static void +! gui_ph_draw_start(void) + { + PhGC_t *gc; + + gc = PgGetGC(); +! PgSetRegion(PtWidgetRid(PtFindDisjoint(gui.vimTextArea))); +! PgClearClippingsCx(gc); +! PgClearTranslationCx(gc); + +! PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset); +! PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL)); + +! PgSetTranslation(&gui_ph_raw_offset, Pg_RELATIVE); + } + + static void +! gui_ph_draw_end(void) + { + gui_ph_raw_offset.x = -gui_ph_raw_offset.x; + gui_ph_raw_offset.y = -gui_ph_raw_offset.y; +! PgSetTranslation(&gui_ph_raw_offset, Pg_RELATIVE); + } + + #ifdef USE_PANEL_GROUP + static vimmenu_T * +! gui_ph_find_buffer_item(char_u *name) + { + vimmenu_T *top_level = root_menu; + vimmenu_T *items = NULL; + +! while (top_level != NULL && +! (STRCMP(top_level->dname, "Buffers") != 0)) + top_level = top_level->next; + +! if (top_level != NULL) + { + items = top_level->children; + +! while (items != NULL && +! (STRCMP(items->dname, name) != 0)) + items = items->next; + } + return items; + } + + static void +! gui_ph_pg_set_buffer_num(int_u buf_num) + { + int i; + char search[16]; + char *mark; + +! if (gui.vimTextArea == NULL || buf_num == 0) + return; + + search[0] = '('; +! ultoa(buf_num, &search[1], 10); +! STRCAT(search, ")"); + +! for (i = 0; i < num_panels; i++) + { + /* find the last "(" in the panel title and see if the buffer + * number in the title matches the one we're looking for */ +! mark = STRRCHR(panel_titles[ i ], '('); +! if (mark != NULL && STRCMP(mark, search) == 0) + { +! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_CURRENT_INDEX, +! i, 0); + } + } + } +*************** +*** 912,930 **** + gui_ph_handle_pg_change( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info ) + { + vimmenu_T *menu; + PtPanelGroupCallback_t *panel; + +! if( info->event != NULL ) + { + panel = info->cbdata; +! if( panel->new_panel != NULL ) + { +! menu = gui_ph_find_buffer_item( panel->new_panel ); +! if( menu ) +! gui_menu_cb( menu ); + } + } + return Pt_CONTINUE; +--- 912,930 ---- + gui_ph_handle_pg_change( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info) + { + vimmenu_T *menu; + PtPanelGroupCallback_t *panel; + +! if (info->event != NULL) + { + panel = info->cbdata; +! if (panel->new_panel != NULL) + { +! menu = gui_ph_find_buffer_item(panel->new_panel); +! if (menu) +! gui_menu_cb(menu); + } + } + return Pt_CONTINUE; +*************** +*** 935,951 **** + short *top, + short *bottom, + short *left, +! short *right ) + { + unsigned short abs_raw_x, abs_raw_y, abs_panel_x, abs_panel_y; + const unsigned short *margin_top, *margin_bottom; + const unsigned short *margin_left, *margin_right; + +! PtGetAbsPosition( gui.vimTextArea, &abs_raw_x, &abs_raw_y ); +! PtGetAbsPosition( gui.vimPanelGroup, &abs_panel_x, &abs_panel_y ); + +! PtGetResource( gui.vimPanelGroup, Pt_ARG_MARGIN_RIGHT, &margin_right, 0 ); +! PtGetResource( gui.vimPanelGroup, Pt_ARG_MARGIN_BOTTOM, &margin_bottom, 0 ); + + abs_raw_x -= abs_panel_x; + abs_raw_y -= abs_panel_y; +--- 935,951 ---- + short *top, + short *bottom, + short *left, +! short *right) + { + unsigned short abs_raw_x, abs_raw_y, abs_panel_x, abs_panel_y; + const unsigned short *margin_top, *margin_bottom; + const unsigned short *margin_left, *margin_right; + +! PtGetAbsPosition(gui.vimTextArea, &abs_raw_x, &abs_raw_y); +! PtGetAbsPosition(gui.vimPanelGroup, &abs_panel_x, &abs_panel_y); + +! PtGetResource(gui.vimPanelGroup, Pt_ARG_MARGIN_RIGHT, &margin_right, 0); +! PtGetResource(gui.vimPanelGroup, Pt_ARG_MARGIN_BOTTOM, &margin_bottom, 0); + + abs_raw_x -= abs_panel_x; + abs_raw_y -= abs_panel_y; +*************** +*** 959,979 **** + + /* Used for the tabs for PtPanelGroup */ + static int +! gui_ph_is_buffer_item( vimmenu_T *menu, vimmenu_T *parent ) + { + char *mark; + +! if( STRCMP( parent->dname, "Buffers" ) == 0 ) + { + /* Look for '(' digits ')' */ +! mark = vim_strchr( menu->dname, '(' ); +! if( mark != NULL ) + { + mark++; +! while( isdigit( *mark ) ) + mark++; + +! if( *mark == ')' ) + return TRUE; + } + } +--- 959,979 ---- + + /* Used for the tabs for PtPanelGroup */ + static int +! gui_ph_is_buffer_item(vimmenu_T *menu, vimmenu_T *parent) + { + char *mark; + +! if (STRCMP(parent->dname, "Buffers") == 0) + { + /* Look for '(' digits ')' */ +! mark = vim_strchr(menu->dname, '('); +! if (mark != NULL) + { + mark++; +! while (isdigit(*mark)) + mark++; + +! if (*mark == ')') + return TRUE; + } + } +*************** +*** 981,1043 **** + } + + static void +! gui_ph_pg_add_buffer(char *name ) + { + char **new_titles = NULL; + +! new_titles = (char **) alloc( ( num_panels + 1 ) * sizeof( char ** ) ); +! if( new_titles != NULL ) + { +! if( num_panels > 0 ) +! memcpy( new_titles, panel_titles, num_panels * sizeof( char ** ) ); + + new_titles[ num_panels++ ] = name; + +! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles, +! num_panels ); + +! vim_free( panel_titles ); + panel_titles = new_titles; + } + } + + static void +! gui_ph_pg_remove_buffer( char *name ) + { + int i; + char **new_titles = NULL; + + /* If there is only 1 panel, we just use the temporary place holder */ +! if( num_panels > 1 ) + { +! new_titles = (char **) alloc( ( num_panels - 1 ) * sizeof( char ** ) ); +! if( new_titles != NULL ) + { + char **s = new_titles; + /* Copy all the titles except the one we're removing */ +! for( i = 0; i < num_panels; i++ ) + { +! if( STRCMP( panel_titles[ i ], name ) != 0 ) + { + *s++ = panel_titles[ i ]; + } + } + num_panels--; + +! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles, +! num_panels ); + +! vim_free( panel_titles ); + panel_titles = new_titles; + } + } + else + { + num_panels--; +! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, &empty_title, +! 1 ); + +! vim_free( panel_titles ); + panel_titles = NULL; + } + } +--- 981,1043 ---- + } + + static void +! gui_ph_pg_add_buffer(char *name) + { + char **new_titles = NULL; + +! new_titles = (char **) alloc((num_panels + 1) * sizeof(char **)); +! if (new_titles != NULL) + { +! if (num_panels > 0) +! memcpy(new_titles, panel_titles, num_panels * sizeof(char **)); + + new_titles[ num_panels++ ] = name; + +! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles, +! num_panels); + +! vim_free(panel_titles); + panel_titles = new_titles; + } + } + + static void +! gui_ph_pg_remove_buffer(char *name) + { + int i; + char **new_titles = NULL; + + /* If there is only 1 panel, we just use the temporary place holder */ +! if (num_panels > 1) + { +! new_titles = (char **) alloc((num_panels - 1) * sizeof(char **)); +! if (new_titles != NULL) + { + char **s = new_titles; + /* Copy all the titles except the one we're removing */ +! for (i = 0; i < num_panels; i++) + { +! if (STRCMP(panel_titles[ i ], name) != 0) + { + *s++ = panel_titles[ i ]; + } + } + num_panels--; + +! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles, +! num_panels); + +! vim_free(panel_titles); + panel_titles = new_titles; + } + } + else + { + num_panels--; +! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, &empty_title, +! 1); + +! vim_free(panel_titles); + panel_titles = NULL; + } + } +*************** +*** 1047,1060 **** + gui_ph_handle_buffer_remove( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info ) + { + vimmenu_T *menu; + +! if( data != NULL ) + { + menu = (vimmenu_T *) data; +! gui_ph_pg_remove_buffer( menu->dname ); + } + + return Pt_CONTINUE; +--- 1047,1060 ---- + gui_ph_handle_buffer_remove( + PtWidget_t *widget, + void *data, +! PtCallbackInfo_t *info) + { + vimmenu_T *menu; + +! if (data != NULL) + { + menu = (vimmenu_T *) data; +! gui_ph_pg_remove_buffer(menu->dname); + } + + return Pt_CONTINUE; +*************** +*** 1062,1074 **** + #endif + + static int +! gui_ph_pane_resize( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) + { +! if( PtWidgetIsRealized( widget ) ) + { + is_ignore_draw = TRUE; +! PtStartFlux( gui.vimContainer ); +! PtContainerHold( gui.vimContainer ); + } + + return Pt_CONTINUE; +--- 1062,1074 ---- + #endif + + static int +! gui_ph_pane_resize(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) + { +! if (PtWidgetIsRealized(widget)) + { + is_ignore_draw = TRUE; +! PtStartFlux(gui.vimContainer); +! PtContainerHold(gui.vimContainer); + } + + return Pt_CONTINUE; +*************** +*** 1078,1084 **** + + #ifdef FEAT_MBYTE + void +! gui_ph_encoding_changed( int new_encoding ) + { + /* Default encoding is latin1 */ + char *charset = "latin1"; +--- 1078,1084 ---- + + #ifdef FEAT_MBYTE + void +! gui_ph_encoding_changed(int new_encoding) + { + /* Default encoding is latin1 */ + char *charset = "latin1"; +*************** +*** 1094,1106 **** + { DBCS_CHS, "gb" } + }; + +! for( i = 0; i < ARRAY_LENGTH( charsets ); i++ ) + { +! if( new_encoding == charsets[ i ].encoding ) + charset = charsets[ i ].name; + } + +! charset_translate = PxTranslateSet( charset_translate, charset ); + } + #endif + +--- 1094,1106 ---- + { DBCS_CHS, "gb" } + }; + +! for (i = 0; i < ARRAY_LENGTH(charsets); i++) + { +! if (new_encoding == charsets[ i ].encoding) + charset = charsets[ i ].name; + } + +! charset_translate = PxTranslateSet(charset_translate, charset); + } + #endif + +*************** +*** 1112,1118 **** + int *argc; + char **argv; + { +! PtInit( NULL ); + } + + int +--- 1112,1118 ---- + int *argc; + char **argv; + { +! PtInit(NULL); + } + + int +*************** +*** 1124,1213 **** + PhDim_t window_size = {100, 100}; /* Arbitrary values */ + PhPoint_t pos = {0, 0}; + +! gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE ); +! if( gui.event_buffer == NULL ) + return FAIL; + + /* Get a translation so we can convert from ISO Latin-1 to UTF */ +! charset_translate = PxTranslateSet( NULL, "latin1" ); + + /* The +2 is for the 1 pixel dark line on each side */ + gui.border_offset = gui.border_width = GUI_PH_MARGIN + 2; + + /* Handle close events ourselves */ +! PtSetArg( &args[ n++ ], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE, Ph_WM_CLOSE ); +! PtSetArg( &args[ n++ ], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_TRUE, +! Ph_WM_CLOSE | Ph_WM_RESIZE | Ph_WM_FOCUS ); +! PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 ); +! gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args ); +! if( gui.vimWindow == NULL ) + return FAIL; + +! PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL ); +! PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING, +! gui_ph_handle_window_open, NULL ); + + n = 0; +! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_ALL, Pt_IS_ANCHORED ); +! PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_POS, &pos, 0 ); + + #ifdef USE_PANEL_GROUP + /* Put in a temprary place holder title */ +! PtSetArg( &args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1 ); + +! gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args ); +! if( gui.vimPanelGroup == NULL ) + return FAIL; + +! PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING, +! gui_ph_handle_pg_change, NULL ); + #else + /* Turn off all edge decorations */ +! PtSetArg( &args[ n++ ], Pt_ARG_BASIC_FLAGS, Pt_FALSE, Pt_ALL ); +! PtSetArg( &args[ n++ ], Pt_ARG_BEVEL_WIDTH, 0, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_WIDTH, 0, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 0, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_CONTAINER_FLAGS, Pt_TRUE, Pt_AUTO_EXTENT ); + +! gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args ); +! if( gui.vimContainer == NULL ) + return FAIL; + +! PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL ); + #endif + + /* Size for the text area is set in gui_mch_set_text_area_pos */ + n = 0; + +! PtSetArg( &args[ n++ ], Pt_ARG_RAW_DRAW_F, gui_ph_handle_raw_draw, 1 ); +! PtSetArg( &args[ n++ ], Pt_ARG_BEVEL_WIDTH, GUI_PH_MARGIN, 0 ); + /* + * Using focus render also causes the whole widget to be redrawn + * whenever it changes focus, which is very annoying :p + */ +! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, +! Pt_GETS_FOCUS | Pt_HIGHLIGHTED ); + #ifndef FEAT_MOUSESHAPE +! PtSetArg( &args[ n++ ], Pt_ARG_CURSOR_TYPE, GUI_PH_MOUSE_TYPE, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_CURSOR_COLOR, gui_ph_mouse_color, 0 ); + #endif + +! gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args ); +! if( gui.vimTextArea == NULL) + return FAIL; + + /* TODO: use PtAddEventHandlers instead? */ + /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */ +! PtAddEventHandler( gui.vimTextArea, + Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE | Ph_EV_PTR_MOTION_BUTTON, +! gui_ph_handle_mouse, NULL ); +! PtAddEventHandler( gui.vimTextArea, Ph_EV_KEY, +! gui_ph_handle_keyboard, NULL ); +! PtAddCallback( gui.vimTextArea, Pt_CB_GOT_FOCUS, +! gui_ph_handle_focus, NULL ); +! PtAddCallback( gui.vimTextArea, Pt_CB_LOST_FOCUS, +! gui_ph_handle_focus, NULL ); + + /* + * Now that the text area widget has been created, set up the colours, +--- 1124,1213 ---- + PhDim_t window_size = {100, 100}; /* Arbitrary values */ + PhPoint_t pos = {0, 0}; + +! gui.event_buffer = (PhEvent_t *) alloc(EVENT_BUFFER_SIZE); +! if (gui.event_buffer == NULL) + return FAIL; + + /* Get a translation so we can convert from ISO Latin-1 to UTF */ +! charset_translate = PxTranslateSet(NULL, "latin1"); + + /* The +2 is for the 1 pixel dark line on each side */ + gui.border_offset = gui.border_width = GUI_PH_MARGIN + 2; + + /* Handle close events ourselves */ +! PtSetArg(&args[ n++ ], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE, Ph_WM_CLOSE); +! PtSetArg(&args[ n++ ], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_TRUE, +! Ph_WM_CLOSE | Ph_WM_RESIZE | Ph_WM_FOCUS); +! PtSetArg(&args[ n++ ], Pt_ARG_DIM, &window_size, 0); +! gui.vimWindow = PtCreateWidget(PtWindow, NULL, n, args); +! if (gui.vimWindow == NULL) + return FAIL; + +! PtAddCallback(gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL); +! PtAddCallback(gui.vimWindow, Pt_CB_WINDOW_OPENING, +! gui_ph_handle_window_open, NULL); + + n = 0; +! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_ALL, Pt_IS_ANCHORED); +! PtSetArg(&args[ n++ ], Pt_ARG_DIM, &window_size, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_POS, &pos, 0); + + #ifdef USE_PANEL_GROUP + /* Put in a temprary place holder title */ +! PtSetArg(&args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1); + +! gui.vimPanelGroup = PtCreateWidget(PtPanelGroup, gui.vimWindow, n, args); +! if (gui.vimPanelGroup == NULL) + return FAIL; + +! PtAddCallback(gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING, +! gui_ph_handle_pg_change, NULL); + #else + /* Turn off all edge decorations */ +! PtSetArg(&args[ n++ ], Pt_ARG_BASIC_FLAGS, Pt_FALSE, Pt_ALL); +! PtSetArg(&args[ n++ ], Pt_ARG_BEVEL_WIDTH, 0, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_WIDTH, 0, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 0, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_CONTAINER_FLAGS, Pt_TRUE, Pt_AUTO_EXTENT); + +! gui.vimContainer = PtCreateWidget(PtPane, gui.vimWindow, n, args); +! if (gui.vimContainer == NULL) + return FAIL; + +! PtAddCallback(gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL); + #endif + + /* Size for the text area is set in gui_mch_set_text_area_pos */ + n = 0; + +! PtSetArg(&args[ n++ ], Pt_ARG_RAW_DRAW_F, gui_ph_handle_raw_draw, 1); +! PtSetArg(&args[ n++ ], Pt_ARG_BEVEL_WIDTH, GUI_PH_MARGIN, 0); + /* + * Using focus render also causes the whole widget to be redrawn + * whenever it changes focus, which is very annoying :p + */ +! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, +! Pt_GETS_FOCUS | Pt_HIGHLIGHTED); + #ifndef FEAT_MOUSESHAPE +! PtSetArg(&args[ n++ ], Pt_ARG_CURSOR_TYPE, GUI_PH_MOUSE_TYPE, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_CURSOR_COLOR, gui_ph_mouse_color, 0); + #endif + +! gui.vimTextArea = PtCreateWidget(PtRaw, Pt_DFLT_PARENT, n, args); +! if (gui.vimTextArea == NULL) + return FAIL; + + /* TODO: use PtAddEventHandlers instead? */ + /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */ +! PtAddEventHandler(gui.vimTextArea, + Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE | Ph_EV_PTR_MOTION_BUTTON, +! gui_ph_handle_mouse, NULL); +! PtAddEventHandler(gui.vimTextArea, Ph_EV_KEY, +! gui_ph_handle_keyboard, NULL); +! PtAddCallback(gui.vimTextArea, Pt_CB_GOT_FOCUS, +! gui_ph_handle_focus, NULL); +! PtAddCallback(gui.vimTextArea, Pt_CB_LOST_FOCUS, +! gui_ph_handle_focus, NULL); + + /* + * Now that the text area widget has been created, set up the colours, +*************** +*** 1218,1278 **** + * Create the two timers, not as accurate as using the kernel timer + * functions, but good enough + */ +! gui_ph_timer_cursor = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); +! if( gui_ph_timer_cursor == NULL ) + return FAIL; + +! gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); +! if( gui_ph_timer_timeout == NULL ) + return FAIL; + +! PtAddCallback( gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE, + gui_ph_handle_timer_cursor, NULL); +! PtAddCallback( gui_ph_timer_timeout, Pt_CB_TIMER_ACTIVATE, + gui_ph_handle_timer_timeout, NULL); + + #ifdef FEAT_MENU + n = 0; +! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_LEFT_RIGHT, +! Pt_IS_ANCHORED ); +! gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow, +! n, args ); +! if( gui.vimToolBarGroup == NULL ) + return FAIL; + +! PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE, +! gui_ph_handle_menu_resize, NULL ); + + n = 0; + flags = 0; +! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 ); +! if( ! vim_strchr( p_go, GO_MENUS ) ) + { + flags |= Pt_DELAY_REALIZE; +! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, flags ); + } +! gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args ); +! if( gui.vimMenuBar == NULL ) + return FAIL; + + # ifdef FEAT_TOOLBAR + n = 0; + +! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, +! Pt_ANCHOR_LEFT_RIGHT |Pt_TOP_ANCHORED_TOP, Pt_IS_ANCHORED ); +! PtSetArg( &args[ n++ ], Pt_ARG_RESIZE_FLAGS, Pt_TRUE, +! Pt_RESIZE_Y_AS_REQUIRED ); +! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 ); + + flags = Pt_GETS_FOCUS; +! if( ! vim_strchr( p_go, GO_TOOLBAR ) ) + flags |= Pt_DELAY_REALIZE; + +! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, flags ); + +! gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args ); +! if( gui.vimToolBar == NULL ) + return FAIL; + + /* +--- 1218,1278 ---- + * Create the two timers, not as accurate as using the kernel timer + * functions, but good enough + */ +! gui_ph_timer_cursor = PtCreateWidget(PtTimer, gui.vimWindow, 0, NULL); +! if (gui_ph_timer_cursor == NULL) + return FAIL; + +! gui_ph_timer_timeout = PtCreateWidget(PtTimer, gui.vimWindow, 0, NULL); +! if (gui_ph_timer_timeout == NULL) + return FAIL; + +! PtAddCallback(gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE, + gui_ph_handle_timer_cursor, NULL); +! PtAddCallback(gui_ph_timer_timeout, Pt_CB_TIMER_ACTIVATE, + gui_ph_handle_timer_timeout, NULL); + + #ifdef FEAT_MENU + n = 0; +! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_LEFT_RIGHT, +! Pt_IS_ANCHORED); +! gui.vimToolBarGroup = PtCreateWidget(PtToolbarGroup, gui.vimWindow, +! n, args); +! if (gui.vimToolBarGroup == NULL) + return FAIL; + +! PtAddCallback(gui.vimToolBarGroup, Pt_CB_RESIZE, +! gui_ph_handle_menu_resize, NULL); + + n = 0; + flags = 0; +! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0); +! if (! vim_strchr(p_go, GO_MENUS)) + { + flags |= Pt_DELAY_REALIZE; +! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, flags); + } +! gui.vimMenuBar = PtCreateWidget(PtMenuBar, gui.vimToolBarGroup, n, args); +! if (gui.vimMenuBar == NULL) + return FAIL; + + # ifdef FEAT_TOOLBAR + n = 0; + +! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, +! Pt_ANCHOR_LEFT_RIGHT |Pt_TOP_ANCHORED_TOP, Pt_IS_ANCHORED); +! PtSetArg(&args[ n++ ], Pt_ARG_RESIZE_FLAGS, Pt_TRUE, +! Pt_RESIZE_Y_AS_REQUIRED); +! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0); + + flags = Pt_GETS_FOCUS; +! if (! vim_strchr(p_go, GO_TOOLBAR)) + flags |= Pt_DELAY_REALIZE; + +! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, flags); + +! gui.vimToolBar = PtCreateWidget(PtToolbar, gui.vimToolBarGroup, n, args); +! if (gui.vimToolBar == NULL) + return FAIL; + + /* +*************** +*** 1310,1329 **** + if (gui_win_x != -1 && gui_win_y != -1) + gui_mch_set_winpos(gui_win_x, gui_win_y); + +! return (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL; + } + + void + gui_mch_exit(int rc) + { +! PtDestroyWidget( gui.vimWindow ); + +! PxTranslateSet( charset_translate, NULL ); + +! vim_free( gui.event_buffer ); + + #ifdef USE_PANEL_GROUPS +! vim_free( panel_titles ); + #endif + } + +--- 1310,1329 ---- + if (gui_win_x != -1 && gui_win_y != -1) + gui_mch_set_winpos(gui_win_x, gui_win_y); + +! return (PtRealizeWidget(gui.vimWindow) == 0) ? OK : FAIL; + } + + void + gui_mch_exit(int rc) + { +! PtDestroyWidget(gui.vimWindow); + +! PxTranslateSet(charset_translate, NULL); + +! vim_free(gui.event_buffer); + + #ifdef USE_PANEL_GROUPS +! vim_free(panel_titles); + #endif + } + +*************** +*** 1333,1339 **** + /* When no events are available, photon will call this function, working is + * set to FALSE, and the gui_mch_update loop will exit. */ + static int +! exit_gui_mch_update( void *data ) + { + *(int *)data = FALSE; + return Pt_END; +--- 1333,1339 ---- + /* When no events are available, photon will call this function, working is + * set to FALSE, and the gui_mch_update loop will exit. */ + static int +! exit_gui_mch_update(void *data) + { + *(int *)data = FALSE; + return Pt_END; +*************** +*** 1344,1351 **** + { + int working = TRUE; + +! PtAppAddWorkProc( NULL, exit_gui_mch_update, &working ); +! while( ( working == TRUE ) && !vim_is_input_buf_full()) + { + PtProcessEvent(); + } +--- 1344,1351 ---- + { + int working = TRUE; + +! PtAppAddWorkProc(NULL, exit_gui_mch_update, &working); +! while ((working == TRUE) && !vim_is_input_buf_full()) + { + PtProcessEvent(); + } +*************** +*** 1356,1378 **** + { + is_timeout = FALSE; + +! if( wtime > 0 ) +! PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, wtime, 0 ); + +! while( 1 ) + { + PtProcessEvent(); +! if( input_available() ) + { +! PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 ); + return OK; + } +! else if( is_timeout == TRUE ) + return FAIL; + } + } + +! #if defined( FEAT_BROWSE ) || defined( PROTO ) + /* + * Put up a file requester. + * Returns the selected name in allocated memory, or NULL for Cancel. +--- 1356,1378 ---- + { + is_timeout = FALSE; + +! if (wtime > 0) +! PtSetResource(gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, wtime, 0); + +! while (1) + { + PtProcessEvent(); +! if (input_available()) + { +! PtSetResource(gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0); + return OK; + } +! else if (is_timeout == TRUE) + return FAIL; + } + } + +! #if defined(FEAT_BROWSE) || defined(PROTO) + /* + * Put up a file requester. + * Returns the selected name in allocated memory, or NULL for Cancel. +*************** +*** 1398,1409 **** + char_u *open_text = NULL; + + flags = 0; +! memset( &file, 0, sizeof( file ) ); + +! default_path = alloc( MAXPATHL + 1 + NAME_MAX + 1 ); +! if( default_path != NULL ) + { +! if( saving == TRUE ) + { + /* Don't need Pt_FSR_CONFIRM_EXISTING, vim will ask anyway */ + flags |= Pt_FSR_NO_FCHECK; +--- 1398,1409 ---- + char_u *open_text = NULL; + + flags = 0; +! memset(&file, 0, sizeof(file)); + +! default_path = alloc(MAXPATHL + 1 + NAME_MAX + 1); +! if (default_path != NULL) + { +! if (saving == TRUE) + { + /* Don't need Pt_FSR_CONFIRM_EXISTING, vim will ask anyway */ + flags |= Pt_FSR_NO_FCHECK; +*************** +*** 1411,1433 **** + } + + /* combine the directory and filename into a single path */ +! if( initdir == NULL || *initdir == NUL ) + { +! mch_dirname( default_path, MAXPATHL ); + initdir = default_path; + } + else + { +! STRCPY( default_path, initdir ); + initdir = default_path; + } + +! if( default_name != NULL ) + { +! if( default_path[ STRLEN( default_path ) - 1 ] != '/' ) +! STRCAT( default_path, "/" ); + +! STRCAT( default_path, default_name ); + } + + /* TODO: add a filter? */ +--- 1411,1433 ---- + } + + /* combine the directory and filename into a single path */ +! if (initdir == NULL || *initdir == NUL) + { +! mch_dirname(default_path, MAXPATHL); + initdir = default_path; + } + else + { +! STRCPY(default_path, initdir); + initdir = default_path; + } + +! if (default_name != NULL) + { +! if (default_path[ STRLEN(default_path) - 1 ] != '/') +! STRCAT(default_path, "/"); + +! STRCAT(default_path, default_name); + } + + /* TODO: add a filter? */ +*************** +*** 1441,1495 **** + NULL, + NULL, + &file, +! flags ); + +! vim_free( default_path ); + +! if( file.ret == Pt_FSDIALOG_BTN1 ) + return vim_strsave(file.path); + } + return NULL; + } + #endif + +! #if defined( FEAT_GUI_DIALOG ) || defined( PROTO ) + static PtWidget_t *gui_ph_dialog_text = NULL; + + static int +! gui_ph_dialog_close( int button, void *data ) + { + PtModalCtrl_t *modal_ctrl = data; + char_u *dialog_text, *vim_text; + +! if( gui_ph_dialog_text != NULL ) + { +! PtGetResource( gui_ph_dialog_text, Pt_ARG_TEXT_STRING, &dialog_text, 0 ); +! PtGetResource( gui_ph_dialog_text, Pt_ARG_POINTER, &vim_text, 0 ); +! STRNCPY( vim_text, dialog_text, IOSIZE - 1 ); + } + +! PtModalUnblock( modal_ctrl, (void *) button ); + + return Pt_TRUE; + } + + static int +! gui_ph_dialog_text_enter( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) + { +! if( info->reason_subtype == Pt_EDIT_ACTIVATE ) +! gui_ph_dialog_close( 1, data ); + return Pt_CONTINUE; + } + + static int +! gui_ph_dialog_esc( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) + { + PhKeyEvent_t *key; + +! key = PhGetData( info->event ); +! if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) ) + { +! gui_ph_dialog_close( 0, data ); + return Pt_CONSUME; + } + return Pt_PROCESS; +--- 1441,1495 ---- + NULL, + NULL, + &file, +! flags); + +! vim_free(default_path); + +! if (file.ret == Pt_FSDIALOG_BTN1) + return vim_strsave(file.path); + } + return NULL; + } + #endif + +! #if defined(FEAT_GUI_DIALOG) || defined(PROTO) + static PtWidget_t *gui_ph_dialog_text = NULL; + + static int +! gui_ph_dialog_close(int button, void *data) + { + PtModalCtrl_t *modal_ctrl = data; + char_u *dialog_text, *vim_text; + +! if (gui_ph_dialog_text != NULL) + { +! PtGetResource(gui_ph_dialog_text, Pt_ARG_TEXT_STRING, &dialog_text, 0); +! PtGetResource(gui_ph_dialog_text, Pt_ARG_POINTER, &vim_text, 0); +! STRNCPY(vim_text, dialog_text, IOSIZE - 1); + } + +! PtModalUnblock(modal_ctrl, (void *) button); + + return Pt_TRUE; + } + + static int +! gui_ph_dialog_text_enter(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) + { +! if (info->reason_subtype == Pt_EDIT_ACTIVATE) +! gui_ph_dialog_close(1, data); + return Pt_CONTINUE; + } + + static int +! gui_ph_dialog_esc(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) + { + PhKeyEvent_t *key; + +! key = PhGetData(info->event); +! if ((key->key_flags & Pk_KF_Cap_Valid) && (key->key_cap == Pk_Escape)) + { +! gui_ph_dialog_close(0, data); + return Pt_CONSUME; + } + return Pt_PROCESS; +*************** +*** 1518,1557 **** + + button_count = len = i = 0; + +! if( buttons == NULL || *buttons == NUL ) + return -1; + + /* There is one less separator than buttons, so bump up the button count */ + button_count = 1; + + /* Count string length and number of seperators */ +! for( str = buttons; *str; str++ ) + { + len++; +! if( *str == DLG_BUTTON_SEP ) + button_count++; + } + +! if ( title == NULL ) + title = "Vim"; + +! buttons_copy = alloc( len + 1 ); +! button_array = (char_u **) alloc( button_count * sizeof( char_u * ) ); +! if( buttons_copy != NULL && button_array != NULL ) + { +! STRCPY( buttons_copy, buttons ); + + /* + * Convert DLG_BUTTON_SEP into NUL's and fill in + * button_array with the pointer to each NUL terminated string + */ + str = buttons_copy; +! for( i = 0; i < button_count; i++ ) + { + button_array[ i ] = str; +! for( ; *str; str++ ) + { +! if( *str == DLG_BUTTON_SEP ) + { + *str++ = NUL; + break; +--- 1518,1557 ---- + + button_count = len = i = 0; + +! if (buttons == NULL || *buttons == NUL) + return -1; + + /* There is one less separator than buttons, so bump up the button count */ + button_count = 1; + + /* Count string length and number of seperators */ +! for (str = buttons; *str; str++) + { + len++; +! if (*str == DLG_BUTTON_SEP) + button_count++; + } + +! if (title == NULL) + title = "Vim"; + +! buttons_copy = alloc(len + 1); +! button_array = (char_u **) alloc(button_count * sizeof(char_u *)); +! if (buttons_copy != NULL && button_array != NULL) + { +! STRCPY(buttons_copy, buttons); + + /* + * Convert DLG_BUTTON_SEP into NUL's and fill in + * button_array with the pointer to each NUL terminated string + */ + str = buttons_copy; +! for (i = 0; i < button_count; i++) + { + button_array[ i ] = str; +! for (; *str; str++) + { +! if (*str == DLG_BUTTON_SEP) + { + *str++ = NUL; + break; +*************** +*** 1565,1571 **** + NULL, + message, NULL, + button_count, (const char **) button_array, NULL, +! default_button, 0, Pt_MODAL ); + #else + /* Writing the dialog ourselves lets us add extra features, like + * trapping the escape key and returning 0 to vim */ +--- 1565,1571 ---- + NULL, + message, NULL, + button_count, (const char **) button_array, NULL, +! default_button, 0, Pt_MODAL); + #else + /* Writing the dialog ourselves lets us add extra features, like + * trapping the escape key and returning 0 to vim */ +*************** +*** 1576,1607 **** + PtModalCtrl_t modal_ctrl; + PtDialogInfo_t di; + +! memset( &di, 0, sizeof( di ) ); +! memset( &modal_ctrl, 0, sizeof( modal_ctrl ) ); + + n = 0; +! PtSetArg( &args[n++], Pt_ARG_GROUP_ROWS_COLS, 0, 0 ); +! PtSetArg( &args[n++], Pt_ARG_WIDTH, 350, 0 ); +! PtSetArg( &args[n++], Pt_ARG_GROUP_ORIENTATION, +! Pt_GROUP_VERTICAL, 0 ); +! PtSetArg( &args[n++], Pt_ARG_GROUP_FLAGS, +! Pt_TRUE, Pt_GROUP_NO_KEYS | Pt_GROUP_STRETCH_HORIZONTAL ); +! PtSetArg( &args[n++], Pt_ARG_CONTAINER_FLAGS, Pt_FALSE, Pt_TRUE ); +! pane = PtCreateWidget( PtGroup, NULL, n, args ); + + n = 0; +! PtSetArg( &args[n++], Pt_ARG_TEXT_STRING, message, 0 ); +! PtCreateWidget( PtLabel, pane, n, args ); + +! if( textfield != NULL ) + { + n = 0; +! PtSetArg( &args[n++], Pt_ARG_MAX_LENGTH, IOSIZE - 1, 0 ); +! PtSetArg( &args[n++], Pt_ARG_TEXT_STRING, textfield, 0 ); +! PtSetArg( &args[n++], Pt_ARG_POINTER, textfield, 0 ); +! gui_ph_dialog_text = PtCreateWidget( PtText, pane, n, args ); +! PtAddCallback( gui_ph_dialog_text, Pt_CB_ACTIVATE, +! gui_ph_dialog_text_enter, &modal_ctrl ); + } + + di.parent = gui.vimWindow; +--- 1576,1607 ---- + PtModalCtrl_t modal_ctrl; + PtDialogInfo_t di; + +! memset(&di, 0, sizeof(di)); +! memset(&modal_ctrl, 0, sizeof(modal_ctrl)); + + n = 0; +! PtSetArg(&args[n++], Pt_ARG_GROUP_ROWS_COLS, 0, 0); +! PtSetArg(&args[n++], Pt_ARG_WIDTH, 350, 0); +! PtSetArg(&args[n++], Pt_ARG_GROUP_ORIENTATION, +! Pt_GROUP_VERTICAL, 0); +! PtSetArg(&args[n++], Pt_ARG_GROUP_FLAGS, +! Pt_TRUE, Pt_GROUP_NO_KEYS | Pt_GROUP_STRETCH_HORIZONTAL); +! PtSetArg(&args[n++], Pt_ARG_CONTAINER_FLAGS, Pt_FALSE, Pt_TRUE); +! pane = PtCreateWidget(PtGroup, NULL, n, args); + + n = 0; +! PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, message, 0); +! PtCreateWidget(PtLabel, pane, n, args); + +! if (textfield != NULL) + { + n = 0; +! PtSetArg(&args[n++], Pt_ARG_MAX_LENGTH, IOSIZE - 1, 0); +! PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, textfield, 0); +! PtSetArg(&args[n++], Pt_ARG_POINTER, textfield, 0); +! gui_ph_dialog_text = PtCreateWidget(PtText, pane, n, args); +! PtAddCallback(gui_ph_dialog_text, Pt_CB_ACTIVATE, +! gui_ph_dialog_text_enter, &modal_ctrl); + } + + di.parent = gui.vimWindow; +*************** +*** 1616,1641 **** + di.callback = gui_ph_dialog_close; + di.data = &modal_ctrl; + +! dialog = PtCreateDialog( &di ); +! PtAddFilterCallback( dialog, Ph_EV_KEY, +! gui_ph_dialog_esc, &modal_ctrl ); + +! if( gui_ph_dialog_text != NULL ) +! PtGiveFocus( gui_ph_dialog_text, NULL ); + + /* Open dialog, block the vim window and wait for the dialog to close */ +! PtRealizeWidget( dialog ); +! PtMakeModal( dialog, Ph_CURSOR_NOINPUT, Ph_CURSOR_DEFAULT_COLOR ); +! dialog_result = (int) PtModalBlock( &modal_ctrl, 0 ); + +! PtDestroyWidget( dialog ); + gui_ph_dialog_text = NULL; + } + #endif + } + +! vim_free( button_array ); +! vim_free( buttons_copy ); + + return dialog_result; + } +--- 1616,1641 ---- + di.callback = gui_ph_dialog_close; + di.data = &modal_ctrl; + +! dialog = PtCreateDialog(&di); +! PtAddFilterCallback(dialog, Ph_EV_KEY, +! gui_ph_dialog_esc, &modal_ctrl); + +! if (gui_ph_dialog_text != NULL) +! PtGiveFocus(gui_ph_dialog_text, NULL); + + /* Open dialog, block the vim window and wait for the dialog to close */ +! PtRealizeWidget(dialog); +! PtMakeModal(dialog, Ph_CURSOR_NOINPUT, Ph_CURSOR_DEFAULT_COLOR); +! dialog_result = (int) PtModalBlock(&modal_ctrl, 0); + +! PtDestroyWidget(dialog); + gui_ph_dialog_text = NULL; + } + #endif + } + +! vim_free(button_array); +! vim_free(buttons_copy); + + return dialog_result; + } +*************** +*** 1648,1654 **** + { + PhPoint_t *pos; + +! pos = PtWidgetPos( gui.vimWindow, NULL ); + + *x = pos->x; + *y = pos->y; +--- 1648,1654 ---- + { + PhPoint_t *pos; + +! pos = PtWidgetPos(gui.vimWindow, NULL); + + *x = pos->x; + *y = pos->y; +*************** +*** 1661,1667 **** + { + PhPoint_t pos = { x, y }; + +! PtSetResource( gui.vimWindow, Pt_ARG_POS, &pos, 0 ); + } + + void +--- 1661,1667 ---- + { + PhPoint_t pos = { x, y }; + +! PtSetResource(gui.vimWindow, Pt_ARG_POS, &pos, 0); + } + + void +*************** +*** 1677,1686 **** + window_size.h += pg_margin_top + pg_margin_bottom; + #endif + +! PtSetResource( gui.vimWindow, Pt_ARG_MINIMUM_DIM, &min_size, 0 ); +! PtSetResource( gui.vimWindow, Pt_ARG_DIM, &window_size, 0 ); + +! if( ! PtWidgetIsRealized( gui.vimWindow ) ) + gui_ph_resize_container(); + } + +--- 1677,1686 ---- + window_size.h += pg_margin_top + pg_margin_bottom; + #endif + +! PtSetResource(gui.vimWindow, Pt_ARG_MINIMUM_DIM, &min_size, 0); +! PtSetResource(gui.vimWindow, Pt_ARG_DIM, &window_size, 0); + +! if (! PtWidgetIsRealized(gui.vimWindow)) + gui_ph_resize_container(); + } + +*************** +*** 1693,1700 **** + { + PhRect_t console; + +! PhWindowQueryVisible( Ph_QUERY_WORKSPACE, 0, +! PhInputGroup( NULL ), &console ); + + *screen_w = console.lr.x - console.ul.x + 1; + *screen_h = console.lr.y - console.ul.y + 1; +--- 1693,1700 ---- + { + PhRect_t console; + +! PhWindowQueryVisible(Ph_QUERY_WORKSPACE, 0, +! PhInputGroup(NULL), &console); + + *screen_w = console.lr.x - console.ul.x + 1; + *screen_h = console.lr.y - console.ul.y + 1; +*************** +*** 1705,1715 **** + { + PhWindowEvent_t event; + +! memset( &event, 0, sizeof (event) ); + event.event_f = Ph_WM_HIDE; + event.event_state = Ph_WM_EVSTATE_HIDE; +! event.rid = PtWidgetRid( gui.vimWindow ); +! PtForwardWindowEvent( &event ); + } + + #if defined(FEAT_EVAL) || defined(PROTO) +--- 1705,1715 ---- + { + PhWindowEvent_t event; + +! memset(&event, 0, sizeof (event)); + event.event_f = Ph_WM_HIDE; + event.event_state = Ph_WM_EVSTATE_HIDE; +! event.rid = PtWidgetRid(gui.vimWindow); +! PtForwardWindowEvent(&event); + } + + #if defined(FEAT_EVAL) || defined(PROTO) +*************** +*** 1721,1731 **** + { + PhWindowEvent_t event; + +! memset( &event, 0, sizeof (event) ); + event.event_f = Ph_WM_TOFRONT; + event.event_state = Ph_WM_EVSTATE_FFRONT; +! event.rid = PtWidgetRid( gui.vimWindow ); +! PtForwardWindowEvent( &event ); + } + #endif + +--- 1721,1731 ---- + { + PhWindowEvent_t event; + +! memset(&event, 0, sizeof (event)); + event.event_f = Ph_WM_TOFRONT; + event.event_state = Ph_WM_EVSTATE_FFRONT; +! event.rid = PtWidgetRid(gui.vimWindow); +! PtForwardWindowEvent(&event); + } + #endif + +*************** +*** 1733,1741 **** + gui_mch_settitle(char_u *title, char_u *icon) + { + #ifdef USE_PANEL_GROUP +! gui_ph_pg_set_buffer_num( curwin->w_buffer->b_fnum ); + #endif +! PtSetResource( gui.vimWindow, Pt_ARG_WINDOW_TITLE, title, 0 ); + /* Not sure what to do with the icon text, set balloon text somehow? */ + } + +--- 1733,1741 ---- + gui_mch_settitle(char_u *title, char_u *icon) + { + #ifdef USE_PANEL_GROUP +! gui_ph_pg_set_buffer_num(curwin->w_buffer->b_fnum); + #endif +! PtSetResource(gui.vimWindow, Pt_ARG_WINDOW_TITLE, title, 0); + /* Not sure what to do with the icon text, set balloon text somehow? */ + } + +*************** +*** 1748,1757 **** + int n = 0; + PtArg_t args[3]; + +! PtSetArg( &args[ n++ ], Pt_ARG_MAXIMUM, max, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_SLIDER_SIZE, size, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_GAUGE_VALUE, val, 0 ); +! PtSetResources( sb->id, n, args ); + } + + void +--- 1748,1757 ---- + int n = 0; + PtArg_t args[3]; + +! PtSetArg(&args[ n++ ], Pt_ARG_MAXIMUM, max, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_SLIDER_SIZE, size, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_GAUGE_VALUE, val, 0); +! PtSetResources(sb->id, n, args); + } + + void +*************** +*** 1759,1765 **** + { + PhArea_t area = {{ x, y }, { w, h }}; + +! PtSetResource( sb->id, Pt_ARG_AREA, &area, 0 ); + } + + void +--- 1759,1765 ---- + { + PhArea_t area = {{ x, y }, { w, h }}; + +! PtSetResource(sb->id, Pt_ARG_AREA, &area, 0); + } + + void +*************** +*** 1775,1786 **** + * + * Also, don't let the scrollbar get focus + */ +! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, +! Pt_DELAY_REALIZE | Pt_GETS_FOCUS ); +! PtSetArg( &args[ n++ ], Pt_ARG_SCROLLBAR_FLAGS, Pt_SCROLLBAR_SHOW_ARROWS, 0); + #if 0 + /* Don't need this anchoring for the scrollbars */ +! if( orient == SBAR_HORIZ ) + { + anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | + Pt_LEFT_ANCHORED_LEFT | Pt_RIGHT_ANCHORED_RIGHT; +--- 1775,1786 ---- + * + * Also, don't let the scrollbar get focus + */ +! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, +! Pt_DELAY_REALIZE | Pt_GETS_FOCUS); +! PtSetArg(&args[ n++ ], Pt_ARG_SCROLLBAR_FLAGS, Pt_SCROLLBAR_SHOW_ARROWS, 0); + #if 0 + /* Don't need this anchoring for the scrollbars */ +! if (orient == SBAR_HORIZ) + { + anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | + Pt_LEFT_ANCHORED_LEFT | Pt_RIGHT_ANCHORED_RIGHT; +*************** +*** 1788,1827 **** + else + { + anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | Pt_TOP_ANCHORED_TOP; +! if( sb->wp != NULL ) + { +! if( sb == &sb->wp->w_scrollbars[ SBAR_LEFT ] ) + anchor_flags |= Pt_LEFT_ANCHORED_LEFT; + else + anchor_flags |= Pt_RIGHT_ANCHORED_RIGHT; + } + } +! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, anchor_flags, Pt_IS_ANCHORED ); + #endif +! PtSetArg( &args[ n++ ], Pt_ARG_ORIENTATION, +! (orient == SBAR_HORIZ) ? Pt_HORIZONTAL : Pt_VERTICAL, 0 ); + #ifdef USE_PANEL_GROUP +! sb->id = PtCreateWidget( PtScrollbar, gui.vimPanelGroup, n, args ); + #else +! sb->id = PtCreateWidget( PtScrollbar, gui.vimContainer, n, args ); + #endif + +! PtAddCallback( sb->id, Pt_CB_SCROLLBAR_MOVE, gui_ph_handle_scrollbar, sb ); + } + + void + gui_mch_enable_scrollbar(scrollbar_T *sb, int flag) + { +! if( flag != 0 ) +! PtRealizeWidget( sb->id ); + else +! PtUnrealizeWidget( sb->id ); + } + + void + gui_mch_destroy_scrollbar(scrollbar_T *sb) + { +! PtDestroyWidget( sb->id ); + sb->id = NULL; + } + +--- 1788,1827 ---- + else + { + anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | Pt_TOP_ANCHORED_TOP; +! if (sb->wp != NULL) + { +! if (sb == &sb->wp->w_scrollbars[ SBAR_LEFT ]) + anchor_flags |= Pt_LEFT_ANCHORED_LEFT; + else + anchor_flags |= Pt_RIGHT_ANCHORED_RIGHT; + } + } +! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, anchor_flags, Pt_IS_ANCHORED); + #endif +! PtSetArg(&args[ n++ ], Pt_ARG_ORIENTATION, +! (orient == SBAR_HORIZ) ? Pt_HORIZONTAL : Pt_VERTICAL, 0); + #ifdef USE_PANEL_GROUP +! sb->id = PtCreateWidget(PtScrollbar, gui.vimPanelGroup, n, args); + #else +! sb->id = PtCreateWidget(PtScrollbar, gui.vimContainer, n, args); + #endif + +! PtAddCallback(sb->id, Pt_CB_SCROLLBAR_MOVE, gui_ph_handle_scrollbar, sb); + } + + void + gui_mch_enable_scrollbar(scrollbar_T *sb, int flag) + { +! if (flag != 0) +! PtRealizeWidget(sb->id); + else +! PtUnrealizeWidget(sb->id); + } + + void + gui_mch_destroy_scrollbar(scrollbar_T *sb) + { +! PtDestroyWidget(sb->id); + sb->id = NULL; + } + +*************** +*** 1866,1873 **** + return; + + if (shape == MSHAPE_HIDE || gui.pointer_hidden) +! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_NONE, +! 0 ); + else + { + if (shape >= MSHAPE_NUMBERED) +--- 1866,1873 ---- + return; + + if (shape == MSHAPE_HIDE || gui.pointer_hidden) +! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_NONE, +! 0); + else + { + if (shape >= MSHAPE_NUMBERED) +*************** +*** 1875,1881 **** + else + id = mshape_ids[shape]; + +! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, id, 0 ); + } + if (shape != MSHAPE_HIDE) + last_shape = shape; +--- 1875,1881 ---- + else + id = mshape_ids[shape]; + +! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, id, 0); + } + if (shape != MSHAPE_HIDE) + last_shape = shape; +*************** +*** 1885,1903 **** + void + gui_mch_mousehide(int hide) + { +! if( gui.pointer_hidden != hide ) + { + gui.pointer_hidden = hide; + #ifdef FEAT_MOUSESHAPE +! if( hide ) +! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, +! Ph_CURSOR_NONE, 0 ); + else +! mch_set_mouse_shape( last_shape ); + #else +! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, +! ( hide == MOUSE_SHOW ) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE, +! 0 ); + #endif + } + } +--- 1885,1903 ---- + void + gui_mch_mousehide(int hide) + { +! if (gui.pointer_hidden != hide) + { + gui.pointer_hidden = hide; + #ifdef FEAT_MOUSESHAPE +! if (hide) +! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, +! Ph_CURSOR_NONE, 0); + else +! mch_set_mouse_shape(last_shape); + #else +! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, +! (hide == MOUSE_SHOW) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE, +! 0); + #endif + } + } +*************** +*** 1910,1917 **** + + /* FIXME: does this return the correct position, + * with respect to the border? */ +! PhQueryCursor( PhInputGroup( NULL ), &info ); +! PtGetAbsPosition( gui.vimTextArea , &ix, &iy ); + + *x = info.pos.x - ix; + *y = info.pos.y - iy; +--- 1910,1917 ---- + + /* FIXME: does this return the correct position, + * with respect to the border? */ +! PhQueryCursor(PhInputGroup(NULL), &info); +! PtGetAbsPosition(gui.vimTextArea , &ix, &iy); + + *x = info.pos.x - ix; + *y = info.pos.y - iy; +*************** +*** 1922,1930 **** + { + short abs_x, abs_y; + +! PtGetAbsPosition( gui.vimTextArea, &abs_x, &abs_y ); + /* Add the border offset? */ +! PhMoveCursorAbs( PhInputGroup( NULL ), abs_x + x, abs_y + y ); + } + + /****************************************************************************/ +--- 1922,1930 ---- + { + short abs_x, abs_y; + +! PtGetAbsPosition(gui.vimTextArea, &abs_x, &abs_y); + /* Add the border offset? */ +! PhMoveCursorAbs(PhInputGroup(NULL), abs_x + x, abs_y + y); + } + + /****************************************************************************/ +*************** +*** 1952,1974 **** + color_diff = gui_get_lightness(gui_ph_mouse_color) + - gui_get_lightness(gui.back_pixel); + +! if( abs( color_diff ) < 64 ) + { + short r, g, b; + /* not a great algorithm... */ +! r = PgRedValue( gui_ph_mouse_color ) ^ 255; +! g = PgGreenValue( gui_ph_mouse_color ) ^ 255; +! b = PgBlueValue( gui_ph_mouse_color ) ^ 255; + + #ifndef FEAT_MOUSESHAPE +! gui_ph_mouse_color = PgRGB( r, g, b ); +! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_COLOR, +! gui_ph_mouse_color, 0 ); + #endif + } + #endif + +! PtSetResource( gui.vimTextArea, Pt_ARG_FILL_COLOR, gui.back_pixel, 0 ); + } + + static int +--- 1952,1974 ---- + color_diff = gui_get_lightness(gui_ph_mouse_color) + - gui_get_lightness(gui.back_pixel); + +! if (abs(color_diff) < 64) + { + short r, g, b; + /* not a great algorithm... */ +! r = PgRedValue(gui_ph_mouse_color) ^ 255; +! g = PgGreenValue(gui_ph_mouse_color) ^ 255; +! b = PgBlueValue(gui_ph_mouse_color) ^ 255; + + #ifndef FEAT_MOUSESHAPE +! gui_ph_mouse_color = PgRGB(r, g, b); +! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_COLOR, +! gui_ph_mouse_color, 0); + #endif + } + #endif + +! PtSetResource(gui.vimTextArea, Pt_ARG_FILL_COLOR, gui.back_pixel, 0); + } + + static int +*************** +*** 2058,2076 **** + }; + + /* is name #rrggbb format? */ +! if( name[0] == '#' && STRLEN( name ) == 7 ) + { +! r = hex_digit( name[1] ) * 16 + hex_digit( name[2] ); +! g = hex_digit( name[3] ) * 16 + hex_digit( name[4] ); +! b = hex_digit( name[5] ) * 16 + hex_digit( name[6] ); +! if( r < 0 || g < 0 || b < 0 ) + return INVALCOLOR; + return RGB(r, g, b); + } + +! for( i = 0; i < ARRAY_LENGTH( table ); i++ ) + { +! if( STRICMP( name, table[i].name ) == 0 ) + return table[i].colour; + } + +--- 2058,2076 ---- + }; + + /* is name #rrggbb format? */ +! if (name[0] == '#' && STRLEN(name) == 7) + { +! r = hex_digit(name[1]) * 16 + hex_digit(name[2]); +! g = hex_digit(name[3]) * 16 + hex_digit(name[4]); +! b = hex_digit(name[5]) * 16 + hex_digit(name[6]); +! if (r < 0 || g < 0 || b < 0) + return INVALCOLOR; + return RGB(r, g, b); + } + +! for (i = 0; i < ARRAY_LENGTH(table); i++) + { +! if (STRICMP(name, table[i].name) == 0) + return table[i].colour; + } + +*************** +*** 2129,2141 **** + void + gui_mch_set_fg_color(guicolor_T color) + { +! PgSetTextColor( color ); + } + + void + gui_mch_set_bg_color(guicolor_T color) + { +! PgSetFillColor( color ); + } + + void +--- 2129,2141 ---- + void + gui_mch_set_fg_color(guicolor_T color) + { +! PgSetTextColor(color); + } + + void + gui_mch_set_bg_color(guicolor_T color) + { +! PgSetFillColor(color); + } + + void +*************** +*** 2148,2168 **** + { + PhRect_t rect; + +! rect.ul.x = FILL_X( col ); +! rect.ul.y = FILL_Y( row ); + + /* FIXME: This has an off by one pixel problem */ + rect.lr.x = rect.ul.x + nc * gui.char_width; + rect.lr.y = rect.ul.y + nr * gui.char_height; +! if( nc > 0 ) + rect.lr.x -= 1; +! if( nr > 0 ) + rect.lr.y -= 1; + + DRAW_START; +! PgSetDrawMode( Pg_DrawModeDSTINVERT ); +! PgDrawRect( &rect, Pg_DRAW_FILL ); +! PgSetDrawMode( Pg_DrawModeSRCCOPY ); + DRAW_END; + } + +--- 2148,2168 ---- + { + PhRect_t rect; + +! rect.ul.x = FILL_X(col); +! rect.ul.y = FILL_Y(row); + + /* FIXME: This has an off by one pixel problem */ + rect.lr.x = rect.ul.x + nc * gui.char_width; + rect.lr.y = rect.ul.y + nr * gui.char_height; +! if (nc > 0) + rect.lr.x -= 1; +! if (nr > 0) + rect.lr.y -= 1; + + DRAW_START; +! PgSetDrawMode(Pg_DrawModeDSTINVERT); +! PgDrawRect(&rect, Pg_DRAW_FILL); +! PgSetDrawMode(Pg_DrawModeSRCCOPY); + DRAW_END; + } + +*************** +*** 2170,2182 **** + gui_mch_clear_block(int row1, int col1, int row2, int col2) + { + PhRect_t block = { +! { FILL_X( col1 ), FILL_Y( row1 ) }, +! { FILL_X( col2 + 1 ) - 1, FILL_Y( row2 + 1 ) - 1} + }; + + DRAW_START; +! gui_mch_set_bg_color( gui.back_pixel ); +! PgDrawRect( &block, Pg_DRAW_FILL ); + DRAW_END; + } + +--- 2170,2182 ---- + gui_mch_clear_block(int row1, int col1, int row2, int col2) + { + PhRect_t block = { +! { FILL_X(col1), FILL_Y(row1) }, +! { FILL_X(col2 + 1) - 1, FILL_Y(row2 + 1) - 1} + }; + + DRAW_START; +! gui_mch_set_bg_color(gui.back_pixel); +! PgDrawRect(&block, Pg_DRAW_FILL); + DRAW_END; + } + +*************** +*** 2189,2200 **** + Rows * gui.char_height + gui.border_width - 1 } + }; + +! if( is_ignore_draw == TRUE ) + return; + + DRAW_START; +! gui_mch_set_bg_color( gui.back_pixel ); +! PgDrawRect( &text_rect, Pg_DRAW_FILL ); + DRAW_END; + } + +--- 2189,2200 ---- + Rows * gui.char_height + gui.border_width - 1 } + }; + +! if (is_ignore_draw == TRUE) + return; + + DRAW_START; +! gui_mch_set_bg_color(gui.back_pixel); +! PgDrawRect(&text_rect, Pg_DRAW_FILL); + DRAW_END; + } + +*************** +*** 2204,2231 **** + PhRect_t rect; + PhPoint_t delta; + +! rect.ul.x = FILL_X( gui.scroll_region_left ); +! rect.ul.y = FILL_Y( row + num_lines ); + +! rect.lr.x = FILL_X( gui.scroll_region_right + 1 ) - 1; +! rect.lr.y = FILL_Y( gui.scroll_region_bot + 1) - 1; + +! PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset ); +! PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL)); +! PhTranslateRect( &rect, &gui_ph_raw_offset ); + + delta.x = 0; + delta.y = -num_lines * gui.char_height; + + PgFlush(); + +! PhBlit( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ), &rect, &delta ); + + gui_clear_block( + gui.scroll_region_bot - num_lines + 1, + gui.scroll_region_left, + gui.scroll_region_bot, +! gui.scroll_region_right ); + } + + void +--- 2204,2231 ---- + PhRect_t rect; + PhPoint_t delta; + +! rect.ul.x = FILL_X(gui.scroll_region_left); +! rect.ul.y = FILL_Y(row + num_lines); + +! rect.lr.x = FILL_X(gui.scroll_region_right + 1) - 1; +! rect.lr.y = FILL_Y(gui.scroll_region_bot + 1) - 1; + +! PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset); +! PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL)); +! PhTranslateRect(&rect, &gui_ph_raw_offset); + + delta.x = 0; + delta.y = -num_lines * gui.char_height; + + PgFlush(); + +! PhBlit(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)), &rect, &delta); + + gui_clear_block( + gui.scroll_region_bot - num_lines + 1, + gui.scroll_region_left, + gui.scroll_region_bot, +! gui.scroll_region_right); + } + + void +*************** +*** 2234,2258 **** + PhRect_t rect; + PhPoint_t delta; + +! rect.ul.x = FILL_X( gui.scroll_region_left ); +! rect.ul.y = FILL_Y( row ); + +! rect.lr.x = FILL_X( gui.scroll_region_right + 1 ) - 1; +! rect.lr.y = FILL_Y( gui.scroll_region_bot - num_lines + 1 ) - 1; + +! PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset ); +! PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos( gui.vimTextArea, NULL ) ); +! PhTranslateRect( &rect, &gui_ph_raw_offset ); + + delta.x = 0; + delta.y = num_lines * gui.char_height; + + PgFlush(); + +! PhBlit( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ) , &rect, &delta ); + +! gui_clear_block( row, gui.scroll_region_left, +! row + num_lines - 1, gui.scroll_region_right ); + } + + void +--- 2234,2258 ---- + PhRect_t rect; + PhPoint_t delta; + +! rect.ul.x = FILL_X(gui.scroll_region_left); +! rect.ul.y = FILL_Y(row); + +! rect.lr.x = FILL_X(gui.scroll_region_right + 1) - 1; +! rect.lr.y = FILL_Y(gui.scroll_region_bot - num_lines + 1) - 1; + +! PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset); +! PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL)); +! PhTranslateRect(&rect, &gui_ph_raw_offset); + + delta.x = 0; + delta.y = num_lines * gui.char_height; + + PgFlush(); + +! PhBlit(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)) , &rect, &delta); + +! gui_clear_block(row, gui.scroll_region_left, +! row + num_lines - 1, gui.scroll_region_right); + } + + void +*************** +*** 2261,2297 **** + static char *utf8_buffer = NULL; + static int utf8_len = 0; + +! PhPoint_t pos = { TEXT_X( col ), TEXT_Y( row ) }; + PhRect_t rect; + +! if( is_ignore_draw == TRUE ) + return; + + DRAW_START; + +! if( !( flags & DRAW_TRANSP ) ) + { + PgDrawIRect( +! FILL_X( col ), FILL_Y( row ), +! FILL_X( col + len ) - 1, FILL_Y( row + 1 ) - 1, +! Pg_DRAW_FILL ); + } + +! if( flags & DRAW_UNDERL ) +! PgSetUnderline( gui.norm_pixel, Pg_TRANSPARENT, 0 ); + +! if( charset_translate != NULL + #ifdef FEAT_MBYTE + && enc_utf8 == 0 + #endif +! ) + { + int src_taken, dst_made; + + /* Use a static buffer to avoid large amounts of de/allocations */ +! if( utf8_len < len ) + { +! utf8_buffer = realloc( utf8_buffer, len * MB_LEN_MAX ); + utf8_len = len; + } + +--- 2261,2297 ---- + static char *utf8_buffer = NULL; + static int utf8_len = 0; + +! PhPoint_t pos = { TEXT_X(col), TEXT_Y(row) }; + PhRect_t rect; + +! if (is_ignore_draw == TRUE) + return; + + DRAW_START; + +! if (!(flags & DRAW_TRANSP)) + { + PgDrawIRect( +! FILL_X(col), FILL_Y(row), +! FILL_X(col + len) - 1, FILL_Y(row + 1) - 1, +! Pg_DRAW_FILL); + } + +! if (flags & DRAW_UNDERL) +! PgSetUnderline(gui.norm_pixel, Pg_TRANSPARENT, 0); + +! if (charset_translate != NULL + #ifdef FEAT_MBYTE + && enc_utf8 == 0 + #endif +! ) + { + int src_taken, dst_made; + + /* Use a static buffer to avoid large amounts of de/allocations */ +! if (utf8_len < len) + { +! utf8_buffer = realloc(utf8_buffer, len * MB_LEN_MAX); + utf8_len = len; + } + +*************** +*** 2302,2337 **** + &src_taken, + utf8_buffer, + utf8_len, +! &dst_made ); + s = utf8_buffer; + len = dst_made; + } + +! PgDrawText( s, len, &pos, 0 ); + +! if( flags & DRAW_BOLD ) + { + /* FIXME: try and only calculate these values once... */ +! rect.ul.x = FILL_X( col ) + 1; +! rect.ul.y = FILL_Y( row ); +! rect.lr.x = FILL_X( col + len ) - 1; +! rect.lr.y = FILL_Y( row + 1) - 1; +! /* PgSetUserClip( NULL ) causes the scrollbar to not redraw... */ + #if 0 + pos.x++; + +! PgSetUserClip( &rect ); +! PgDrawText( s, len, &pos, 0 ); +! PgSetUserClip( NULL ); + #else +! rect.lr.y -= ( p_linespace + 1 ) / 2; + /* XXX: DrawTextArea doesn't work with phditto */ +! PgDrawTextArea( s, len, &rect, Pg_TEXT_BOTTOM ); + #endif + } + +! if( flags & DRAW_UNDERL ) +! PgSetUnderline( Pg_TRANSPARENT, Pg_TRANSPARENT, 0 ); + + DRAW_END; + } +--- 2302,2337 ---- + &src_taken, + utf8_buffer, + utf8_len, +! &dst_made); + s = utf8_buffer; + len = dst_made; + } + +! PgDrawText(s, len, &pos, 0); + +! if (flags & DRAW_BOLD) + { + /* FIXME: try and only calculate these values once... */ +! rect.ul.x = FILL_X(col) + 1; +! rect.ul.y = FILL_Y(row); +! rect.lr.x = FILL_X(col + len) - 1; +! rect.lr.y = FILL_Y(row + 1) - 1; +! /* PgSetUserClip(NULL) causes the scrollbar to not redraw... */ + #if 0 + pos.x++; + +! PgSetUserClip(&rect); +! PgDrawText(s, len, &pos, 0); +! PgSetUserClip(NULL); + #else +! rect.lr.y -= (p_linespace + 1) / 2; + /* XXX: DrawTextArea doesn't work with phditto */ +! PgDrawTextArea(s, len, &rect, Pg_TEXT_BOTTOM); + #endif + } + +! if (flags & DRAW_UNDERL) +! PgSetUnderline(Pg_TRANSPARENT, Pg_TRANSPARENT, 0); + + DRAW_END; + } +*************** +*** 2346,2359 **** + + /* FIXME: Double width characters */ + +! r.ul.x = FILL_X( gui.col ); +! r.ul.y = FILL_Y( gui.row ); + r.lr.x = r.ul.x + gui.char_width - 1; + r.lr.y = r.ul.y + gui.char_height - 1; + + DRAW_START; +! PgSetStrokeColor( color ); +! PgDrawRect( &r, Pg_DRAW_STROKE ); + DRAW_END; + } + +--- 2346,2359 ---- + + /* FIXME: Double width characters */ + +! r.ul.x = FILL_X(gui.col); +! r.ul.y = FILL_Y(gui.row); + r.lr.x = r.ul.x + gui.char_width - 1; + r.lr.y = r.ul.y + gui.char_height - 1; + + DRAW_START; +! PgSetStrokeColor(color); +! PgDrawRect(&r, Pg_DRAW_STROKE); + DRAW_END; + } + +*************** +*** 2362,2375 **** + { + PhRect_t r; + +! r.ul.x = FILL_X( gui.col ); +! r.ul.y = FILL_Y( gui.row ) + gui.char_height - h; + r.lr.x = r.ul.x + w - 1; + r.lr.y = r.ul.y + h - 1; + + DRAW_START; +! gui_mch_set_bg_color( color ); +! PgDrawRect( &r, Pg_DRAW_FILL ); + DRAW_END; + } + +--- 2362,2375 ---- + { + PhRect_t r; + +! r.ul.x = FILL_X(gui.col); +! r.ul.y = FILL_Y(gui.row) + gui.char_height - h; + r.lr.x = r.ul.x + w - 1; + r.lr.y = r.ul.y + h - 1; + + DRAW_START; +! gui_mch_set_bg_color(color); +! PgDrawRect(&r, Pg_DRAW_FILL); + DRAW_END; + } + +*************** +*** 2385,2394 **** + gui_mch_start_blink(void) + { + /* Only turn on the timer on if none of the times are zero */ +! if( blink_waittime && blink_ontime && blink_offtime && gui.in_focus) + { +! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, +! blink_waittime, 0 ); + blink_state = BLINK_ON; + gui_update_cursor(TRUE, FALSE); + } +--- 2385,2394 ---- + gui_mch_start_blink(void) + { + /* Only turn on the timer on if none of the times are zero */ +! if (blink_waittime && blink_ontime && blink_offtime && gui.in_focus) + { +! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, +! blink_waittime, 0); + blink_state = BLINK_ON; + gui_update_cursor(TRUE, FALSE); + } +*************** +*** 2397,2405 **** + void + gui_mch_stop_blink(void) + { +! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, 0, 0 ); + +! if( blink_state == BLINK_OFF ) + gui_update_cursor(TRUE, FALSE); + + blink_state = BLINK_NONE; +--- 2397,2405 ---- + void + gui_mch_stop_blink(void) + { +! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, 0, 0); + +! if (blink_state == BLINK_OFF) + gui_update_cursor(TRUE, FALSE); + + blink_state = BLINK_NONE; +*************** +*** 2417,2431 **** + void + gui_mch_flash(int msec) + { +! PgSetFillXORColor( Pg_BLACK, Pg_WHITE ); +! PgSetDrawMode( Pg_DRAWMODE_XOR ); + gui_mch_clear_all(); + gui_mch_flush(); + +! ui_delay( (long) msec, TRUE ); + + gui_mch_clear_all(); +! PgSetDrawMode( Pg_DRAWMODE_OPAQUE ); + gui_mch_flush(); + } + +--- 2417,2431 ---- + void + gui_mch_flash(int msec) + { +! PgSetFillXORColor(Pg_BLACK, Pg_WHITE); +! PgSetDrawMode(Pg_DRAWMODE_XOR); + gui_mch_clear_all(); + gui_mch_flush(); + +! ui_delay((long) msec, TRUE); + + gui_mch_clear_all(); +! PgSetDrawMode(Pg_DRAWMODE_OPAQUE); + gui_mch_flush(); + } + +*************** +*** 2440,2446 **** + { + PhArea_t area = {{x, y}, {w, h}}; + +! PtSetResource( gui.vimTextArea, Pt_ARG_AREA, &area, 0 ); + } + + int +--- 2440,2446 ---- + { + PhArea_t area = {{x, y}, {w, h}}; + +! PtSetResource(gui.vimTextArea, Pt_ARG_AREA, &area, 0); + } + + int +*************** +*** 2496,2514 **** + }; + + static PhImage_t * +! gui_ph_toolbar_load_icon( char_u *iconfile ) + { + static PhImage_t external_icon; + PhImage_t *temp_phi = NULL; + +! temp_phi = PxLoadImage( iconfile, NULL ); +! if( temp_phi != NULL ) + { + /* The label widget will free the image/palette/etc. for us when + * it's destroyed */ + temp_phi->flags |= Ph_RELEASE_IMAGE_ALL; +! memcpy( &external_icon, temp_phi, sizeof( external_icon ) ); +! free( temp_phi ); + + temp_phi = &external_icon; + } +--- 2496,2514 ---- + }; + + static PhImage_t * +! gui_ph_toolbar_load_icon(char_u *iconfile) + { + static PhImage_t external_icon; + PhImage_t *temp_phi = NULL; + +! temp_phi = PxLoadImage(iconfile, NULL); +! if (temp_phi != NULL) + { + /* The label widget will free the image/palette/etc. for us when + * it's destroyed */ + temp_phi->flags |= Ph_RELEASE_IMAGE_ALL; +! memcpy(&external_icon, temp_phi, sizeof(external_icon)); +! free(temp_phi); + + temp_phi = &external_icon; + } +*************** +*** 2523,2551 **** + * PhImage_t are copied, and the original PhImage_t aren't needed anymore). + */ + static PhImage_t * +! gui_ph_toolbar_find_icon( vimmenu_T *menu ) + { + char_u full_pathname[ MAXPATHL + 1 ]; + PhImage_t *icon = NULL; + +! if( menu->icon_builtin == FALSE ) + { +! if( menu->iconfile != NULL ) + /* TODO: use gui_find_iconfile() */ +! icon = gui_ph_toolbar_load_icon( menu->iconfile ); + + /* TODO: Restrict loading to just .png? Search for any format? */ +! if( ( icon == NULL ) && +! ( ( gui_find_bitmap( menu->name, full_pathname, "gif" ) == OK ) || +! ( gui_find_bitmap( menu->name, full_pathname, "png" ) == OK ) ) ) +! icon = gui_ph_toolbar_load_icon( full_pathname ); + +! if( icon != NULL ) + return icon; + } + +! if( menu->iconidx >= 0 && +! ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) ) + { + return gui_ph_toolbar_images[menu->iconidx]; + } +--- 2523,2551 ---- + * PhImage_t are copied, and the original PhImage_t aren't needed anymore). + */ + static PhImage_t * +! gui_ph_toolbar_find_icon(vimmenu_T *menu) + { + char_u full_pathname[ MAXPATHL + 1 ]; + PhImage_t *icon = NULL; + +! if (menu->icon_builtin == FALSE) + { +! if (menu->iconfile != NULL) + /* TODO: use gui_find_iconfile() */ +! icon = gui_ph_toolbar_load_icon(menu->iconfile); + + /* TODO: Restrict loading to just .png? Search for any format? */ +! if ((icon == NULL) && +! ((gui_find_bitmap(menu->name, full_pathname, "gif") == OK) || +! (gui_find_bitmap(menu->name, full_pathname, "png") == OK))) +! icon = gui_ph_toolbar_load_icon(full_pathname); + +! if (icon != NULL) + return icon; + } + +! if (menu->iconidx >= 0 && +! (menu->iconidx < ARRAY_LENGTH(gui_ph_toolbar_images))) + { + return gui_ph_toolbar_images[menu->iconidx]; + } +*************** +*** 2554,2567 **** + } + #endif + +! #if defined( FEAT_MENU ) || defined( PROTO ) + void + gui_mch_enable_menu(int flag) + { +! if( flag != 0 ) +! PtRealizeWidget( gui.vimMenuBar ); + else +! PtUnrealizeWidget( gui.vimMenuBar ); + } + + void +--- 2554,2567 ---- + } + #endif + +! #if defined(FEAT_MENU) || defined(PROTO) + void + gui_mch_enable_menu(int flag) + { +! if (flag != 0) +! PtRealizeWidget(gui.vimMenuBar); + else +! PtUnrealizeWidget(gui.vimMenuBar); + } + + void +*************** +*** 2572,2601 **** + + /* Change the position of a menu button in the parent */ + static void +! gui_ph_position_menu( PtWidget_t *widget, int priority ) + { + PtWidget_t *traverse; + vimmenu_T *menu; + +! traverse = PtWidgetChildBack( PtWidgetParent( widget ) ); + + /* Iterate through the list of widgets in traverse, until + * we find the position we want to insert our widget into */ + /* TODO: traverse from front to back, possible speedup? */ +! while( traverse != NULL ) + { +! PtGetResource( traverse, Pt_ARG_POINTER, &menu, 0 ); + +! if( menu != NULL && + priority < menu->priority && +! widget != traverse ) + { + /* Insert the widget before the current traverse widget */ +! PtWidgetInsert( widget, traverse, 1 ); + return; + } + +! traverse = PtWidgetBrotherInFront( traverse ); + } + } + +--- 2572,2601 ---- + + /* Change the position of a menu button in the parent */ + static void +! gui_ph_position_menu(PtWidget_t *widget, int priority) + { + PtWidget_t *traverse; + vimmenu_T *menu; + +! traverse = PtWidgetChildBack(PtWidgetParent(widget)); + + /* Iterate through the list of widgets in traverse, until + * we find the position we want to insert our widget into */ + /* TODO: traverse from front to back, possible speedup? */ +! while (traverse != NULL) + { +! PtGetResource(traverse, Pt_ARG_POINTER, &menu, 0); + +! if (menu != NULL && + priority < menu->priority && +! widget != traverse) + { + /* Insert the widget before the current traverse widget */ +! PtWidgetInsert(widget, traverse, 1); + return; + } + +! traverse = PtWidgetBrotherInFront(traverse); + } + } + +*************** +*** 2611,2621 **** + + menu->submenu_id = menu->id = NULL; + +! if( menu_is_menubar( menu->name ) ) + { + +! accel_key = vim_strchr( menu->name, '&' ); +! if( accel_key != NULL ) + { + mnemonic_str[0] = accel_key[1]; + mnemonic_str[1] = NUL; +--- 2611,2621 ---- + + menu->submenu_id = menu->id = NULL; + +! if (menu_is_menubar(menu->name)) + { + +! accel_key = vim_strchr(menu->name, '&'); +! if (accel_key != NULL) + { + mnemonic_str[0] = accel_key[1]; + mnemonic_str[1] = NUL; +*************** +*** 2623,2673 **** + + /* Create the menu button */ + n = 0; +! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0 ); +! if( accel_key != NULL ) +! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_POINTER, menu, 0 ); + +! if( parent != NULL ) +! PtSetArg( &args[ n++ ], Pt_ARG_BUTTON_TYPE, Pt_MENU_RIGHT, 0 ); + +! menu->id = PtCreateWidget( PtMenuButton, + (parent == NULL) ? gui.vimMenuBar : parent->submenu_id, +! n, args ); + +! PtAddCallback( menu->id, Pt_CB_ARM, gui_ph_handle_pulldown_menu, menu ); + + /* Create the actual menu */ + n = 0; +! if( parent != NULL ) +! PtSetArg( &args[ n++ ], Pt_ARG_MENU_FLAGS, Pt_TRUE, Pt_MENU_CHILD ); + +! menu->submenu_id = PtCreateWidget( PtMenu, menu->id, n, args ); + +! if( parent == NULL ) + { +! PtAddCallback( menu->submenu_id, Pt_CB_UNREALIZED, +! gui_ph_handle_menu_unrealized, menu ); + +! if( menu->mnemonic != 0 ) + { +! PtAddHotkeyHandler( gui.vimWindow, tolower( menu->mnemonic ), +! Pk_KM_Alt, 0, menu, gui_ph_handle_pulldown_menu ); + } + } + +! gui_ph_position_menu( menu->id, menu->priority ); + + /* Redraw menubar here instead of gui_mch_draw_menubar */ +! if( gui.menu_is_active ) +! PtRealizeWidget( menu->id ); + } +! else if( menu_is_popup( menu->name ) ) + { +! menu->submenu_id = PtCreateWidget( PtMenu, gui.vimWindow, 0, NULL ); +! PtAddCallback( menu->submenu_id, Pt_CB_UNREALIZED, +! gui_ph_handle_menu_unrealized, menu ); + } + } + +--- 2623,2673 ---- + + /* Create the menu button */ + n = 0; +! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0); +! if (accel_key != NULL) +! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_POINTER, menu, 0); + +! if (parent != NULL) +! PtSetArg(&args[ n++ ], Pt_ARG_BUTTON_TYPE, Pt_MENU_RIGHT, 0); + +! menu->id = PtCreateWidget(PtMenuButton, + (parent == NULL) ? gui.vimMenuBar : parent->submenu_id, +! n, args); + +! PtAddCallback(menu->id, Pt_CB_ARM, gui_ph_handle_pulldown_menu, menu); + + /* Create the actual menu */ + n = 0; +! if (parent != NULL) +! PtSetArg(&args[ n++ ], Pt_ARG_MENU_FLAGS, Pt_TRUE, Pt_MENU_CHILD); + +! menu->submenu_id = PtCreateWidget(PtMenu, menu->id, n, args); + +! if (parent == NULL) + { +! PtAddCallback(menu->submenu_id, Pt_CB_UNREALIZED, +! gui_ph_handle_menu_unrealized, menu); + +! if (menu->mnemonic != 0) + { +! PtAddHotkeyHandler(gui.vimWindow, tolower(menu->mnemonic), +! Pk_KM_Alt, 0, menu, gui_ph_handle_pulldown_menu); + } + } + +! gui_ph_position_menu(menu->id, menu->priority); + + /* Redraw menubar here instead of gui_mch_draw_menubar */ +! if (gui.menu_is_active) +! PtRealizeWidget(menu->id); + } +! else if (menu_is_popup(menu->name)) + { +! menu->submenu_id = PtCreateWidget(PtMenu, gui.vimWindow, 0, NULL); +! PtAddCallback(menu->submenu_id, Pt_CB_UNREALIZED, +! gui_ph_handle_menu_unrealized, menu); + } + } + +*************** +*** 2681,2784 **** + PtArg_t args[13]; + + n = 0; +! PtSetArg( &args[ n++ ], Pt_ARG_POINTER, menu, 0 ); + + #ifdef FEAT_TOOLBAR +! if( menu_is_toolbar( parent->name ) ) + { +! if( menu_is_separator( menu->name ) ) + { +! PtSetArg( &args[ n++ ], Pt_ARG_SEP_FLAGS, +! Pt_SEP_VERTICAL, Pt_SEP_ORIENTATION ); +! PtSetArg( &args[ n++ ], Pt_ARG_SEP_TYPE, Pt_ETCHED_IN, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, +! Pt_TRUE, Pt_ANCHOR_TOP_BOTTOM ); +! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, 2, 0 ); +! menu->id = PtCreateWidget( PtSeparator, gui.vimToolBar, n, args ); + } + else + { +! if( strstr( (const char *) p_toolbar, "text" ) != NULL ) + { +! PtSetArg( &args[ n++ ], Pt_ARG_BALLOON_POSITION, +! Pt_BALLOON_BOTTOM, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_FONT, "TextFont08", 0 ); + } +! if( ( strstr( (const char *) p_toolbar, "icons" ) != NULL ) && +! ( gui_ph_toolbar_images != NULL ) ) + { +! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_IMAGE, +! gui_ph_toolbar_find_icon( menu ), 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_TYPE, Pt_TEXT_IMAGE, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_IMAGE_SPACING, 0, 0 ); + } +! if( strstr( (const char *) p_toolbar, "tooltips" ) != NULL ) + { +! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_BALLOON, +! gui_ph_show_tooltip, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_FLAGS, +! Pt_TRUE, Pt_SHOW_BALLOON ); + } +! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 1, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_WIDTH, 1, 0 ); +! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_FALSE, +! Pt_HIGHLIGHTED | Pt_GETS_FOCUS ); +! PtSetArg( &args[ n++ ], Pt_ARG_FILL_COLOR, Pg_TRANSPARENT, 0 ); +! menu->id = PtCreateWidget( PtButton, gui.vimToolBar, n, args ); + +! PtAddCallback( menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu ); + } + /* Update toolbar if it's open */ +! if( PtWidgetIsRealized( gui.vimToolBar ) ) +! PtRealizeWidget( menu->id ); + } + else + #endif +! if( menu_is_separator( menu->name ) ) + { +! menu->id = PtCreateWidget( PtSeparator, parent->submenu_id, n, args ); + } + else + { +! accel_key = vim_strchr( menu->name, '&' ); +! if( accel_key != NULL ) + { + mnemonic_str[0] = accel_key[1]; + mnemonic_str[1] = NUL; + } + +! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 ); +! if( accel_key != NULL ) +! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, +! 0 ); + +! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0 ); + +! menu->id = PtCreateWidget( PtMenuButton, parent->submenu_id, n, args ); + +! PtAddCallback( menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu ); + + #ifdef USE_PANEL_GROUP +! if( gui_ph_is_buffer_item( menu, parent ) == TRUE ) + { +! PtAddCallback( menu->id, Pt_CB_DESTROYED, +! gui_ph_handle_buffer_remove, menu ); +! gui_ph_pg_add_buffer( menu->dname ); + } + #endif + } + +! gui_ph_position_menu( menu->id, menu->priority ); + } + + void + gui_mch_destroy_menu(vimmenu_T *menu) + { +! if( menu->submenu_id != NULL ) +! PtDestroyWidget( menu->submenu_id ); +! if( menu->id != NULL ) +! PtDestroyWidget( menu->id ); + + menu->submenu_id = NULL; + menu->id = NULL; +--- 2681,2784 ---- + PtArg_t args[13]; + + n = 0; +! PtSetArg(&args[ n++ ], Pt_ARG_POINTER, menu, 0); + + #ifdef FEAT_TOOLBAR +! if (menu_is_toolbar(parent->name)) + { +! if (menu_is_separator(menu->name)) + { +! PtSetArg(&args[ n++ ], Pt_ARG_SEP_FLAGS, +! Pt_SEP_VERTICAL, Pt_SEP_ORIENTATION); +! PtSetArg(&args[ n++ ], Pt_ARG_SEP_TYPE, Pt_ETCHED_IN, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, +! Pt_TRUE, Pt_ANCHOR_TOP_BOTTOM); +! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, 2, 0); +! menu->id = PtCreateWidget(PtSeparator, gui.vimToolBar, n, args); + } + else + { +! if (strstr((const char *) p_toolbar, "text") != NULL) + { +! PtSetArg(&args[ n++ ], Pt_ARG_BALLOON_POSITION, +! Pt_BALLOON_BOTTOM, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_FONT, "TextFont08", 0); + } +! if ((strstr((const char *) p_toolbar, "icons") != NULL) && +! (gui_ph_toolbar_images != NULL)) + { +! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_IMAGE, +! gui_ph_toolbar_find_icon(menu), 0); +! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_TYPE, Pt_TEXT_IMAGE, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_IMAGE_SPACING, 0, 0); + } +! if (strstr((const char *) p_toolbar, "tooltips") != NULL) + { +! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_BALLOON, +! gui_ph_show_tooltip, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_FLAGS, +! Pt_TRUE, Pt_SHOW_BALLOON); + } +! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 1, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_WIDTH, 1, 0); +! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_FALSE, +! Pt_HIGHLIGHTED | Pt_GETS_FOCUS); +! PtSetArg(&args[ n++ ], Pt_ARG_FILL_COLOR, Pg_TRANSPARENT, 0); +! menu->id = PtCreateWidget(PtButton, gui.vimToolBar, n, args); + +! PtAddCallback(menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu); + } + /* Update toolbar if it's open */ +! if (PtWidgetIsRealized(gui.vimToolBar)) +! PtRealizeWidget(menu->id); + } + else + #endif +! if (menu_is_separator(menu->name)) + { +! menu->id = PtCreateWidget(PtSeparator, parent->submenu_id, n, args); + } + else + { +! accel_key = vim_strchr(menu->name, '&'); +! if (accel_key != NULL) + { + mnemonic_str[0] = accel_key[1]; + mnemonic_str[1] = NUL; + } + +! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0); +! if (accel_key != NULL) +! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, +! 0); + +! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0); + +! menu->id = PtCreateWidget(PtMenuButton, parent->submenu_id, n, args); + +! PtAddCallback(menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu); + + #ifdef USE_PANEL_GROUP +! if (gui_ph_is_buffer_item(menu, parent) == TRUE) + { +! PtAddCallback(menu->id, Pt_CB_DESTROYED, +! gui_ph_handle_buffer_remove, menu); +! gui_ph_pg_add_buffer(menu->dname); + } + #endif + } + +! gui_ph_position_menu(menu->id, menu->priority); + } + + void + gui_mch_destroy_menu(vimmenu_T *menu) + { +! if (menu->submenu_id != NULL) +! PtDestroyWidget(menu->submenu_id); +! if (menu->id != NULL) +! PtDestroyWidget(menu->id); + + menu->submenu_id = NULL; + menu->id = NULL; +*************** +*** 2789,2800 **** + { + long flags, mask, fields; + +! if( menu->id == NULL ) + return; + +! flags = PtWidgetFlags( menu->id ); +! if( PtWidgetIsClass( menu->id, PtMenuButton ) && +! PtWidgetIsClass( PtWidgetParent( menu->id ), PtMenu ) ) + { + fields = Pt_FALSE; + mask = Pt_SELECTABLE | Pt_HIGHLIGHTED; +--- 2789,2800 ---- + { + long flags, mask, fields; + +! if (menu->id == NULL) + return; + +! flags = PtWidgetFlags(menu->id); +! if (PtWidgetIsClass(menu->id, PtMenuButton) && +! PtWidgetIsClass(PtWidgetParent(menu->id), PtMenu)) + { + fields = Pt_FALSE; + mask = Pt_SELECTABLE | Pt_HIGHLIGHTED; +*************** +*** 2805,2815 **** + mask = Pt_BLOCKED | Pt_GHOST; + } + +! if( ! grey ) + fields = ~fields; + +! PtSetResource( menu->id, Pt_ARG_FLAGS, fields, +! mask ); + } + + void +--- 2805,2815 ---- + mask = Pt_BLOCKED | Pt_GHOST; + } + +! if (! grey) + fields = ~fields; + +! PtSetResource(menu->id, Pt_ARG_FLAGS, fields, +! mask); + } + + void +*************** +*** 2830,2837 **** + void + gui_mch_show_popupmenu(vimmenu_T *menu) + { +! PtSetResource( menu->submenu_id, Pt_ARG_POS, &abs_mouse, 0 ); +! PtRealizeWidget( menu->submenu_id ); + } + + void +--- 2830,2837 ---- + void + gui_mch_show_popupmenu(vimmenu_T *menu) + { +! PtSetResource(menu->submenu_id, Pt_ARG_POS, &abs_mouse, 0); +! PtRealizeWidget(menu->submenu_id); + } + + void +*************** +*** 2842,2855 **** + + #endif + +! #if defined( FEAT_TOOLBAR ) || defined( PROTO ) + void + gui_mch_show_toolbar(int showit) + { +! if( showit ) +! PtRealizeWidget( gui.vimToolBar ); + else +! PtUnrealizeWidget( gui.vimToolBar ); + } + #endif + +--- 2842,2855 ---- + + #endif + +! #if defined(FEAT_TOOLBAR) || defined(PROTO) + void + gui_mch_show_toolbar(int showit) + { +! if (showit) +! PtRealizeWidget(gui.vimToolBar); + else +! PtUnrealizeWidget(gui.vimToolBar); + } + #endif + +*************** +*** 2870,2903 **** + FontQueryInfo info; + int_u style; + +! font_tag = alloc( MAX_FONT_TAG ); +! if( font_tag != NULL ) + { +! if( PfGenerateFontName( font_name, font_flags, font_size, +! font_tag ) != NULL ) + { + /* Enforce some limits on the font used */ + style = PHFONT_INFO_FIXED; + +! if( enforce & PF_STYLE_BOLD ) + style |= PHFONT_INFO_BOLD; +! if( enforce & PF_STYLE_ANTIALIAS ) + style |= PHFONT_INFO_ALIAS; +! if( enforce & PF_STYLE_ITALIC ) + style |= PHFONT_INFO_ITALIC; + +! PfQueryFontInfo( font_tag, &info ); + +! if( info.size == 0 ) + font_size = 0; + + /* Make sure font size matches, and that the font style + * at least has the bits we're checking for */ +! if( font_size == info.size && +! style == (info.style & style) ) + return (GuiFont)font_tag; + } +! vim_free( font_tag ); + } + return NULL; + } +--- 2870,2903 ---- + FontQueryInfo info; + int_u style; + +! font_tag = alloc(MAX_FONT_TAG); +! if (font_tag != NULL) + { +! if (PfGenerateFontName(font_name, font_flags, font_size, +! font_tag) != NULL) + { + /* Enforce some limits on the font used */ + style = PHFONT_INFO_FIXED; + +! if (enforce & PF_STYLE_BOLD) + style |= PHFONT_INFO_BOLD; +! if (enforce & PF_STYLE_ANTIALIAS) + style |= PHFONT_INFO_ALIAS; +! if (enforce & PF_STYLE_ITALIC) + style |= PHFONT_INFO_ITALIC; + +! PfQueryFontInfo(font_tag, &info); + +! if (info.size == 0) + font_size = 0; + + /* Make sure font size matches, and that the font style + * at least has the bits we're checking for */ +! if (font_size == info.size && +! style == (info.style & style)) + return (GuiFont)font_tag; + } +! vim_free(font_tag); + } + return NULL; + } +*************** +*** 2919,2936 **** + char_u *vim_font, + char_u **font_name, + int_u *font_flags, +! int_u *font_size ) + { + char_u *mark; + int_u name_len, size; + +! mark = vim_strchr( vim_font, ':' ); +! if( mark == NULL ) +! name_len = STRLEN( vim_font ); + else +! name_len = (int_u) ( mark - vim_font ); + +! *font_name = vim_strnsave( vim_font, name_len ); + if (*font_name != NULL) + { + if (mark != NULL) +--- 2919,2936 ---- + char_u *vim_font, + char_u **font_name, + int_u *font_flags, +! int_u *font_size) + { + char_u *mark; + int_u name_len, size; + +! mark = vim_strchr(vim_font, ':'); +! if (mark == NULL) +! name_len = STRLEN(vim_font); + else +! name_len = (int_u) (mark - vim_font); + +! *font_name = vim_strnsave(vim_font, name_len); + if (*font_name != NULL) + { + if (mark != NULL) +*************** +*** 2944,2950 **** + case 'i': *font_flags |= PF_STYLE_ITALIC; break; + + case 's': +! size = getdigits( &mark ); + /* Restrict the size to some vague limits */ + if (size < 1 || size > 100) + size = 8; +--- 2944,2950 ---- + case 'i': *font_flags |= PF_STYLE_ITALIC; break; + + case 's': +! size = getdigits(&mark); + /* Restrict the size to some vague limits */ + if (size < 1 || size > 100) + size = 8; +*************** +*** 2979,3031 **** + vim_font_name = "PC Terminal"; + } + +! if (STRCMP( vim_font_name, "*" ) == 0) + { +! font_tag = PtFontSelection( gui.vimWindow, NULL, NULL, +! "pcterm12", -1, PHFONT_FIXED, NULL ); + + if (font_tag == NULL) + return FAIL; + +! gui_mch_free_font( gui.norm_font ); + gui.norm_font = font_tag; + +! PfQueryFontInfo( font_tag, &info ); +! font_name = vim_strsave( info.font ); + } + else + { +! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, +! &font_size ) == FALSE) + return FAIL; + +! font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 ); + if (font_tag == NULL) + { +! vim_free( font_name ); + return FAIL; + } + +! gui_mch_free_font( gui.norm_font ); + gui.norm_font = font_tag; + } + +! gui_mch_free_font( gui.bold_font ); +! gui.bold_font = gui_ph_get_font( font_name, font_flags | PF_STYLE_BOLD, +! font_size, PF_STYLE_BOLD ); +! +! gui_mch_free_font( gui.ital_font ); +! gui.ital_font = gui_ph_get_font( font_name, font_flags | PF_STYLE_ITALIC, +! font_size, PF_STYLE_ITALIC ); + + /* This extent was brought to you by the letter 'g' */ +! PfExtentText( &extent, NULL, font_tag, "g", 1 ); + + gui.char_width = extent.lr.x - extent.ul.x + 1; + gui.char_height = (- extent.ul.y) + extent.lr.y + 1; + gui.char_ascent = - extent.ul.y; + +! vim_free( font_name ); + return OK; + } + +--- 2979,3031 ---- + vim_font_name = "PC Terminal"; + } + +! if (STRCMP(vim_font_name, "*") == 0) + { +! font_tag = PtFontSelection(gui.vimWindow, NULL, NULL, +! "pcterm12", -1, PHFONT_FIXED, NULL); + + if (font_tag == NULL) + return FAIL; + +! gui_mch_free_font(gui.norm_font); + gui.norm_font = font_tag; + +! PfQueryFontInfo(font_tag, &info); +! font_name = vim_strsave(info.font); + } + else + { +! if (gui_ph_parse_font_name(vim_font_name, &font_name, &font_flags, +! &font_size) == FALSE) + return FAIL; + +! font_tag = gui_ph_get_font(font_name, font_flags, font_size, 0); + if (font_tag == NULL) + { +! vim_free(font_name); + return FAIL; + } + +! gui_mch_free_font(gui.norm_font); + gui.norm_font = font_tag; + } + +! gui_mch_free_font(gui.bold_font); +! gui.bold_font = gui_ph_get_font(font_name, font_flags | PF_STYLE_BOLD, +! font_size, PF_STYLE_BOLD); +! +! gui_mch_free_font(gui.ital_font); +! gui.ital_font = gui_ph_get_font(font_name, font_flags | PF_STYLE_ITALIC, +! font_size, PF_STYLE_ITALIC); + + /* This extent was brought to you by the letter 'g' */ +! PfExtentText(&extent, NULL, font_tag, "g", 1); + + gui.char_width = extent.lr.x - extent.ul.x + 1; + gui.char_height = (- extent.ul.y) + extent.lr.y + 1; + gui.char_ascent = - extent.ul.y; + +! vim_free(font_name); + return OK; + } + +*************** +*** 3037,3043 **** + { + FontQueryInfo info; + +! PfQueryFontInfo( gui.norm_font, &info ); + + gui.char_height = - info.ascender + info.descender + p_linespace; + gui.char_ascent = - info.ascender + p_linespace / 2; +--- 3037,3043 ---- + { + FontQueryInfo info; + +! PfQueryFontInfo(gui.norm_font, &info); + + gui.char_height = - info.ascender + info.descender + p_linespace; + gui.char_ascent = - info.ascender + p_linespace / 2; +*************** +*** 3053,3070 **** + int_u font_size = 12; + int_u font_flags = 0; + +! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, +! &font_size ) != FALSE) + { +! font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 ); +! vim_free( font_name ); + + if (font_tag != NULL) + return (GuiFont)font_tag; + } + + if (report_error) +! EMSG2(e_font, vim_font_name ); + + return FAIL; + } +--- 3053,3070 ---- + int_u font_size = 12; + int_u font_flags = 0; + +! if (gui_ph_parse_font_name(vim_font_name, &font_name, &font_flags, +! &font_size) != FALSE) + { +! font_tag = gui_ph_get_font(font_name, font_flags, font_size, -1); +! vim_free(font_name); + + if (font_tag != NULL) + return (GuiFont)font_tag; + } + + if (report_error) +! EMSG2(e_font, vim_font_name); + + return FAIL; + } +*************** +*** 3088,3099 **** + void + gui_mch_set_font(GuiFont font) + { +! PgSetFont( font ); + } + + void + gui_mch_free_font(GuiFont font) + { +! vim_free( font ); + } + +--- 3088,3099 ---- + void + gui_mch_set_font(GuiFont font) + { +! PgSetFont(font); + } + + void + gui_mch_free_font(GuiFont font) + { +! vim_free(font); + } + +*** ../vim-7.3.309/src/version.c 2011-09-14 15:41:54.000000000 +0200 +--- src/version.c 2011-09-14 16:01:50.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 310, + /**/ + +-- +An operatingsystem is just a name you give to the rest of bloating +idiosyncratic machine-based-features you left out of your editor. + (author unknown) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.311 b/source/ap/vim/patches/7.3.311 new file mode 100644 index 00000000..13aec74a --- /dev/null +++ b/source/ap/vim/patches/7.3.311 @@ -0,0 +1,351 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.311 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.311 (replaces 7.3.289) +Problem: Complete function isn't called when the leader changed. +Solution: Allow the complete function to return a dictionary with a flag + that indicates ins_compl_restart() is to be called when the leader + changes. (Taro Muraoka) +Files: runtime/insert.txt, src/edit.c, src/eval.c, src/proto/eval.pro + + +*** ../vim-7.3.310/src/edit.c 2011-09-05 20:13:37.000000000 +0200 +--- src/edit.c 2011-09-14 16:43:14.000000000 +0200 +*************** +*** 135,140 **** +--- 135,142 ---- + static int compl_cont_mode = 0; + static expand_T compl_xp; + ++ static int compl_opt_refresh_always = FALSE; ++ + static void ins_ctrl_x __ARGS((void)); + static int has_compl_option __ARGS((int dict_opt)); + static int ins_compl_accept_char __ARGS((int c)); +*************** +*** 153,161 **** + static void ins_compl_free __ARGS((void)); + static void ins_compl_clear __ARGS((void)); + static int ins_compl_bs __ARGS((void)); + static void ins_compl_new_leader __ARGS((void)); + static void ins_compl_addleader __ARGS((int c)); +! static int ins_compl_len __ARGS((void)); + static void ins_compl_restart __ARGS((void)); + static void ins_compl_set_original_text __ARGS((char_u *str)); + static void ins_compl_addfrommatch __ARGS((void)); +--- 155,164 ---- + static void ins_compl_free __ARGS((void)); + static void ins_compl_clear __ARGS((void)); + static int ins_compl_bs __ARGS((void)); ++ static int ins_compl_need_restart __ARGS((void)); + static void ins_compl_new_leader __ARGS((void)); + static void ins_compl_addleader __ARGS((int c)); +! static int ins_compl_len __ARGS((void)); + static void ins_compl_restart __ARGS((void)); + static void ins_compl_set_original_text __ARGS((char_u *str)); + static void ins_compl_addfrommatch __ARGS((void)); +*************** +*** 163,168 **** +--- 166,172 ---- + static buf_T *ins_compl_next_buf __ARGS((buf_T *buf, int flag)); + #if defined(FEAT_COMPL_FUNC) || defined(FEAT_EVAL) + static void ins_compl_add_list __ARGS((list_T *list)); ++ static void ins_compl_add_dict __ARGS((dict_T *dict)); + #endif + static int ins_compl_get_exp __ARGS((pos_T *ini)); + static void ins_compl_delete __ARGS((void)); +*************** +*** 3341,3347 **** + /* Deleted more than what was used to find matches or didn't finish + * finding all matches: need to look for matches all over again. */ + if (curwin->w_cursor.col <= compl_col + compl_length +! || compl_was_interrupted) + ins_compl_restart(); + + vim_free(compl_leader); +--- 3345,3351 ---- + /* Deleted more than what was used to find matches or didn't finish + * finding all matches: need to look for matches all over again. */ + if (curwin->w_cursor.col <= compl_col + compl_length +! || ins_compl_need_restart()) + ins_compl_restart(); + + vim_free(compl_leader); +*************** +*** 3355,3360 **** +--- 3359,3378 ---- + } + + /* ++ * Return TRUE when we need to find matches again, ins_compl_restart() is to ++ * be called. ++ */ ++ static int ++ ins_compl_need_restart() ++ { ++ /* Return TRUE if we didn't complete finding matches or when the ++ * 'completefunc' returned "always" in the "refresh" dictionary item. */ ++ return compl_was_interrupted ++ || ((ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI) ++ && compl_opt_refresh_always); ++ } ++ ++ /* + * Called after changing "compl_leader". + * Show the popup menu with a different set of matches. + * May also search for matches again if the previous search was interrupted. +*************** +*** 3443,3449 **** + ins_char(c); + + /* If we didn't complete finding matches we must search again. */ +! if (compl_was_interrupted) + ins_compl_restart(); + + vim_free(compl_leader); +--- 3461,3467 ---- + ins_char(c); + + /* If we didn't complete finding matches we must search again. */ +! if (ins_compl_need_restart()) + ins_compl_restart(); + + vim_free(compl_leader); +*************** +*** 3871,3882 **** + int type; /* CTRL_X_OMNI or CTRL_X_FUNCTION */ + char_u *base; + { +! list_T *matchlist; + char_u *args[2]; + char_u *funcname; + pos_T pos; + win_T *curwin_save; + buf_T *curbuf_save; + + funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu; + if (*funcname == NUL) +--- 3889,3902 ---- + int type; /* CTRL_X_OMNI or CTRL_X_FUNCTION */ + char_u *base; + { +! list_T *matchlist = NULL; +! dict_T *matchdict = NULL; + char_u *args[2]; + char_u *funcname; + pos_T pos; + win_T *curwin_save; + buf_T *curbuf_save; ++ typval_T rettv; + + funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu; + if (*funcname == NUL) +*************** +*** 3889,3895 **** + pos = curwin->w_cursor; + curwin_save = curwin; + curbuf_save = curbuf; +! matchlist = call_func_retlist(funcname, 2, args, FALSE); + if (curwin_save != curwin || curbuf_save != curbuf) + { + EMSG(_(e_complwin)); +--- 3909,3933 ---- + pos = curwin->w_cursor; + curwin_save = curwin; + curbuf_save = curbuf; +! +! /* Call a function, which returns a list or dict. */ +! if (call_vim_function(funcname, 2, args, FALSE, &rettv) == OK) +! { +! switch (rettv.v_type) +! { +! case VAR_LIST: +! matchlist = rettv.vval.v_list; +! break; +! case VAR_DICT: +! matchdict = rettv.vval.v_dict; +! break; +! default: +! /* TODO: Give error message? */ +! clear_tv(&rettv); +! break; +! } +! } +! + if (curwin_save != curwin || curbuf_save != curbuf) + { + EMSG(_(e_complwin)); +*************** +*** 3902,3911 **** +--- 3940,3954 ---- + EMSG(_(e_compldel)); + goto theend; + } ++ + if (matchlist != NULL) + ins_compl_add_list(matchlist); ++ else if (matchdict != NULL) ++ ins_compl_add_dict(matchdict); + + theend: ++ if (matchdict != NULL) ++ dict_unref(matchdict); + if (matchlist != NULL) + list_unref(matchlist); + } +*************** +*** 3934,3939 **** +--- 3977,4009 ---- + } + + /* ++ * Add completions from a dict. ++ */ ++ static void ++ ins_compl_add_dict(dict) ++ dict_T *dict; ++ { ++ dictitem_T *refresh; ++ dictitem_T *words; ++ ++ /* Check for optional "refresh" item. */ ++ compl_opt_refresh_always = FALSE; ++ refresh = dict_find(dict, (char_u *)"refresh", 7); ++ if (refresh != NULL && refresh->di_tv.v_type == VAR_STRING) ++ { ++ char_u *v = refresh->di_tv.vval.v_string; ++ ++ if (v != NULL && STRCMP(v, (char_u *)"always") == 0) ++ compl_opt_refresh_always = TRUE; ++ } ++ ++ /* Add completions from a "words" list. */ ++ words = dict_find(dict, (char_u *)"words", 5); ++ if (words != NULL && words->di_tv.v_type == VAR_LIST) ++ ins_compl_add_list(words->di_tv.vval.v_list); ++ } ++ ++ /* + * Add a match to the list of matches from a typeval_T. + * If the given string is already in the list of completions, then return + * NOTDONE, otherwise add it to the list and return OK. If there is an error, +*************** +*** 5088,5093 **** +--- 5158,5169 ---- + return FAIL; + } + ++ /* ++ * Reset extended parameters of completion, when start new ++ * completion. ++ */ ++ compl_opt_refresh_always = FALSE; ++ + if (col < 0) + col = curs_col; + compl_col = col; +*** ../vim-7.3.310/src/eval.c 2011-09-14 14:33:47.000000000 +0200 +--- src/eval.c 2011-09-14 16:16:47.000000000 +0200 +*************** +*** 380,388 **** + + static void prepare_vimvar __ARGS((int idx, typval_T *save_tv)); + static void restore_vimvar __ARGS((int idx, typval_T *save_tv)); +- #if defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL) +- static int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv)); +- #endif + static int ex_let_vars __ARGS((char_u *arg, typval_T *tv, int copy, int semicolon, int var_count, char_u *nextchars)); + static char_u *skip_var_list __ARGS((char_u *arg, int *var_count, int *semicolon)); + static char_u *skip_var_one __ARGS((char_u *arg)); +--- 380,385 ---- +*************** +*** 451,457 **** + static void set_ref_in_list __ARGS((list_T *l, int copyID)); + static void set_ref_in_item __ARGS((typval_T *tv, int copyID)); + static int rettv_dict_alloc __ARGS((typval_T *rettv)); +- static void dict_unref __ARGS((dict_T *d)); + static void dict_free __ARGS((dict_T *d, int recurse)); + static dictitem_T *dictitem_copy __ARGS((dictitem_T *org)); + static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item)); +--- 448,453 ---- +*************** +*** 1563,1569 **** + * arguments are currently supported. + * Returns OK or FAIL. + */ +! static int + call_vim_function(func, argc, argv, safe, rettv) + char_u *func; + int argc; +--- 1559,1565 ---- + * arguments are currently supported. + * Returns OK or FAIL. + */ +! int + call_vim_function(func, argc, argv, safe, rettv) + char_u *func; + int argc; +*************** +*** 6903,6909 **** + * Unreference a Dictionary: decrement the reference count and free it when it + * becomes zero. + */ +! static void + dict_unref(d) + dict_T *d; + { +--- 6899,6905 ---- + * Unreference a Dictionary: decrement the reference count and free it when it + * becomes zero. + */ +! void + dict_unref(d) + dict_T *d; + { +*** ../vim-7.3.310/src/proto/eval.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/eval.pro 2011-09-14 16:16:47.000000000 +0200 +*************** +*** 23,28 **** +--- 23,29 ---- + list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr)); + int get_spellword __ARGS((list_T *list, char_u **pp)); + typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd)); ++ int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv)); + void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe)); + long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe)); + void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe)); +*************** +*** 52,57 **** +--- 53,59 ---- + int list_append_string __ARGS((list_T *l, char_u *str, int len)); + int garbage_collect __ARGS((void)); + dict_T *dict_alloc __ARGS((void)); ++ void dict_unref __ARGS((dict_T *d)); + dictitem_T *dictitem_alloc __ARGS((char_u *key)); + void dictitem_free __ARGS((dictitem_T *item)); + int dict_add __ARGS((dict_T *d, dictitem_T *item)); +*** ../vim-7.3.310/src/version.c 2011-09-14 16:04:52.000000000 +0200 +--- src/version.c 2011-09-14 16:25:08.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 311, + /**/ + +-- +Contrary to popular belief, it's often your clothing that gets promoted, not +you. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.312 b/source/ap/vim/patches/7.3.312 new file mode 100644 index 00000000..d2480e09 --- /dev/null +++ b/source/ap/vim/patches/7.3.312 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.312 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.312 (after 7.3.306) +Problem: Can't compile with tiny features. +Solution: Add #ifdef around win_valid(). +Files: src/buffer.c + + +*** ../vim-7.3.311/src/buffer.c 2011-09-14 14:43:21.000000000 +0200 +--- src/buffer.c 2011-09-14 17:46:24.000000000 +0200 +*************** +*** 416,422 **** + #endif + + buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0)); +! if (win_valid(win) && win->w_buffer == buf) + win->w_buffer = NULL; /* make sure we don't use the buffer now */ + + #ifdef FEAT_AUTOCMD +--- 416,426 ---- + #endif + + buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0)); +! if ( +! #ifdef FEAT_WINDOWS +! win_valid(win) && +! #endif +! win->w_buffer == buf) + win->w_buffer = NULL; /* make sure we don't use the buffer now */ + + #ifdef FEAT_AUTOCMD +*** ../vim-7.3.311/src/version.c 2011-09-14 16:52:02.000000000 +0200 +--- src/version.c 2011-09-14 17:27:24.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 312, + /**/ + +-- +You have heard the saying that if you put a thousand monkeys in a room with a +thousand typewriters and waited long enough, eventually you would have a room +full of dead monkeys. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.313 b/source/ap/vim/patches/7.3.313 new file mode 100644 index 00000000..ca818b8b --- /dev/null +++ b/source/ap/vim/patches/7.3.313 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.313 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.313 (after 7.3.307) +Problem: One more warning when compiling with dynamic Python 3. +Solution: Change PySliceObject to PyObject. +Files: src/if_python3.c + + +*** ../vim-7.3.312/src/if_python3.c 2011-09-14 15:41:54.000000000 +0200 +--- src/if_python3.c 2011-09-14 18:54:49.000000000 +0200 +*************** +*** 194,200 **** + static int (*py3_PySys_SetObject)(char *, PyObject *); + static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *); + static Py_ssize_t (*py3_PyList_Size)(PyObject *); +! static int (*py3_PySlice_GetIndicesEx)(PySliceObject *r, Py_ssize_t length, + Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength); + static PyObject* (*py3_PyErr_NoMemory)(void); + static void (*py3_Py_Finalize)(void); +--- 194,200 ---- + static int (*py3_PySys_SetObject)(char *, PyObject *); + static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *); + static Py_ssize_t (*py3_PyList_Size)(PyObject *); +! static int (*py3_PySlice_GetIndicesEx)(PyObject *r, Py_ssize_t length, + Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength); + static PyObject* (*py3_PyErr_NoMemory)(void); + static void (*py3_Py_Finalize)(void); +*** ../vim-7.3.312/src/version.c 2011-09-14 17:50:05.000000000 +0200 +--- src/version.c 2011-09-14 18:56:03.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 313, + /**/ + +-- +All good vision statements are created by groups of people with bloated +bladders who would rather be doing anything else. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.314 b/source/ap/vim/patches/7.3.314 new file mode 100644 index 00000000..76415d65 --- /dev/null +++ b/source/ap/vim/patches/7.3.314 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.314 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.314 (after 7.3.304) +Problem: Missing parenthesis. +Solution: Add it. (Benjamin R. Haskell) +Files: src/Make_mvc.mak + + +*** ../vim-7.3.313/src/Make_mvc.mak 2011-09-14 10:49:44.000000000 +0200 +--- src/Make_mvc.mak 2011-09-14 18:56:24.000000000 +0200 +*************** +*** 785,791 **** + PERL_INC = /I $(PERL_INCDIR) + PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj + XSUBPP = $(PERL)\lib\ExtUtils\xsubpp +! !if exist($(XSUBPP) + XSUBPP = $(PERL_EXE) $(XSUBPP) + !else + XSUBPP = xsubpp +--- 785,791 ---- + PERL_INC = /I $(PERL_INCDIR) + PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj + XSUBPP = $(PERL)\lib\ExtUtils\xsubpp +! !if exist($(XSUBPP)) + XSUBPP = $(PERL_EXE) $(XSUBPP) + !else + XSUBPP = xsubpp +*** ../vim-7.3.313/src/version.c 2011-09-14 18:59:35.000000000 +0200 +--- src/version.c 2011-09-14 19:01:12.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 314, + /**/ + +-- +Often you're less important than your furniture. If you think about it, you +can get fired but your furniture stays behind, gainfully employed at the +company that didn't need _you_ anymore. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.315 b/source/ap/vim/patches/7.3.315 new file mode 100644 index 00000000..2240f7b7 --- /dev/null +++ b/source/ap/vim/patches/7.3.315 @@ -0,0 +1,475 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.315 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.315 +Problem: Opening a window before forking causes problems for GTK. +Solution: Fork first, create the window in the child and report back to the + parent process whether it worked. If successful the parent exits, + if unsuccessful the child exits and the parent continues in the + terminal. (Tim Starling) +Files: src/gui.c + + +*** ../vim-7.3.314/src/gui.c 2011-08-10 17:44:41.000000000 +0200 +--- src/gui.c 2011-09-14 17:34:30.000000000 +0200 +*************** +*** 37,42 **** +--- 37,60 ---- + 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)); ++ ++ static int gui_read_child_pipe __ARGS((int fd)); ++ ++ /* Return values for gui_read_child_pipe */ ++ enum { ++ GUI_CHILD_IO_ERROR, ++ GUI_CHILD_OK, ++ GUI_CHILD_FAILED ++ }; ++ ++ #endif /* MAY_FORK */ ++ ++ static void gui_attempt_start __ARGS((void)); ++ + static int can_update_cursor = TRUE; /* can display the cursor */ + + /* +*************** +*** 59,105 **** + gui_start() + { + char_u *old_term; +- #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \ +- && !defined(__APPLE__) +- # define MAY_FORK +- int dofork = TRUE; +- #endif + static int recursive = 0; + + old_term = vim_strsave(T_NAME); + +- /* +- * Set_termname() will call gui_init() to start the GUI. +- * Set the "starting" flag, to indicate that the GUI will start. +- * +- * We don't want to open the GUI shell until after we've read .gvimrc, +- * otherwise we don't know what font we will use, and hence we don't know +- * what size the shell should be. So if there are errors in the .gvimrc +- * file, they will have to go to the terminal: Set full_screen to FALSE. +- * full_screen will be set to TRUE again by a successful termcapinit(). +- */ + settmode(TMODE_COOK); /* stop RAW mode */ + if (full_screen) + cursor_on(); /* needed for ":gui" in .vimrc */ +- gui.starting = TRUE; + full_screen = FALSE; + +! #ifdef FEAT_GUI_GTK +! gui.event_time = GDK_CURRENT_TIME; +! #endif + + #ifdef MAY_FORK +! if (!gui.dofork || vim_strchr(p_go, GO_FORG) || recursive) +! dofork = FALSE; + #endif +! ++recursive; +! +! termcapinit((char_u *)"builtin_gui"); +! gui.starting = recursive - 1; + + if (!gui.in_use) /* failed to start GUI */ + { +! termcapinit(old_term); /* back to old term settings */ + settmode(TMODE_RAW); /* restart RAW mode */ + #ifdef FEAT_TITLE + set_title_defaults(); /* set 'title' and 'icon' again */ +--- 77,123 ---- + gui_start() + { + char_u *old_term; + static int recursive = 0; + + old_term = vim_strsave(T_NAME); + + settmode(TMODE_COOK); /* stop RAW mode */ + if (full_screen) + cursor_on(); /* needed for ":gui" in .vimrc */ + full_screen = FALSE; + +! ++recursive; + + #ifdef MAY_FORK +! /* +! * Quit the current process and continue in the child. +! * Makes "gvim file" disconnect from the shell it was started in. +! * Don't do this when Vim was started with "-f" or the 'f' flag is present +! * in 'guioptions'. +! */ +! if (gui.dofork && !vim_strchr(p_go, GO_FORG) && recursive <= 1) +! { +! gui_do_fork(); +! } +! else + #endif +! { +! gui_attempt_start(); +! } + + if (!gui.in_use) /* failed to start GUI */ + { +! /* Back to old term settings +! * +! * FIXME: If we got here because a child process failed and flagged to +! * the parent to resume, and X11 is enabled with FEAT_TITLE, this will +! * hit an X11 I/O error and do a longjmp(), leaving recursive +! * permanently set to 1. This is probably not as big a problem as it +! * sounds, because gui_mch_init() in both gui_x11.c and gui_gtk_x11.c +! * return "OK" unconditionally, so it would be very difficult to +! * actually hit this case. +! */ +! termcapinit(old_term); + settmode(TMODE_RAW); /* restart RAW mode */ + #ifdef FEAT_TITLE + set_title_defaults(); /* set 'title' and 'icon' again */ +*************** +*** 108,113 **** +--- 126,166 ---- + + vim_free(old_term); + ++ #ifdef FEAT_AUTOCMD ++ /* If the GUI started successfully, trigger the GUIEnter event, otherwise ++ * the GUIFailed event. */ ++ gui_mch_update(); ++ apply_autocmds(gui.in_use ? EVENT_GUIENTER : EVENT_GUIFAILED, ++ NULL, NULL, FALSE, curbuf); ++ #endif ++ --recursive; ++ } ++ ++ /* ++ * Set_termname() will call gui_init() to start the GUI. ++ * Set the "starting" flag, to indicate that the GUI will start. ++ * ++ * We don't want to open the GUI shell until after we've read .gvimrc, ++ * otherwise we don't know what font we will use, and hence we don't know ++ * what size the shell should be. So if there are errors in the .gvimrc ++ * file, they will have to go to the terminal: Set full_screen to FALSE. ++ * full_screen will be set to TRUE again by a successful termcapinit(). ++ */ ++ static void ++ gui_attempt_start() ++ { ++ static int recursive = 0; ++ ++ ++recursive; ++ gui.starting = TRUE; ++ ++ #ifdef FEAT_GUI_GTK ++ gui.event_time = GDK_CURRENT_TIME; ++ #endif ++ ++ termcapinit((char_u *)"builtin_gui"); ++ gui.starting = recursive - 1; ++ + #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11) + if (gui.in_use) + { +*************** +*** 123,218 **** + display_errors(); + } + #endif + +! #if defined(MAY_FORK) && !defined(__QNXNTO__) +! /* +! * Quit the current process and continue in the child. +! * Makes "gvim file" disconnect from the shell it was started in. +! * Don't do this when Vim was started with "-f" or the 'f' flag is present +! * in 'guioptions'. +! */ +! if (gui.in_use && dofork) + { +! int pipefd[2]; /* pipe between parent and child */ +! int pipe_error; +! char dummy; +! pid_t pid = -1; +! +! /* Setup a pipe between the child and the parent, so that the parent +! * knows when the child has done the setsid() call and is allowed to +! * exit. */ +! pipe_error = (pipe(pipefd) < 0); +! pid = fork(); +! if (pid > 0) /* Parent */ + { +! /* Give the child some time to do the setsid(), otherwise the +! * exit() may kill the child too (when starting gvim from inside a +! * gvim). */ +! if (pipe_error) +! ui_delay(300L, TRUE); +! else + { +! /* The read returns when the child closes the pipe (or when +! * the child dies for some reason). */ +! close(pipefd[1]); +! ignored = (int)read(pipefd[0], &dummy, (size_t)1); +! close(pipefd[0]); + } +! +! /* When swapping screens we may need to go to the next line, e.g., +! * after a hit-enter prompt and using ":gui". */ +! if (newline_on_exit) +! mch_errmsg("\r\n"); +! +! /* +! * The parent must skip the normal exit() processing, the child +! * will do it. For example, GTK messes up signals when exiting. +! */ +! _exit(0); + } + +! # if defined(HAVE_SETSID) || defined(HAVE_SETPGID) + /* +! * Change our process group. On some systems/shells a CTRL-C in the +! * shell where Vim was started would otherwise kill gvim! + */ +! if (pid == 0) /* child */ + # if defined(HAVE_SETSID) +! (void)setsid(); + # else +! (void)setpgid(0, 0); + # endif + # endif +! if (!pipe_error) +! { +! close(pipefd[0]); +! close(pipefd[1]); +! } + + # if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION) +! /* Tell the session manager our new PID */ +! gui_mch_forked(); + # endif + } +- #else +- # if defined(__QNXNTO__) +- if (gui.in_use && dofork) +- procmgr_daemon(0, PROCMGR_DAEMON_KEEPUMASK | PROCMGR_DAEMON_NOCHDIR | +- PROCMGR_DAEMON_NOCLOSE | PROCMGR_DAEMON_NODEVNULL); +- # endif +- #endif + +! #ifdef FEAT_AUTOCMD +! /* If the GUI started successfully, trigger the GUIEnter event, otherwise +! * the GUIFailed event. */ +! gui_mch_update(); +! apply_autocmds(gui.in_use ? EVENT_GUIENTER : EVENT_GUIFAILED, +! NULL, NULL, FALSE, curbuf); + #endif + +! --recursive; + } + + /* + * Call this when vim starts up, whether or not the GUI is started + */ +--- 176,346 ---- + display_errors(); + } + #endif ++ --recursive; ++ } + +! #ifdef MAY_FORK +! +! /* for waitpid() */ +! # if defined(HAVE_SYS_WAIT_H) || defined(HAVE_UNION_WAIT) +! # include <sys/wait.h> +! # endif +! +! /* +! * Create a new process, by forking. In the child, start the GUI, and in +! * the parent, exit. +! * +! * If something goes wrong, this will return with gui.in_use still set +! * to FALSE, in which case the caller should continue execution without +! * the GUI. +! * +! * If the child fails to start the GUI, then the child will exit and the +! * parent will return. If the child succeeds, then the parent will exit +! * and the child will return. +! */ +! static void +! gui_do_fork() +! { +! #ifdef __QNXNTO__ +! procmgr_daemon(0, PROCMGR_DAEMON_KEEPUMASK | PROCMGR_DAEMON_NOCHDIR | +! PROCMGR_DAEMON_NOCLOSE | PROCMGR_DAEMON_NODEVNULL); +! gui_attempt_start(); +! return; +! #else +! int pipefd[2]; /* pipe between parent and child */ +! int pipe_error; +! int status; +! int exit_status; +! pid_t pid = -1; +! FILE *parent_file; +! +! /* Setup a pipe between the child and the parent, so that the parent +! * knows when the child has done the setsid() call and is allowed to +! * exit. */ +! pipe_error = (pipe(pipefd) < 0); +! pid = fork(); +! if (pid < 0) /* Fork error */ + { +! EMSG(_("E851: Failed to create a new process for the GUI")); +! return; +! } +! else if (pid > 0) /* Parent */ +! { +! /* Give the child some time to do the setsid(), otherwise the +! * exit() may kill the child too (when starting gvim from inside a +! * gvim). */ +! if (!pipe_error) + { +! /* The read returns when the child closes the pipe (or when +! * the child dies for some reason). */ +! close(pipefd[1]); +! status = gui_read_child_pipe(pipefd[0]); +! if (status == GUI_CHILD_FAILED) + { +! /* The child failed to start the GUI, so the caller must +! * continue. There may be more error information written +! * to stderr by the child. */ +! # ifdef __NeXT__ +! wait4(pid, &exit_status, 0, (struct rusage *)0); +! # else +! waitpid(pid, &exit_status, 0); +! # endif +! EMSG(_("E852: The child process failed to start the GUI")); +! return; + } +! else if (status == GUI_CHILD_IO_ERROR) +! { +! pipe_error = TRUE; +! } +! /* else GUI_CHILD_OK: parent exit */ + } + +! if (pipe_error) +! ui_delay(300L, TRUE); +! +! /* When swapping screens we may need to go to the next line, e.g., +! * after a hit-enter prompt and using ":gui". */ +! if (newline_on_exit) +! mch_errmsg("\r\n"); +! + /* +! * The parent must skip the normal exit() processing, the child +! * will do it. For example, GTK messes up signals when exiting. + */ +! _exit(0); +! } +! /* Child */ +! +! # if defined(HAVE_SETSID) || defined(HAVE_SETPGID) +! /* +! * Change our process group. On some systems/shells a CTRL-C in the +! * shell where Vim was started would otherwise kill gvim! +! */ + # if defined(HAVE_SETSID) +! (void)setsid(); + # else +! (void)setpgid(0, 0); + # endif + # endif +! if (!pipe_error) +! close(pipefd[0]); + + # if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION) +! /* Tell the session manager our new PID */ +! gui_mch_forked(); + # endif ++ ++ if (!pipe_error) ++ parent_file = fdopen(pipefd[1], "w"); ++ else ++ parent_file = NULL; ++ ++ /* Try to start the GUI */ ++ gui_attempt_start(); ++ ++ /* Notify the parent */ ++ if (parent_file != NULL) ++ { ++ fputs(gui.in_use ? "ok" : "fail", parent_file); ++ fclose(parent_file); + } + +! /* If we failed to start the GUI, exit now. */ +! if (!gui.in_use) +! exit(1); + #endif ++ } + +! /* +! * Read from a pipe assumed to be connected to the child process (this +! * function is called from the parent). +! * Return GUI_CHILD_OK if the child successfully started the GUI, +! * GUY_CHILD_FAILED if the child failed, or GUI_CHILD_IO_ERROR if there was +! * some other error. +! * +! * The file descriptor will be closed before the function returns. +! */ +! static int +! gui_read_child_pipe(int fd) +! { +! size_t bytes_read; +! FILE *file; +! char buffer[10]; +! +! file = fdopen(fd, "r"); +! if (!file) +! return GUI_CHILD_IO_ERROR; +! +! bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file); +! buffer[bytes_read] = '\0'; +! fclose(file); +! if (strcmp(buffer, "ok") == 0) +! return GUI_CHILD_OK; +! return GUI_CHILD_FAILED; + } + ++ #endif /* MAY_FORK */ ++ + /* + * Call this when vim starts up, whether or not the GUI is started + */ +*** ../vim-7.3.314/src/version.c 2011-09-14 19:01:38.000000000 +0200 +--- src/version.c 2011-09-14 19:02:45.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 315, + /**/ + +-- +A)bort, R)etry, B)ang it with a large hammer + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.316 b/source/ap/vim/patches/7.3.316 new file mode 100644 index 00000000..96a7d42b --- /dev/null +++ b/source/ap/vim/patches/7.3.316 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.316 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.316 (after 7.3.306) +Problem: Crash when 'colorcolumn' is set and closing buffer. +Solution: Check for w_buffer to be NULL. (Yasuhiro Matsumoto) +Files: src/option.c + + +*** ../vim-7.3.315/src/option.c 2011-06-12 22:13:37.000000000 +0200 +--- src/option.c 2011-09-21 13:26:31.000000000 +0200 +*************** +*** 7036,7041 **** +--- 7036,7044 ---- + int i; + int j = 0; + ++ if (wp->w_buffer == NULL) ++ return NULL; /* buffer was closed */ ++ + for (s = wp->w_p_cc; *s != NUL && count < 255;) + { + if (*s == '-' || *s == '+') +*** ../vim-7.3.315/src/version.c 2011-09-14 19:04:35.000000000 +0200 +--- src/version.c 2011-09-21 13:40:05.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 316, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +25. You believe nothing looks sexier than a man in boxer shorts illuminated + only by a 17" inch svga monitor. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.317 b/source/ap/vim/patches/7.3.317 new file mode 100644 index 00000000..220cae21 --- /dev/null +++ b/source/ap/vim/patches/7.3.317 @@ -0,0 +1,116 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.317 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.317 +Problem: Calling debug.debug() in Lua may cause Vim to hang. +Solution: Add a better debug method. (Rob Hoelz, Luis Carvalho) +Files: src/if_lua.c + + +*** ../vim-7.3.316/src/if_lua.c 2011-01-17 19:53:20.000000000 +0100 +--- src/if_lua.c 2011-09-21 17:15:21.000000000 +0200 +*************** +*** 100,105 **** +--- 100,106 ---- + #define lua_setfield dll_lua_setfield + #define lua_rawset dll_lua_rawset + #define lua_rawseti dll_lua_rawseti ++ #define lua_remove dll_lua_remove + #define lua_setmetatable dll_lua_setmetatable + #define lua_call dll_lua_call + #define lua_pcall dll_lua_pcall +*************** +*** 161,166 **** +--- 162,168 ---- + void (*dll_lua_setfield) (lua_State *L, int idx, const char *k); + void (*dll_lua_rawset) (lua_State *L, int idx); + void (*dll_lua_rawseti) (lua_State *L, int idx, int n); ++ void (*dll_lua_remove) (lua_State *L, int idx); + int (*dll_lua_setmetatable) (lua_State *L, int objindex); + void (*dll_lua_call) (lua_State *L, int nargs, int nresults); + int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); +*************** +*** 229,234 **** +--- 231,237 ---- + {"lua_setfield", (luaV_function) &dll_lua_setfield}, + {"lua_rawset", (luaV_function) &dll_lua_rawset}, + {"lua_rawseti", (luaV_function) &dll_lua_rawseti}, ++ {"lua_remove", (luaV_function) &dll_lua_remove}, + {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable}, + {"lua_call", (luaV_function) &dll_lua_call}, + {"lua_pcall", (luaV_function) &dll_lua_pcall}, +*************** +*** 924,929 **** +--- 927,957 ---- + } + + static int ++ luaV_debug(lua_State *L) ++ { ++ lua_settop(L, 0); ++ lua_getglobal(L, "vim"); ++ lua_getfield(L, -1, "eval"); ++ lua_remove(L, -2); /* vim.eval at position 1 */ ++ for (;;) ++ { ++ const char *input; ++ size_t l; ++ lua_pushvalue(L, 1); /* vim.eval */ ++ lua_pushliteral(L, "input('lua_debug> ')"); ++ lua_call(L, 1, 1); /* return string */ ++ input = lua_tolstring(L, -1, &l); ++ if (l == 0 || strcmp(input, "cont") == 0) ++ return 0; ++ msg_putchar('\n'); /* avoid outputting on input line */ ++ if (luaL_loadbuffer(L, input, l, "=(debug command)") ++ || lua_pcall(L, 0, 0, 0)) ++ luaV_emsg(L); ++ lua_settop(L, 1); /* remove eventual returns, but keep vim.eval */ ++ } ++ } ++ ++ static int + luaV_command(lua_State *L) + { + do_cmdline_cmd((char_u *) luaL_checkstring(L, 1)); +*************** +*** 1082,1087 **** +--- 1110,1120 ---- + /* print */ + lua_pushcfunction(L, luaV_print); + lua_setglobal(L, "print"); ++ /* debug.debug */ ++ lua_getglobal(L, "debug"); ++ lua_pushcfunction(L, luaV_debug); ++ lua_setfield(L, -2, "debug"); ++ lua_pop(L, 1); + /* free */ + lua_pushlightuserdata(L, (void *) LUAVIM_FREE); + lua_pushcfunction(L, luaV_free); +*** ../vim-7.3.316/src/version.c 2011-09-21 13:40:13.000000000 +0200 +--- src/version.c 2011-09-21 17:14:01.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 317, + /**/ + +-- +Q: What is the difference betwee open-source and commercial software? +A: If you have a problem with commercial software you can call a phone + number and they will tell you it might be solved in a future version. + For open-source software there isn't a phone number to call, but you + get the solution within a day. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.318 b/source/ap/vim/patches/7.3.318 new file mode 100644 index 00000000..36944802 --- /dev/null +++ b/source/ap/vim/patches/7.3.318 @@ -0,0 +1,90 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.318 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.318 +Problem: "C" on the last line deletes that line if it's blank. +Solution: Only delete the last line for a delete operation. (James Vega) +Files: src/ops.c + + +*** ../vim-7.3.317/src/ops.c 2011-08-10 12:10:55.000000000 +0200 +--- src/ops.c 2011-09-21 17:32:36.000000000 +0200 +*************** +*** 1922,1928 **** + curwin->w_cursor.coladd = 0; + } + #endif +! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count + && n > (int)STRLEN(ml_get(oap->end.lnum))) + { + /* Special case: gH<Del> deletes the last line. */ +--- 1922,1930 ---- + curwin->w_cursor.coladd = 0; + } + #endif +! if (oap->op_type == OP_DELETE +! && oap->inclusive +! && oap->end.lnum == curbuf->b_ml.ml_line_count + && n > (int)STRLEN(ml_get(oap->end.lnum))) + { + /* Special case: gH<Del> deletes the last line. */ +*************** +*** 3331,3338 **** + if (regname == '=') + { + /* For the = register we need to split the string at NL +! * characters. */ +! /* Loop twice: count the number of lines and save them. */ + for (;;) + { + y_size = 0; +--- 3333,3340 ---- + if (regname == '=') + { + /* For the = register we need to split the string at NL +! * characters. +! * Loop twice: count the number of lines and save them. */ + for (;;) + { + y_size = 0; +*************** +*** 3348,3354 **** + if (y_array != NULL) + *ptr = NUL; + ++ptr; +! /* A trailing '\n' makes the string linewise */ + if (*ptr == NUL) + { + y_type = MLINE; +--- 3350,3356 ---- + if (y_array != NULL) + *ptr = NUL; + ++ptr; +! /* A trailing '\n' makes the register linewise. */ + if (*ptr == NUL) + { + y_type = MLINE; +*** ../vim-7.3.317/src/version.c 2011-09-21 17:15:34.000000000 +0200 +--- src/version.c 2011-09-21 17:31:48.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 318, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +26. You check your mail. It says "no new messages." So you check it again. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.319 b/source/ap/vim/patches/7.3.319 new file mode 100644 index 00000000..68448ab6 --- /dev/null +++ b/source/ap/vim/patches/7.3.319 @@ -0,0 +1,154 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.319 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.319 (after 7.3.311) +Problem: Redobuff doesn't always include changes of the completion leader. +Solution: Insert backspaces as needed. (idea by Taro Muraoka) +Files: src/edit.c + + +*** ../vim-7.3.318/src/edit.c 2011-09-14 16:52:02.000000000 +0200 +--- src/edit.c 2011-09-21 17:59:10.000000000 +0200 +*************** +*** 163,168 **** +--- 163,169 ---- + static void ins_compl_set_original_text __ARGS((char_u *str)); + static void ins_compl_addfrommatch __ARGS((void)); + static int ins_compl_prep __ARGS((int c)); ++ static void ins_compl_fixRedoBufForLeader __ARGS((char_u *ptr_arg)); + static buf_T *ins_compl_next_buf __ARGS((buf_T *buf, int flag)); + #if defined(FEAT_COMPL_FUNC) || defined(FEAT_EVAL) + static void ins_compl_add_list __ARGS((list_T *list)); +*************** +*** 3713,3721 **** + * memory that was used, and make sure we can redo the insert. */ + if (compl_curr_match != NULL || compl_leader != NULL || c == Ctrl_E) + { +- char_u *p; +- int temp = 0; +- + /* + * If any of the original typed text has been changed, eg when + * ignorecase is set, we must add back-spaces to the redo +--- 3714,3719 ---- +*************** +*** 3726,3750 **** + */ + if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E) + ptr = compl_curr_match->cp_str; +- else if (compl_leader != NULL) +- ptr = compl_leader; + else +! ptr = compl_orig_text; +! if (compl_orig_text != NULL) +! { +! p = compl_orig_text; +! for (temp = 0; p[temp] != NUL && p[temp] == ptr[temp]; +! ++temp) +! ; +! #ifdef FEAT_MBYTE +! if (temp > 0) +! temp -= (*mb_head_off)(compl_orig_text, p + temp); +! #endif +! for (p += temp; *p != NUL; mb_ptr_adv(p)) +! AppendCharToRedobuff(K_BS); +! } +! if (ptr != NULL) +! AppendToRedobuffLit(ptr + temp, -1); + } + + #ifdef FEAT_CINDENT +--- 3724,3732 ---- + */ + if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E) + ptr = compl_curr_match->cp_str; + else +! ptr = NULL; +! ins_compl_fixRedoBufForLeader(ptr); + } + + #ifdef FEAT_CINDENT +*************** +*** 3834,3839 **** +--- 3816,3859 ---- + } + + /* ++ * Fix the redo buffer for the completion leader replacing some of the typed ++ * text. This inserts backspaces and appends the changed text. ++ * "ptr" is the known leader text or NUL. ++ */ ++ static void ++ ins_compl_fixRedoBufForLeader(ptr_arg) ++ char_u *ptr_arg; ++ { ++ int len; ++ char_u *p; ++ char_u *ptr = ptr_arg; ++ ++ if (ptr == NULL) ++ { ++ if (compl_leader != NULL) ++ ptr = compl_leader; ++ else ++ return; /* nothing to do */ ++ } ++ if (compl_orig_text != NULL) ++ { ++ p = compl_orig_text; ++ for (len = 0; p[len] != NUL && p[len] == ptr[len]; ++len) ++ ; ++ #ifdef FEAT_MBYTE ++ if (len > 0) ++ len -= (*mb_head_off)(p, p + len); ++ #endif ++ for (p += len; *p != NUL; mb_ptr_adv(p)) ++ AppendCharToRedobuff(K_BS); ++ } ++ else ++ len = 0; ++ if (ptr != NULL) ++ AppendToRedobuffLit(ptr + len, -1); ++ } ++ ++ /* + * Loops through the list of windows, loaded-buffers or non-loaded-buffers + * (depending on flag) starting from buf and looking for a non-scanned + * buffer (other than curbuf). curbuf is special, if it is called with +*************** +*** 5241,5246 **** +--- 5261,5270 ---- + else + edit_submode = (char_u *)_(CTRL_X_MSG(ctrl_x_mode)); + ++ /* If any of the original typed text has been changed we need to fix ++ * the redo buffer. */ ++ ins_compl_fixRedoBufForLeader(NULL); ++ + /* Always add completion for the original text. */ + vim_free(compl_orig_text); + compl_orig_text = vim_strnsave(line + compl_col, compl_length); +*** ../vim-7.3.318/src/version.c 2011-09-21 17:33:49.000000000 +0200 +--- src/version.c 2011-09-21 18:21:07.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 319, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +27. You refer to your age as 3.x. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.320 b/source/ap/vim/patches/7.3.320 new file mode 100644 index 00000000..3b957c29 --- /dev/null +++ b/source/ap/vim/patches/7.3.320 @@ -0,0 +1,130 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.320 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.320 +Problem: When a 0xa0 character is in a sourced file the error message for + unrecognized command does not show the problem. +Solution: Display 0xa0 as <a0>. +Files: src/ex_docmd.c + + +*** ../vim-7.3.319/src/ex_docmd.c 2011-07-20 16:36:35.000000000 +0200 +--- src/ex_docmd.c 2011-09-21 19:02:15.000000000 +0200 +*************** +*** 61,66 **** +--- 61,67 ---- + static char_u *do_one_cmd __ARGS((char_u **, int, char_u *(*fgetline)(int, void *, int), void *cookie)); + static int if_level = 0; /* depth in :if */ + #endif ++ static void append_command __ARGS((char_u *cmd)); + static char_u *find_command __ARGS((exarg_T *eap, int *full)); + + static void ex_abbreviate __ARGS((exarg_T *eap)); +*************** +*** 2136,2145 **** + { + STRCPY(IObuff, _("E492: Not an editor command")); + if (!sourcing) +! { +! STRCAT(IObuff, ": "); +! STRNCAT(IObuff, *cmdlinep, 40); +! } + errormsg = IObuff; + } + goto doend; +--- 2137,2143 ---- + { + STRCPY(IObuff, _("E492: Not an editor command")); + if (!sourcing) +! append_command(*cmdlinep); + errormsg = IObuff; + } + goto doend; +*************** +*** 2708,2715 **** + STRCPY(IObuff, errormsg); + errormsg = IObuff; + } +! STRCAT(errormsg, ": "); +! STRNCAT(errormsg, *cmdlinep, IOSIZE - STRLEN(IObuff) - 1); + } + emsg(errormsg); + } +--- 2706,2712 ---- + STRCPY(IObuff, errormsg); + errormsg = IObuff; + } +! append_command(*cmdlinep); + } + emsg(errormsg); + } +*************** +*** 2797,2802 **** +--- 2794,2835 ---- + } + + /* ++ * Append "cmd" to the error message in IObuff. ++ * Takes care of limiting the length and handling 0xa0, which would be ++ * invisible otherwise. ++ */ ++ static void ++ append_command(cmd) ++ char_u *cmd; ++ { ++ char_u *s = cmd; ++ char_u *d; ++ ++ STRCAT(IObuff, ": "); ++ d = IObuff + STRLEN(IObuff); ++ while (*s != NUL && d - IObuff < IOSIZE - 7) ++ { ++ if ( ++ #ifdef FEAT_MBYTE ++ enc_utf8 ? (s[0] == 0xc2 && s[1] == 0xa0) : ++ #endif ++ *s == 0xa0) ++ { ++ s += ++ #ifdef FEAT_MBYTE ++ enc_utf8 ? 2 : ++ #endif ++ 1; ++ STRCPY(d, "<a0>"); ++ d += 4; ++ } ++ else ++ MB_COPY_CHAR(s, d); ++ } ++ *d = NUL; ++ } ++ ++ /* + * Find an Ex command by its name, either built-in or user. + * Start of the name can be found at eap->cmd. + * Returns pointer to char after the command name. +*** ../vim-7.3.319/src/version.c 2011-09-21 18:23:02.000000000 +0200 +--- src/version.c 2011-09-21 19:04:35.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 320, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +28. You have comandeered your teenager's phone line for the net and even his + friends know not to call on his line anymore. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.321 b/source/ap/vim/patches/7.3.321 new file mode 100644 index 00000000..6303b013 --- /dev/null +++ b/source/ap/vim/patches/7.3.321 @@ -0,0 +1,304 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.321 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.321 +Problem: Code not following Vim style. +Solution: Fix the style. (Elias Diem) +Files: src/os_qnx.c + + +*** ../vim-7.3.320/src/os_qnx.c 2011-06-19 01:14:22.000000000 +0200 +--- src/os_qnx.c 2011-09-21 19:48:08.000000000 +0200 +*************** +*** 24,33 **** + #if defined(FEAT_GUI_PHOTON) + PhChannelParms_t parms; + +! memset( &parms, 0, sizeof( parms ) ); + parms.flags = Ph_DYNAMIC_BUFFER; + +! is_photon_available = (PhAttach( NULL, &parms ) != NULL) ? TRUE : FALSE; + #endif + } + +--- 24,33 ---- + #if defined(FEAT_GUI_PHOTON) + PhChannelParms_t parms; + +! memset(&parms, 0, sizeof(parms)); + parms.flags = Ph_DYNAMIC_BUFFER; + +! is_photon_available = (PhAttach(NULL, &parms) != NULL) ? TRUE : FALSE; + #endif + } + +*************** +*** 39,46 **** + /* Turn on the clipboard for a console vim when photon is running */ + void qnx_clip_init() + { +! if( is_photon_available == TRUE && !gui.in_use) +! clip_init( TRUE ); + } + + /*****************************************************************************/ +--- 39,46 ---- + /* Turn on the clipboard for a console vim when photon is running */ + void qnx_clip_init() + { +! if (is_photon_available == TRUE && !gui.in_use) +! clip_init(TRUE); + } + + /*****************************************************************************/ +*************** +*** 48,79 **** + + /* No support for owning the clipboard */ + int +! clip_mch_own_selection( VimClipboard *cbd ) + { + return FALSE; + } + + void +! clip_mch_lose_selection( VimClipboard *cbd ) + { + } + + void +! clip_mch_request_selection( VimClipboard *cbd ) + { + int type = MLINE, clip_length = 0, is_type_set = FALSE; + void *cbdata; + PhClipHeader *clip_header; + char_u *clip_text = NULL; + +! cbdata = PhClipboardPasteStart( PhInputGroup( NULL )); +! if( cbdata != NULL ) + { + /* Look for the vim specific clip first */ +! clip_header = PhClipboardPasteType( cbdata, CLIP_TYPE_VIM ); +! if( clip_header != NULL && clip_header->data != NULL ) + { +! switch( *(char *) clip_header->data ) + { + default: /* fallthrough to line type */ + case 'L': type = MLINE; break; +--- 48,79 ---- + + /* No support for owning the clipboard */ + int +! clip_mch_own_selection(VimClipboard *cbd) + { + return FALSE; + } + + void +! clip_mch_lose_selection(VimClipboard *cbd) + { + } + + void +! clip_mch_request_selection(VimClipboard *cbd) + { + int type = MLINE, clip_length = 0, is_type_set = FALSE; + void *cbdata; + PhClipHeader *clip_header; + char_u *clip_text = NULL; + +! cbdata = PhClipboardPasteStart(PhInputGroup(NULL)); +! if (cbdata != NULL) + { + /* Look for the vim specific clip first */ +! clip_header = PhClipboardPasteType(cbdata, CLIP_TYPE_VIM); +! if (clip_header != NULL && clip_header->data != NULL) + { +! switch(*(char *) clip_header->data) + { + default: /* fallthrough to line type */ + case 'L': type = MLINE; break; +*************** +*** 86,112 **** + } + + /* Try for just normal text */ +! clip_header = PhClipboardPasteType( cbdata, CLIP_TYPE_TEXT ); +! if( clip_header != NULL ) + { + clip_text = clip_header->data; + clip_length = clip_header->length - 1; + +! if( clip_text != NULL && is_type_set == FALSE ) + type = MAUTO; + } + +! if( (clip_text != NULL) && (clip_length > 0) ) + { +! clip_yank_selection( type, clip_text, clip_length, cbd ); + } + +! PhClipboardPasteFinish( cbdata ); + } + } + + void +! clip_mch_set_selection( VimClipboard *cbd ) + { + int type; + long_u len; +--- 86,112 ---- + } + + /* Try for just normal text */ +! clip_header = PhClipboardPasteType(cbdata, CLIP_TYPE_TEXT); +! if (clip_header != NULL) + { + clip_text = clip_header->data; + clip_length = clip_header->length - 1; + +! if (clip_text != NULL && is_type_set == FALSE) + type = MAUTO; + } + +! if ((clip_text != NULL) && (clip_length > 0)) + { +! clip_yank_selection(type, clip_text, clip_length, cbd); + } + +! PhClipboardPasteFinish(cbdata); + } + } + + void +! clip_mch_set_selection(VimClipboard *cbd) + { + int type; + long_u len; +*************** +*** 114,144 **** + PhClipHeader clip_header[2]; + + /* Prevent recursion from clip_get_selection() */ +! if( cbd->owned == TRUE ) + return; + + cbd->owned = TRUE; +! clip_get_selection( cbd ); + cbd->owned = FALSE; + +! type = clip_convert_selection( &str, &len, cbd ); +! if( type >= 0 ) + { +! text_clip = lalloc( len + 1, TRUE ); /* Normal text */ + +! if( text_clip && vim_clip ) + { +! memset( clip_header, 0, sizeof( clip_header ) ); + +! STRNCPY( clip_header[0].type, CLIP_TYPE_VIM, 8 ); +! clip_header[0].length = sizeof( vim_clip ); + clip_header[0].data = vim_clip; + +! STRNCPY( clip_header[1].type, CLIP_TYPE_TEXT, 8 ); + clip_header[1].length = len + 1; + clip_header[1].data = text_clip; + +! switch( type ) + { + default: /* fallthrough to MLINE */ + case MLINE: *vim_clip = 'L'; break; +--- 114,144 ---- + PhClipHeader clip_header[2]; + + /* Prevent recursion from clip_get_selection() */ +! if (cbd->owned == TRUE) + return; + + cbd->owned = TRUE; +! clip_get_selection(cbd); + cbd->owned = FALSE; + +! type = clip_convert_selection(&str, &len, cbd); +! if (type >= 0) + { +! text_clip = lalloc(len + 1, TRUE); /* Normal text */ + +! if (text_clip && vim_clip) + { +! memset(clip_header, 0, sizeof(clip_header)); + +! STRNCPY(clip_header[0].type, CLIP_TYPE_VIM, 8); +! clip_header[0].length = sizeof(vim_clip); + clip_header[0].data = vim_clip; + +! STRNCPY(clip_header[1].type, CLIP_TYPE_TEXT, 8); + clip_header[1].length = len + 1; + clip_header[1].data = text_clip; + +! switch(type) + { + default: /* fallthrough to MLINE */ + case MLINE: *vim_clip = 'L'; break; +*************** +*** 148,161 **** + #endif + } + +! vim_strncpy( text_clip, str, len ); + + vim_clip[ 1 ] = NUL; + +! PhClipboardCopy( PhInputGroup( NULL ), 2, clip_header); + } +! vim_free( text_clip ); + } +! vim_free( str ); + } + #endif +--- 148,161 ---- + #endif + } + +! vim_strncpy(text_clip, str, len); + + vim_clip[ 1 ] = NUL; + +! PhClipboardCopy(PhInputGroup(NULL), 2, clip_header); + } +! vim_free(text_clip); + } +! vim_free(str); + } + #endif +*** ../vim-7.3.320/src/version.c 2011-09-21 19:10:42.000000000 +0200 +--- src/version.c 2011-09-21 19:47:50.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 321, + /**/ + +-- +Bypasses are devices that allow some people to dash from point A to +point B very fast while other people dash from point B to point A very +fast. People living at point C, being a point directly in between, are +often given to wonder what's so great about point A that so many people +from point B are so keen to get there and what's so great about point B +that so many people from point A are so keen to get there. They often +wish that people would just once and for all work out where the hell +they wanted to be. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.322 b/source/ap/vim/patches/7.3.322 new file mode 100644 index 00000000..d81b9ec6 --- /dev/null +++ b/source/ap/vim/patches/7.3.322 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.322 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.322 +Problem: #ifdef for PDP_RETVAL doesn't work, INT_PTR can be a typedef. +Solution: Check the MSC version and 64 bit flags. (Sergiu Dotenco) +Files: src/os_mswin.c + + +*** ../vim-7.3.321/src/os_mswin.c 2011-08-10 17:07:56.000000000 +0200 +--- src/os_mswin.c 2011-09-21 20:09:05.000000000 +0200 +*************** +*** 1781,1787 **** + } + + /* Attempt to make this work for old and new compilers */ +! #if !defined(_MSC_VER) || (_MSC_VER < 1300) || !defined(INT_PTR) + # define PDP_RETVAL BOOL + #else + # define PDP_RETVAL INT_PTR +--- 1781,1787 ---- + } + + /* Attempt to make this work for old and new compilers */ +! #if !defined(_WIN64) && (!defined(_MSC_VER) || _MSC_VER < 1300) + # define PDP_RETVAL BOOL + #else + # define PDP_RETVAL INT_PTR +*** ../vim-7.3.321/src/version.c 2011-09-21 19:50:00.000000000 +0200 +--- src/version.c 2011-09-21 20:08:29.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 322, + /**/ + +-- +Don't Panic! + -- The Hitchhiker's Guide to the Galaxy + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.323 b/source/ap/vim/patches/7.3.323 new file mode 100644 index 00000000..10f6d193 --- /dev/null +++ b/source/ap/vim/patches/7.3.323 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.323 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.323 +Problem: The default 'errorformat' does not ignore some "included from" + lines. +Solution: Add a few more patterns. (Ben Boeckel) +Files: src/option.h + + +*** ../vim-7.3.322/src/option.h 2011-07-27 13:59:12.000000000 +0200 +--- src/option.h 2011-09-30 14:32:13.000000000 +0200 +*************** +*** 33,39 **** + # ifdef EBCDIC + #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" + # else +! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" + # endif + # endif + # endif +--- 33,39 ---- + # ifdef EBCDIC + #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" + # else +! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c\\,,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-G%*[ ]from %f:%l:%c,%-G%*[ ]from %f:%l:,%-G%*[ ]from %f:%l\\,,%-G%*[ ]from %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" + # endif + # endif + # endif +*** ../vim-7.3.322/src/version.c 2011-09-21 20:09:38.000000000 +0200 +--- src/version.c 2011-09-30 14:38:59.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 323, + /**/ + +-- +Due knot trussed yore spell chequer two fined awl miss steaks. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.324 b/source/ap/vim/patches/7.3.324 new file mode 100644 index 00000000..59b5c6c0 --- /dev/null +++ b/source/ap/vim/patches/7.3.324 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.324 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.324 (after 7.3.237) +Problem: Completion for ":compiler" shows color scheme names. +Solution: Fix the directory name. (James Vega) +Files: src/ex_getln.c + + +*** ../vim-7.3.323/src/ex_getln.c 2011-08-17 16:25:43.000000000 +0200 +--- src/ex_getln.c 2011-09-30 16:22:14.000000000 +0200 +*************** +*** 4546,4552 **** + } + if (xp->xp_context == EXPAND_COMPILER) + { +! char *directories[] = {"colors", NULL}; + return ExpandRTDir(pat, num_file, file, directories); + } + if (xp->xp_context == EXPAND_OWNSYNTAX) +--- 4546,4552 ---- + } + if (xp->xp_context == EXPAND_COMPILER) + { +! char *directories[] = {"compiler", NULL}; + return ExpandRTDir(pat, num_file, file, directories); + } + if (xp->xp_context == EXPAND_OWNSYNTAX) +*** ../vim-7.3.323/src/version.c 2011-09-30 14:44:49.000000000 +0200 +--- src/version.c 2011-09-30 16:23:15.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 324, + /**/ + + +-- +hundred-and-one symptoms of being an internet addict: +31. You code your homework in HTML and give your instructor the URL. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.325 b/source/ap/vim/patches/7.3.325 new file mode 100644 index 00000000..80ebc6de --- /dev/null +++ b/source/ap/vim/patches/7.3.325 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.325 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.325 +Problem: A duplicated function argument gives an internal error. +Solution: Give a proper error message. (based on patch by Tyru) +Files: src/eval.c + + +*** ../vim-7.3.324/src/eval.c 2011-09-14 16:52:02.000000000 +0200 +--- src/eval.c 2011-09-30 16:32:20.000000000 +0200 +*************** +*** 20461,20466 **** +--- 20461,20467 ---- + exarg_T *eap; + { + char_u *theline; ++ int i; + int j; + int c; + int saved_did_emsg; +*************** +*** 20707,20712 **** +--- 20708,20722 ---- + arg = vim_strsave(arg); + if (arg == NULL) + goto erret; ++ ++ /* Check for duplicate argument name. */ ++ for (i = 0; i < newargs.ga_len; ++i) ++ if (STRCMP(((char_u **)(newargs.ga_data))[i], arg) == 0) ++ { ++ EMSG2(_("E853: Duplicate argument name: %s"), arg); ++ goto erret; ++ } ++ + ((char_u **)(newargs.ga_data))[newargs.ga_len] = arg; + *p = c; + newargs.ga_len++; +*** ../vim-7.3.324/src/version.c 2011-09-30 16:23:21.000000000 +0200 +--- src/version.c 2011-09-30 16:39:16.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 325, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +32. You don't know what sex three of your closest friends are, because they + have neutral nicknames and you never bothered to ask. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.326 b/source/ap/vim/patches/7.3.326 new file mode 100644 index 00000000..4ad52e96 --- /dev/null +++ b/source/ap/vim/patches/7.3.326 @@ -0,0 +1,285 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.326 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.326 +Problem: MingW 4.6 no longer supports the -mno-cygwin option. +Solution: Split the Cygwin and MingW makefiles. (Matsushita Shougo) +Files: src/GvimExt/Make_cyg.mak, src/GvimExt/Make_ming.mak, + src/Make_cyg.mak, src/Make_ming.mak, src/xxd/Make_ming.mak, + Filelist + + +*** ../vim-7.3.325/src/GvimExt/Make_cyg.mak 2011-09-30 16:55:18.000000000 +0200 +--- src/GvimExt/Make_cyg.mak 2011-09-30 16:45:49.000000000 +0200 +*************** +*** 0 **** +--- 1,77 ---- ++ # Project: gvimext ++ # Generates gvimext.dll with gcc. ++ # To be used with Cygwin. ++ # ++ # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000 ++ # Now it is allocated dymanically by the linker by evaluating all DLLs ++ # already loaded in memory. The binary image contains as well information ++ # for automatic pseudo-rebasing, if needed by the system. ALV 2004-02-29 ++ ++ # If cross-compiling set this to yes, else set it to no ++ CROSS = no ++ #CROSS = yes ++ # For the old MinGW 2.95 (the one you get e.g. with debian woody) ++ # set the following variable to yes and check if the executables are ++ # really named that way. ++ # If you have a newer MinGW or you are using cygwin set it to no and ++ # check also the executables ++ MINGWOLD = no ++ ++ # Link against the shared versions of libgcc/libstdc++ by default. Set ++ # STATIC_STDCPLUS to "yes" to link against static versions instead. ++ STATIC_STDCPLUS=no ++ #STATIC_STDCPLUS=yes ++ ++ # Note: -static-libstdc++ is not available until gcc 4.5.x. ++ LDFLAGS += -shared ++ ifeq (yes, $(STATIC_STDCPLUS)) ++ LDFLAGS += -static-libgcc -static-libstdc++ ++ endif ++ ++ ifeq ($(CROSS),yes) ++ DEL = rm ++ ifeq ($(MINGWOLD),yes) ++ CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks ++ else ++ CXXFLAGS := -O2 -mno-cygwin ++ endif ++ else ++ CXXFLAGS := -O2 -mno-cygwin ++ ifneq (sh.exe, $(SHELL)) ++ DEL = rm ++ else ++ DEL = del ++ endif ++ endif ++ CXX := $(CROSS_COMPILE)g++ ++ WINDRES := $(CROSS_COMPILE)windres ++ WINDRES_CXX = $(CXX) ++ WINDRES_FLAGS = --preprocessor="$(WINDRES_CXX) -E -xc" -DRC_INVOKED ++ LIBS := -luuid ++ RES := gvimext.res ++ DEFFILE = gvimext_ming.def ++ OBJ := gvimext.o ++ ++ DLL := gvimext.dll ++ ++ .PHONY: all all-before all-after clean clean-custom ++ ++ all: all-before $(DLL) all-after ++ ++ $(DLL): $(OBJ) $(RES) $(DEFFILE) ++ $(CXX) $(LDFLAGS) $(CXXFLAGS) -s -o $@ \ ++ -Wl,--enable-auto-image-base \ ++ -Wl,--enable-auto-import \ ++ -Wl,--whole-archive \ ++ $^ \ ++ -Wl,--no-whole-archive \ ++ $(LIBS) ++ ++ gvimext.o: gvimext.cpp ++ $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@ ++ ++ $(RES): gvimext_ming.rc ++ $(WINDRES) $(WINDRES_FLAGS) --input-format=rc --output-format=coff -DMING $? -o $@ ++ ++ clean: clean-custom ++ -$(DEL) $(OBJ) $(RES) $(DLL) +*** ../vim-7.3.325/src/GvimExt/Make_ming.mak 2010-12-30 14:50:46.000000000 +0100 +--- src/GvimExt/Make_ming.mak 2011-09-30 16:47:09.000000000 +0200 +*************** +*** 1,6 **** + # Project: gvimext + # Generates gvimext.dll with gcc. +! # Can be used for Cygwin and MingW (MingW ignores -mno-cygwin) + # + # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000 + # Now it is allocated dymanically by the linker by evaluating all DLLs +--- 1,6 ---- + # Project: gvimext + # Generates gvimext.dll with gcc. +! # To be used with MingW. + # + # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000 + # Now it is allocated dymanically by the linker by evaluating all DLLs +*************** +*** 31,42 **** + ifeq ($(CROSS),yes) + DEL = rm + ifeq ($(MINGWOLD),yes) +! CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks + else +! CXXFLAGS := -O2 -mno-cygwin + endif + else +! CXXFLAGS := -O2 -mno-cygwin + ifneq (sh.exe, $(SHELL)) + DEL = rm + else +--- 31,42 ---- + ifeq ($(CROSS),yes) + DEL = rm + ifeq ($(MINGWOLD),yes) +! CXXFLAGS := -O2 -fvtable-thunks + else +! CXXFLAGS := -O2 + endif + else +! CXXFLAGS := -O2 + ifneq (sh.exe, $(SHELL)) + DEL = rm + else +*************** +*** 75,78 **** + + clean: clean-custom + -$(DEL) $(OBJ) $(RES) $(DLL) +- +--- 75,77 ---- +*** ../vim-7.3.325/src/Make_cyg.mak 2010-11-03 21:59:23.000000000 +0100 +--- src/Make_cyg.mak 2011-09-30 16:48:11.000000000 +0200 +*************** +*** 536,542 **** + $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL) + + GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h +! $(MAKE) -C GvimExt -f Make_ming.mak CROSS_COMPILE=$(CROSS_COMPILE) + + vimrun.exe: vimrun.c + $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS) +--- 536,542 ---- + $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL) + + GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h +! $(MAKE) -C GvimExt -f Make_cyg.mak CROSS_COMPILE=$(CROSS_COMPILE) + + vimrun.exe: vimrun.c + $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS) +*************** +*** 565,571 **** + endif + -$(DEL) pathdef.c + $(MAKE) -C xxd -f Make_cyg.mak clean +! $(MAKE) -C GvimExt -f Make_ming.mak clean + + distclean: clean + -$(DEL) obj$(DIRSLASH)*.o +--- 565,571 ---- + endif + -$(DEL) pathdef.c + $(MAKE) -C xxd -f Make_cyg.mak clean +! $(MAKE) -C GvimExt -f Make_cyg.mak clean + + distclean: clean + -$(DEL) obj$(DIRSLASH)*.o +*** ../vim-7.3.325/src/Make_ming.mak 2011-09-14 10:49:44.000000000 +0200 +--- src/Make_ming.mak 2011-09-30 16:48:11.000000000 +0200 +*************** +*** 641,647 **** + upx vim.exe + + xxd/xxd.exe: xxd/xxd.c +! $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) + + GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h + $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) +--- 641,647 ---- + upx vim.exe + + xxd/xxd.exe: xxd/xxd.c +! $(MAKE) -C xxd -f Make_ming.mak CC=$(CC) + + GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h + $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) +*************** +*** 659,665 **** + -$(DEL) mzscheme_base.c + endif + $(MAKE) -C GvimExt -f Make_ming.mak clean +! $(MAKE) -C xxd -f Make_cyg.mak clean + + ########################################################################### + INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \ +--- 659,665 ---- + -$(DEL) mzscheme_base.c + endif + $(MAKE) -C GvimExt -f Make_ming.mak clean +! $(MAKE) -C xxd -f Make_ming.mak clean + + ########################################################################### + INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \ +*** ../vim-7.3.325/src/xxd/Make_ming.mak 2011-09-30 16:55:18.000000000 +0200 +--- src/xxd/Make_ming.mak 2011-09-30 16:48:34.000000000 +0200 +*************** +*** 0 **** +--- 1,28 ---- ++ # The most simplistic Makefile, for MinGW gcc on MS-DOS ++ ++ ifndef USEDLL ++ USEDLL = no ++ endif ++ ++ ifeq (yes, $(USEDLL)) ++ DEFINES = ++ LIBS = -lc ++ else ++ DEFINES = ++ LIBS = ++ endif ++ ++ CC = gcc ++ CFLAGS = -O2 -Wall -DWIN32 $(DEFINES) ++ ++ ifneq (sh.exe, $(SHELL)) ++ DEL = rm ++ else ++ DEL = del ++ endif ++ ++ xxd.exe: xxd.c ++ $(CC) $(CFLAGS) -s -o xxd.exe xxd.c $(LIBS) ++ ++ clean: ++ -$(DEL) xxd.exe +*** ../vim-7.3.325/Filelist 2011-06-12 20:36:00.000000000 +0200 +--- Filelist 2011-09-30 16:49:29.000000000 +0200 +*************** +*** 313,318 **** +--- 313,319 ---- + src/xxd/Make_bc5.mak \ + src/xxd/Make_cyg.mak \ + src/xxd/Make_djg.mak \ ++ src/xxd/Make_ming.mak \ + src/xxd/Make_mvc.mak \ + nsis/gvim.nsi \ + nsis/README.txt \ +*** ../vim-7.3.325/src/version.c 2011-09-30 16:39:41.000000000 +0200 +--- src/version.c 2011-09-30 16:49:57.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 326, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +33. You name your children Eudora, Mozilla and Dotcom. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.327 b/source/ap/vim/patches/7.3.327 new file mode 100644 index 00000000..1de5a996 --- /dev/null +++ b/source/ap/vim/patches/7.3.327 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.327 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.327 +Problem: When jumping to a help tag a closed fold doesn't open. +Solution: Save and restore KeyTyped. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + + +*** ../vim-7.3.326/src/ex_cmds.c 2011-09-14 14:43:21.000000000 +0200 +--- src/ex_cmds.c 2011-09-30 17:24:03.000000000 +0200 +*************** +*** 5508,5513 **** +--- 5508,5516 ---- + int len; + char_u *lang; + #endif ++ #ifdef FEAT_FOLDING ++ int old_KeyTyped = KeyTyped; ++ #endif + + if (eap != NULL) + { +*************** +*** 5671,5676 **** +--- 5674,5685 ---- + if (!p_im) + restart_edit = 0; /* don't want insert mode in help file */ + ++ #ifdef FEAT_FOLDING ++ /* Restore KeyTyped, setting 'filetype=help' may reset it. ++ * It is needed for do_tag top open folds under the cursor. */ ++ KeyTyped = old_KeyTyped; ++ #endif ++ + if (tag != NULL) + do_tag(tag, DT_HELP, 1, FALSE, TRUE); + +*** ../vim-7.3.326/src/version.c 2011-09-30 16:56:00.000000000 +0200 +--- src/version.c 2011-09-30 17:24:17.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 327, + /**/ + +-- +Q. What happens to programmers when they die? +A: MS-Windows programmers are reinstalled. C++ programmers become undefined, + anyone who refers to them will die as well. Java programmers reincarnate + after being garbage collected. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.328 b/source/ap/vim/patches/7.3.328 new file mode 100644 index 00000000..24dad702 --- /dev/null +++ b/source/ap/vim/patches/7.3.328 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.328 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.328 +Problem: When command line wraps the cursor may be displayed wrong when + there are multi-byte characters. +Solution: Position the cursor before drawing the text. (Yasuhiro Matsumoto) +Files: src/ex_getln.c + + +*** ../vim-7.3.327/src/ex_getln.c 2011-09-30 16:23:21.000000000 +0200 +--- src/ex_getln.c 2011-09-30 17:39:27.000000000 +0200 +*************** +*** 2870,2875 **** +--- 2870,2876 ---- + { + msg_no_more = TRUE; + i = cmdline_row; ++ cursorcmd(); + draw_cmdline(ccline.cmdpos, ccline.cmdlen - ccline.cmdpos); + /* Avoid clearing the rest of the line too often. */ + if (cmdline_row != i || ccline.overstrike) +*** ../vim-7.3.327/src/version.c 2011-09-30 17:30:27.000000000 +0200 +--- src/version.c 2011-09-30 17:45:28.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 328, + /**/ + +-- +To define recursion, we must first define recursion. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.329 b/source/ap/vim/patches/7.3.329 new file mode 100644 index 00000000..fe48eb52 --- /dev/null +++ b/source/ap/vim/patches/7.3.329 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.329 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.329 +Problem: When skipping over code from ":for" to ":endfor" get an error for + calling a dict function. (Yasuhiro Matsumoto) +Solution: Ignore errors when skipping over :call command. +Files: src/ex_docmd.c, src/eval.c + + +*** ../vim-7.3.328/src/ex_docmd.c 2011-09-21 19:10:42.000000000 +0200 +--- src/ex_docmd.c 2011-09-30 17:59:51.000000000 +0200 +*************** +*** 371,381 **** + # define ex_endif ex_ni + # define ex_else ex_ni + # define ex_while ex_ni +- # define ex_for ex_ni + # define ex_continue ex_ni + # define ex_break ex_ni + # define ex_endwhile ex_ni +- # define ex_endfor ex_ni + # define ex_throw ex_ni + # define ex_try ex_ni + # define ex_catch ex_ni +--- 371,379 ---- +*** ../vim-7.3.328/src/eval.c 2011-09-30 16:39:41.000000000 +0200 +--- src/eval.c 2011-09-30 18:29:58.000000000 +0200 +*************** +*** 3377,3383 **** + /* trans_function_name() doesn't work well when skipping, use eval0() + * instead to skip to any following command, e.g. for: + * :if 0 | call dict.foo().bar() | endif */ +! eval0(eap->arg, &rettv, &eap->nextcmd, FALSE); + return; + } + +--- 3377,3386 ---- + /* trans_function_name() doesn't work well when skipping, use eval0() + * instead to skip to any following command, e.g. for: + * :if 0 | call dict.foo().bar() | endif */ +! ++emsg_skip; +! if (eval0(eap->arg, &rettv, &eap->nextcmd, FALSE) != FAIL) +! clear_tv(&rettv); +! --emsg_skip; + return; + } + +*** ../vim-7.3.328/src/version.c 2011-09-30 17:46:14.000000000 +0200 +--- src/version.c 2011-09-30 18:32:27.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 329, + /**/ + +-- +Have you heard about the new Beowulf cluster? It's so fast, it executes +an infinite loop in 6 seconds. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.330 b/source/ap/vim/patches/7.3.330 new file mode 100644 index 00000000..ab828b94 --- /dev/null +++ b/source/ap/vim/patches/7.3.330 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.330 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.330 +Problem: When longjmp() is invoked if the X server gives an error the state + is not properly restored. +Solution: Reset vgetc_busy. (Yukihiro Nakadaira) +Files: src/main.c + + +*** ../vim-7.3.329/src/main.c 2011-05-10 16:41:13.000000000 +0200 +--- src/main.c 2011-10-04 16:41:03.000000000 +0200 +*************** +*** 1009,1014 **** +--- 1009,1015 ---- + skip_redraw = FALSE; + RedrawingDisabled = 0; + no_wait_return = 0; ++ vgetc_busy = 0; + # ifdef FEAT_EVAL + emsg_skip = 0; + # endif +*** ../vim-7.3.329/src/version.c 2011-09-30 18:35:49.000000000 +0200 +--- src/version.c 2011-10-04 16:42:23.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 330, + /**/ + +-- +Just remember...if the world didn't suck, we'd all fall off. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.331 b/source/ap/vim/patches/7.3.331 new file mode 100644 index 00000000..ba63c172 --- /dev/null +++ b/source/ap/vim/patches/7.3.331 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.331 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.331 +Problem: "vit" selects wrong text when a tag name starts with the same text + as an outer tag name. (Ben Fritz) +Solution: Add "\>" to the pattern to check for word boundary. +Files: src/search.c + + +*** ../vim-7.3.330/src/search.c 2011-07-15 13:21:24.000000000 +0200 +--- src/search.c 2011-10-04 16:54:08.000000000 +0200 +*************** +*** 3927,3933 **** + curwin->w_cursor = old_pos; + goto theend; + } +! sprintf((char *)spat, "<%.*s\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p); + sprintf((char *)epat, "</%.*s>\\c", len, p); + + r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"", +--- 3927,3933 ---- + curwin->w_cursor = old_pos; + goto theend; + } +! sprintf((char *)spat, "<%.*s\\>\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p); + sprintf((char *)epat, "</%.*s>\\c", len, p); + + r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"", +*** ../vim-7.3.330/src/version.c 2011-10-04 16:43:49.000000000 +0200 +--- src/version.c 2011-10-04 16:59:47.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 331, + /**/ + +-- +The 50-50-90 rule: Anytime you have a 50-50 chance of getting +something right, there's a 90% probability you'll get it wrong. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.332 b/source/ap/vim/patches/7.3.332 new file mode 100644 index 00000000..ff0ab7c6 --- /dev/null +++ b/source/ap/vim/patches/7.3.332 @@ -0,0 +1,206 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.332 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.332 (after 7.3.202) +Problem: Indent after "public:" is not increased in C++ code. (Lech Lorens) +Solution: Check for namespace after the regular checks. (partly by Martin + Gieseking) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.331/src/misc1.c 2011-09-07 19:58:04.000000000 +0200 +--- src/misc1.c 2011-10-04 17:59:52.000000000 +0200 +*************** +*** 6389,6394 **** +--- 6389,6395 ---- + int lookfor_cpp_namespace = FALSE; + int cont_amount = 0; /* amount for continuation line */ + int original_line_islabel; ++ int added_to_amount = 0; + + for (options = curbuf->b_p_cino; *options; ) + { +*************** +*** 7216,7267 **** + else + amount += ind_continuation; + } +! else if (lookfor_cpp_namespace) + { +! if (curwin->w_cursor.lnum == ourscope) +! continue; + +! if (curwin->w_cursor.lnum == 0 +! || curwin->w_cursor.lnum + < ourscope - FIND_NAMESPACE_LIM) +! break; + +! l = ml_get_curline(); + +! /* +! * If we're in a comment now, skip to the start of the +! * comment. +! */ +! trypos = find_start_comment(ind_maxcomment); +! if (trypos != NULL) +! { +! curwin->w_cursor.lnum = trypos->lnum + 1; +! curwin->w_cursor.col = 0; +! continue; +! } +! +! /* +! * Skip preprocessor directives and blank lines. +! */ +! if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum)) +! continue; + +! if (cin_is_cpp_namespace(l)) +! { +! amount += ind_cpp_namespace; +! break; +! } + +! if (cin_nocode(l)) +! continue; + +! } +! else if (lookfor != LOOKFOR_TERM +! && lookfor != LOOKFOR_CPP_BASECLASS) +! { +! amount = scope_amount; +! if (theline[0] == '{') +! amount += ind_open_extra; + } + break; + } +--- 7217,7275 ---- + else + amount += ind_continuation; + } +! else + { +! if (lookfor != LOOKFOR_TERM +! && lookfor != LOOKFOR_CPP_BASECLASS) +! { +! amount = scope_amount; +! if (theline[0] == '{') +! { +! amount += ind_open_extra; +! added_to_amount = ind_open_extra; +! } +! } + +! if (lookfor_cpp_namespace) +! { +! /* +! * Looking for C++ namespace, need to look further +! * back. +! */ +! if (curwin->w_cursor.lnum == ourscope) +! continue; +! +! if (curwin->w_cursor.lnum == 0 +! || curwin->w_cursor.lnum + < ourscope - FIND_NAMESPACE_LIM) +! break; + +! l = ml_get_curline(); + +! /* If we're in a comment now, skip to the start of +! * the comment. */ +! trypos = find_start_comment(ind_maxcomment); +! if (trypos != NULL) +! { +! curwin->w_cursor.lnum = trypos->lnum + 1; +! curwin->w_cursor.col = 0; +! continue; +! } + +! /* Skip preprocessor directives and blank lines. */ +! if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum)) +! continue; + +! /* Finally the actual check for "namespace". */ +! if (cin_is_cpp_namespace(l)) +! { +! amount += ind_cpp_namespace - added_to_amount; +! break; +! } + +! if (cin_nocode(l)) +! continue; +! } + } + break; + } +*** ../vim-7.3.331/src/testdir/test3.in 2011-07-20 15:09:38.000000000 +0200 +--- src/testdir/test3.in 2011-10-04 17:45:20.000000000 +0200 +*************** +*** 1309,1314 **** +--- 1309,1328 ---- + }; + + STARTTEST ++ :set cino=(0,gs,hs ++ 2kdd]]=][ ++ ENDTEST ++ ++ class Foo : public Bar ++ { ++ public: ++ virtual void method1(void) = 0; ++ virtual void method2(int arg1, ++ int arg2, ++ int arg3) = 0; ++ }; ++ ++ STARTTEST + :set cino=+20 + 2kdd]]=][ + ENDTEST +*** ../vim-7.3.331/src/testdir/test3.ok 2011-07-20 15:09:38.000000000 +0200 +--- src/testdir/test3.ok 2011-10-04 17:47:25.000000000 +0200 +*************** +*** 1190,1195 **** +--- 1190,1205 ---- + }; + + ++ class Foo : public Bar ++ { ++ public: ++ virtual void method1(void) = 0; ++ virtual void method2(int arg1, ++ int arg2, ++ int arg3) = 0; ++ }; ++ ++ + void + foo() + { +*** ../vim-7.3.331/src/version.c 2011-10-04 17:00:13.000000000 +0200 +--- src/version.c 2011-10-04 18:02:17.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 332, + /**/ + +-- +Latest survey shows that 3 out of 4 people make up 75% of the +world's population. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.333 b/source/ap/vim/patches/7.3.333 new file mode 100644 index 00000000..974b0cda --- /dev/null +++ b/source/ap/vim/patches/7.3.333 @@ -0,0 +1,245 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.333 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.333 +Problem: Using "." to repeat a Visual delete counts the size in bytes, not + characters. (Connor Lane Smith) +Solution: Store the virtual column numbers instead of byte positions. +Files: src/normal.c + + +*** ../vim-7.3.332/src/normal.c 2011-07-15 17:51:30.000000000 +0200 +--- src/normal.c 2011-10-04 19:47:14.000000000 +0200 +*************** +*** 20,26 **** + */ + static int resel_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ + static linenr_T resel_VIsual_line_count; /* number of lines */ +! static colnr_T resel_VIsual_col; /* nr of cols or end col */ + + static int restart_VIsual_select = 0; + #endif +--- 20,26 ---- + */ + static int resel_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ + static linenr_T resel_VIsual_line_count; /* number of lines */ +! static colnr_T resel_VIsual_vcol; /* nr of cols or end col */ + + static int restart_VIsual_select = 0; + #endif +*************** +*** 1436,1442 **** + /* The visual area is remembered for redo */ + static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ + static linenr_T redo_VIsual_line_count; /* number of lines */ +! static colnr_T redo_VIsual_col; /* number of cols or end column */ + static long redo_VIsual_count; /* count for Visual operator */ + # ifdef FEAT_VIRTUALEDIT + int include_line_break = FALSE; +--- 1436,1442 ---- + /* The visual area is remembered for redo */ + static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ + static linenr_T redo_VIsual_line_count; /* number of lines */ +! static colnr_T redo_VIsual_vcol; /* number of cols or end column */ + static long redo_VIsual_count; /* count for Visual operator */ + # ifdef FEAT_VIRTUALEDIT + int include_line_break = FALSE; +*************** +*** 1549,1570 **** + #ifdef FEAT_VISUAL + if (redo_VIsual_busy) + { + oap->start = curwin->w_cursor; + curwin->w_cursor.lnum += redo_VIsual_line_count - 1; + if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count) + curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count; + VIsual_mode = redo_VIsual_mode; +! if (VIsual_mode == 'v') + { +! if (redo_VIsual_line_count <= 1) +! curwin->w_cursor.col += redo_VIsual_col - 1; + else +! curwin->w_cursor.col = redo_VIsual_col; +! } +! if (redo_VIsual_col == MAXCOL) +! { +! curwin->w_curswant = MAXCOL; +! coladvance((colnr_T)MAXCOL); + } + cap->count0 = redo_VIsual_count; + if (redo_VIsual_count != 0) +--- 1549,1579 ---- + #ifdef FEAT_VISUAL + if (redo_VIsual_busy) + { ++ /* Redo of an operation on a Visual area. Use the same size from ++ * redo_VIsual_line_count and redo_VIsual_vcol. */ + oap->start = curwin->w_cursor; + curwin->w_cursor.lnum += redo_VIsual_line_count - 1; + if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count) + curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count; + VIsual_mode = redo_VIsual_mode; +! if (redo_VIsual_vcol == MAXCOL || VIsual_mode == 'v') + { +! if (VIsual_mode == 'v') +! { +! if (redo_VIsual_line_count <= 1) +! { +! validate_virtcol(); +! curwin->w_curswant = +! curwin->w_virtcol + redo_VIsual_vcol - 1; +! } +! else +! curwin->w_curswant = redo_VIsual_vcol; +! } + else +! { +! curwin->w_curswant = MAXCOL; +! } +! coladvance(curwin->w_curswant); + } + cap->count0 = redo_VIsual_count; + if (redo_VIsual_count != 0) +*************** +*** 1710,1716 **** + } + } + else if (redo_VIsual_busy) +! oap->end_vcol = oap->start_vcol + redo_VIsual_col - 1; + /* + * Correct oap->end.col and oap->start.col to be the + * upper-left and lower-right corner of the block area. +--- 1719,1725 ---- + } + } + else if (redo_VIsual_busy) +! oap->end_vcol = oap->start_vcol + redo_VIsual_vcol - 1; + /* + * Correct oap->end.col and oap->start.col to be the + * upper-left and lower-right corner of the block area. +*************** +*** 1735,1747 **** + */ + resel_VIsual_mode = VIsual_mode; + if (curwin->w_curswant == MAXCOL) +! resel_VIsual_col = MAXCOL; +! else if (VIsual_mode == Ctrl_V) +! resel_VIsual_col = oap->end_vcol - oap->start_vcol + 1; +! else if (oap->line_count > 1) +! resel_VIsual_col = oap->end.col; + else +! resel_VIsual_col = oap->end.col - oap->start.col + 1; + resel_VIsual_line_count = oap->line_count; + } + +--- 1744,1765 ---- + */ + resel_VIsual_mode = VIsual_mode; + if (curwin->w_curswant == MAXCOL) +! resel_VIsual_vcol = MAXCOL; + else +! { +! if (VIsual_mode != Ctrl_V) +! getvvcol(curwin, &(oap->end), +! NULL, NULL, &oap->end_vcol); +! if (VIsual_mode == Ctrl_V || oap->line_count <= 1) +! { +! if (VIsual_mode != Ctrl_V) +! getvvcol(curwin, &(oap->start), +! &oap->start_vcol, NULL, NULL); +! resel_VIsual_vcol = oap->end_vcol - oap->start_vcol + 1; +! } +! else +! resel_VIsual_vcol = oap->end_vcol; +! } + resel_VIsual_line_count = oap->line_count; + } + +*************** +*** 1769,1775 **** + if (!redo_VIsual_busy) + { + redo_VIsual_mode = resel_VIsual_mode; +! redo_VIsual_col = resel_VIsual_col; + redo_VIsual_line_count = resel_VIsual_line_count; + redo_VIsual_count = cap->count0; + } +--- 1787,1793 ---- + if (!redo_VIsual_busy) + { + redo_VIsual_mode = resel_VIsual_mode; +! redo_VIsual_vcol = resel_VIsual_vcol; + redo_VIsual_line_count = resel_VIsual_line_count; + redo_VIsual_count = cap->count0; + } +*************** +*** 7631,7642 **** + if (VIsual_mode == 'v') + { + if (resel_VIsual_line_count <= 1) +! curwin->w_cursor.col += resel_VIsual_col * cap->count0 - 1; + else +! curwin->w_cursor.col = resel_VIsual_col; +! check_cursor_col(); + } +! if (resel_VIsual_col == MAXCOL) + { + curwin->w_curswant = MAXCOL; + coladvance((colnr_T)MAXCOL); +--- 7649,7664 ---- + if (VIsual_mode == 'v') + { + if (resel_VIsual_line_count <= 1) +! { +! validate_virtcol(); +! curwin->w_curswant = curwin->w_virtcol +! + resel_VIsual_vcol * cap->count0 - 1; +! } + else +! curwin->w_curswant = resel_VIsual_vcol; +! coladvance(curwin->w_curswant); + } +! if (resel_VIsual_vcol == MAXCOL) + { + curwin->w_curswant = MAXCOL; + coladvance((colnr_T)MAXCOL); +*************** +*** 7645,7651 **** + { + validate_virtcol(); + curwin->w_curswant = curwin->w_virtcol +! + resel_VIsual_col * cap->count0 - 1; + coladvance(curwin->w_curswant); + } + else +--- 7667,7673 ---- + { + validate_virtcol(); + curwin->w_curswant = curwin->w_virtcol +! + resel_VIsual_vcol * cap->count0 - 1; + coladvance(curwin->w_curswant); + } + else +*** ../vim-7.3.332/src/version.c 2011-10-04 18:03:43.000000000 +0200 +--- src/version.c 2011-10-04 21:05:44.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 333, + /**/ + +-- +It was recently discovered that research causes cancer in rats. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.334 b/source/ap/vim/patches/7.3.334 new file mode 100644 index 00000000..85d5b16d --- /dev/null +++ b/source/ap/vim/patches/7.3.334 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.334 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.334 +Problem: Latest MingW about XSUBPP referencing itself. (Gongqian Li) +Solution: Rename the first use to XSUBPPTRY. +Files: src/Make_ming.mak + + +*** ../vim-7.3.333/src/Make_ming.mak 2011-09-30 16:56:00.000000000 +0200 +--- src/Make_ming.mak 2011-10-09 14:23:06.000000000 +0200 +*************** +*** 108,117 **** + # on NT, it's here: + PERLLIB=$(PERL)/lib + PERLLIBS=$(PERLLIB)/Core +! XSUBPP=$(PERLLIB)/ExtUtils/xsubpp +! XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPP)'") + ifeq "$(XSUBPP_EXISTS)" "" +! XSUBPP=perl $(XSUBPP) + else + XSUBPP=xsubpp + endif +--- 108,117 ---- + # on NT, it's here: + PERLLIB=$(PERL)/lib + PERLLIBS=$(PERLLIB)/Core +! XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp +! XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPPTRY)'") + ifeq "$(XSUBPP_EXISTS)" "" +! XSUBPP=perl $(XSUBPPTRY) + else + XSUBPP=xsubpp + endif +*** ../vim-7.3.333/src/version.c 2011-10-04 21:22:40.000000000 +0200 +--- src/version.c 2011-10-12 14:10:20.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 334, + /**/ + +-- +Q: Should I clean my house or work on Vim? +A: Whatever contains more bugs. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.335 b/source/ap/vim/patches/7.3.335 new file mode 100644 index 00000000..dc1cc560 --- /dev/null +++ b/source/ap/vim/patches/7.3.335 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.335 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.335 +Problem: When 'imdisable' is reset from an autocommand in Insert mode it + doesn't take effect. +Solution: Call im_set_active() in Insert mode. (Taro Muraoka) +Files: src/option.c + + +*** ../vim-7.3.334/src/option.c 2011-09-21 13:40:13.000000000 +0200 +--- src/option.c 2011-10-12 14:09:46.000000000 +0200 +*************** +*** 7806,7811 **** +--- 7806,7815 ---- + /* Only de-activate it here, it will be enabled when changing mode. */ + if (p_imdisable) + im_set_active(FALSE); ++ else if (State & INSERT) ++ /* When the option is set from an autocommand, it may need to take ++ * effect right away. */ ++ im_set_active(curbuf->b_p_iminsert == B_IMODE_IM); + } + #endif + +*** ../vim-7.3.334/src/version.c 2011-10-12 14:11:43.000000000 +0200 +--- src/version.c 2011-10-12 16:56:30.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 335, + /**/ + +-- +Time is money. Especially if you make clocks. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.336 b/source/ap/vim/patches/7.3.336 new file mode 100644 index 00000000..902f578c --- /dev/null +++ b/source/ap/vim/patches/7.3.336 @@ -0,0 +1,1100 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.336 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.336 +Problem: When a tags file specifies an encoding different from 'enc' it + may hang and using a pattern doesn't work. +Solution: Convert the whole line. Continue reading the header after the + SORT tag. Add test83. (Yukihiro Nakadaira) +Files: src/tag.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test83-tags2, src/testdir/test83-tags3, + src/testdir/test83.in, src/testdir/test83.ok + + +*** ../vim-7.3.335/src/tag.c 2011-04-11 21:35:03.000000000 +0200 +--- src/tag.c 2011-10-12 19:51:04.000000000 +0200 +*************** +*** 1277,1282 **** +--- 1277,1283 ---- + { + FILE *fp; + char_u *lbuf; /* line buffer */ ++ int lbuf_size = LSIZE; /* length of lbuf */ + char_u *tag_fname; /* name of tag file */ + tagname_T tn; /* info for get_tagfname() */ + int first_file; /* trying first tag file */ +*************** +*** 1291,1296 **** +--- 1292,1298 ---- + char_u *s; + int i; + #ifdef FEAT_TAG_BINS ++ int tag_file_sorted = NUL; /* !_TAG_FILE_SORTED value */ + struct tag_search_info /* Binary search file offsets */ + { + off_t low_offset; /* offset for first char of first line that +*************** +*** 1360,1372 **** + char_u *saved_pat = NULL; /* copy of pat[] */ + #endif + +- /* Use two sets of variables for the pattern: "orgpat" holds the values +- * for the original pattern and "convpat" converted from 'encoding' to +- * encoding of the tags file. "pats" point to either one of these. */ +- pat_T *pats; + pat_T orgpat; /* holds unconverted pattern info */ + #ifdef FEAT_MBYTE +- pat_T convpat; /* holds converted pattern info */ + vimconv_T vimconv; + #endif + +--- 1362,1369 ---- +*************** +*** 1390,1396 **** + + help_save = curbuf->b_help; + orgpat.pat = pat; +- pats = &orgpat; + #ifdef FEAT_MBYTE + vimconv.vc_type = CONV_NONE; + #endif +--- 1387,1392 ---- +*************** +*** 1398,1404 **** + /* + * Allocate memory for the buffers that are used + */ +! lbuf = alloc(LSIZE); + tag_fname = alloc(MAXPATHL + 1); + #ifdef FEAT_EMACS_TAGS + ebuf = alloc(LSIZE); +--- 1394,1400 ---- + /* + * Allocate memory for the buffers that are used + */ +! lbuf = alloc(lbuf_size); + tag_fname = alloc(MAXPATHL + 1); + #ifdef FEAT_EMACS_TAGS + ebuf = alloc(LSIZE); +*************** +*** 1424,1453 **** + if (help_only) /* want tags from help file */ + curbuf->b_help = TRUE; /* will be restored later */ + +! pats->len = (int)STRLEN(pat); + #ifdef FEAT_MULTI_LANG + if (curbuf->b_help) + { + /* When "@ab" is specified use only the "ab" language, otherwise + * search all languages. */ +! if (pats->len > 3 && pat[pats->len - 3] == '@' +! && ASCII_ISALPHA(pat[pats->len - 2]) +! && ASCII_ISALPHA(pat[pats->len - 1])) + { +! saved_pat = vim_strnsave(pat, pats->len - 3); + if (saved_pat != NULL) + { +! help_lang_find = &pat[pats->len - 2]; +! pats->pat = saved_pat; +! pats->len -= 3; + } + } + } + #endif +! if (p_tl != 0 && pats->len > p_tl) /* adjust for 'taglength' */ +! pats->len = p_tl; + +! prepare_pats(pats, has_re); + + #ifdef FEAT_TAG_BINS + /* This is only to avoid a compiler warning for using search_info +--- 1420,1449 ---- + if (help_only) /* want tags from help file */ + curbuf->b_help = TRUE; /* will be restored later */ + +! orgpat.len = (int)STRLEN(pat); + #ifdef FEAT_MULTI_LANG + if (curbuf->b_help) + { + /* When "@ab" is specified use only the "ab" language, otherwise + * search all languages. */ +! if (orgpat.len > 3 && pat[orgpat.len - 3] == '@' +! && ASCII_ISALPHA(pat[orgpat.len - 2]) +! && ASCII_ISALPHA(pat[orgpat.len - 1])) + { +! saved_pat = vim_strnsave(pat, orgpat.len - 3); + if (saved_pat != NULL) + { +! help_lang_find = &pat[orgpat.len - 2]; +! orgpat.pat = saved_pat; +! orgpat.len -= 3; + } + } + } + #endif +! if (p_tl != 0 && orgpat.len > p_tl) /* adjust for 'taglength' */ +! orgpat.len = p_tl; + +! prepare_pats(&orgpat, has_re); + + #ifdef FEAT_TAG_BINS + /* This is only to avoid a compiler warning for using search_info +*************** +*** 1466,1478 **** + * Only ignore case when TAG_NOIC not used or 'ignorecase' set. + */ + #ifdef FEAT_TAG_BINS +! pats->regmatch.rm_ic = ((p_ic || !noic) +! && (findall || pats->headlen == 0 || !p_tbs)); + for (round = 1; round <= 2; ++round) + { +! linear = (pats->headlen == 0 || !p_tbs || round == 2); + #else +! pats->regmatch.rm_ic = (p_ic || !noic); + #endif + + /* +--- 1462,1474 ---- + * Only ignore case when TAG_NOIC not used or 'ignorecase' set. + */ + #ifdef FEAT_TAG_BINS +! orgpat.regmatch.rm_ic = ((p_ic || !noic) +! && (findall || orgpat.headlen == 0 || !p_tbs)); + for (round = 1; round <= 2; ++round) + { +! linear = (orgpat.headlen == 0 || !p_tbs || round == 2); + #else +! orgpat.regmatch.rm_ic = (p_ic || !noic); + #endif + + /* +*************** +*** 1701,1706 **** +--- 1697,1732 ---- + } + line_read_in: + ++ #ifdef FEAT_MBYTE ++ if (vimconv.vc_type != CONV_NONE) ++ { ++ char_u *conv_line; ++ int len; ++ ++ /* Convert every line. Converting the pattern from 'enc' to ++ * the tags file encoding doesn't work, because characters are ++ * not recognized. */ ++ conv_line = string_convert(&vimconv, lbuf, NULL); ++ if (conv_line != NULL) ++ { ++ /* Copy or swap lbuf and conv_line. */ ++ len = (int)STRLEN(conv_line) + 1; ++ if (len > lbuf_size) ++ { ++ vim_free(lbuf); ++ lbuf = conv_line; ++ lbuf_size = len; ++ } ++ else ++ { ++ STRCPY(lbuf, conv_line); ++ vim_free(conv_line); ++ } ++ } ++ } ++ #endif ++ ++ + #ifdef FEAT_EMACS_TAGS + /* + * Emacs tags line with CTRL-L: New file name on next line. +*************** +*** 1770,1775 **** +--- 1796,1828 ---- + */ + if (state == TS_START) + { ++ if (STRNCMP(lbuf, "!_TAG_", 6) <= 0) ++ { ++ /* ++ * Read header line. ++ */ ++ #ifdef FEAT_TAG_BINS ++ if (STRNCMP(lbuf, "!_TAG_FILE_SORTED\t", 18) == 0) ++ tag_file_sorted = lbuf[18]; ++ #endif ++ #ifdef FEAT_MBYTE ++ if (STRNCMP(lbuf, "!_TAG_FILE_ENCODING\t", 20) == 0) ++ { ++ /* Prepare to convert every line from the specified ++ * encoding to 'encoding'. */ ++ for (p = lbuf + 20; *p > ' ' && *p < 127; ++p) ++ ; ++ *p = NUL; ++ convert_setup(&vimconv, lbuf + 20, p_enc); ++ } ++ #endif ++ ++ /* Read the next line. Unrecognized flags are ignored. */ ++ continue; ++ } ++ ++ /* Headers ends. */ ++ + #ifdef FEAT_TAG_BINS + /* + * When there is no tag head, or ignoring case, need to do a +*************** +*** 1786,1809 **** + if (linear) + # endif + state = TS_LINEAR; +! else if (STRNCMP(lbuf, "!_TAG_", 6) > 0) + state = TS_BINARY; +! else if (STRNCMP(lbuf, "!_TAG_FILE_SORTED\t", 18) == 0) +! { +! /* Check sorted flag */ +! if (lbuf[18] == '1') + state = TS_BINARY; +! else if (lbuf[18] == '2') +! { +! state = TS_BINARY; +! sortic = TRUE; +! pats->regmatch.rm_ic = (p_ic || !noic); +! } +! else +! state = TS_LINEAR; + } + +! if (state == TS_BINARY && pats->regmatch.rm_ic && !sortic) + { + /* binary search won't work for ignoring case, use linear + * search. */ +--- 1839,1858 ---- + if (linear) + # endif + state = TS_LINEAR; +! else if (tag_file_sorted == NUL) + state = TS_BINARY; +! else if (tag_file_sorted == '1') + state = TS_BINARY; +! else if (tag_file_sorted == '2') +! { +! state = TS_BINARY; +! sortic = TRUE; +! orgpat.regmatch.rm_ic = (p_ic || !noic); + } ++ else ++ state = TS_LINEAR; + +! if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic) + { + /* binary search won't work for ignoring case, use linear + * search. */ +*************** +*** 1843,1882 **** + #endif + } + +- #ifdef FEAT_MBYTE +- if (lbuf[0] == '!' && pats == &orgpat +- && STRNCMP(lbuf, "!_TAG_FILE_ENCODING\t", 20) == 0) +- { +- /* Convert the search pattern from 'encoding' to the +- * specified encoding. */ +- for (p = lbuf + 20; *p > ' ' && *p < 127; ++p) +- ; +- *p = NUL; +- convert_setup(&vimconv, p_enc, lbuf + 20); +- if (vimconv.vc_type != CONV_NONE) +- { +- convpat.pat = string_convert(&vimconv, pats->pat, NULL); +- if (convpat.pat != NULL) +- { +- pats = &convpat; +- pats->len = (int)STRLEN(pats->pat); +- prepare_pats(pats, has_re); +- pats->regmatch.rm_ic = orgpat.regmatch.rm_ic; +- } +- } +- +- /* Prepare for converting a match the other way around. */ +- convert_setup(&vimconv, lbuf + 20, p_enc); +- continue; +- } +- #endif +- + /* + * Figure out where the different strings are in this line. + * For "normal" tags: Do a quick check if the tag matches. + * This speeds up tag searching a lot! + */ +! if (pats->headlen + #ifdef FEAT_EMACS_TAGS + && !is_etag + #endif +--- 1892,1903 ---- + #endif + } + + /* + * Figure out where the different strings are in this line. + * For "normal" tags: Do a quick check if the tag matches. + * This speeds up tag searching a lot! + */ +! if (orgpat.headlen + #ifdef FEAT_EMACS_TAGS + && !is_etag + #endif +*************** +*** 1933,1941 **** + cmplen = (int)(tagp.tagname_end - tagp.tagname); + if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */ + cmplen = p_tl; +! if (has_re && pats->headlen < cmplen) +! cmplen = pats->headlen; +! else if (state == TS_LINEAR && pats->headlen != cmplen) + continue; + + #ifdef FEAT_TAG_BINS +--- 1954,1962 ---- + cmplen = (int)(tagp.tagname_end - tagp.tagname); + if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */ + cmplen = p_tl; +! if (has_re && orgpat.headlen < cmplen) +! cmplen = orgpat.headlen; +! else if (state == TS_LINEAR && orgpat.headlen != cmplen) + continue; + + #ifdef FEAT_TAG_BINS +*************** +*** 1954,1963 **** + * Compare the current tag with the searched tag. + */ + if (sortic) +! tagcmp = tag_strnicmp(tagp.tagname, pats->head, + (size_t)cmplen); + else +! tagcmp = STRNCMP(tagp.tagname, pats->head, cmplen); + + /* + * A match with a shorter tag means to search forward. +--- 1975,1984 ---- + * Compare the current tag with the searched tag. + */ + if (sortic) +! tagcmp = tag_strnicmp(tagp.tagname, orgpat.head, + (size_t)cmplen); + else +! tagcmp = STRNCMP(tagp.tagname, orgpat.head, cmplen); + + /* + * A match with a shorter tag means to search forward. +*************** +*** 1965,1973 **** + */ + if (tagcmp == 0) + { +! if (cmplen < pats->headlen) + tagcmp = -1; +! else if (cmplen > pats->headlen) + tagcmp = 1; + } + +--- 1986,1994 ---- + */ + if (tagcmp == 0) + { +! if (cmplen < orgpat.headlen) + tagcmp = -1; +! else if (cmplen > orgpat.headlen) + tagcmp = 1; + } + +*************** +*** 2011,2017 **** + } + else if (state == TS_SKIP_BACK) + { +! if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0) + state = TS_STEP_FORWARD; + else + /* Have to skip back more. Restore the curr_offset +--- 2032,2038 ---- + } + else if (state == TS_SKIP_BACK) + { +! if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0) + state = TS_STEP_FORWARD; + else + /* Have to skip back more. Restore the curr_offset +*************** +*** 2021,2027 **** + } + else if (state == TS_STEP_FORWARD) + { +! if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0) + { + if ((off_t)ftell(fp) > search_info.match_offset) + break; /* past last match */ +--- 2042,2048 ---- + } + else if (state == TS_STEP_FORWARD) + { +! if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0) + { + if ((off_t)ftell(fp) > search_info.match_offset) + break; /* past last match */ +*************** +*** 2032,2038 **** + else + #endif + /* skip this match if it can't match */ +! if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0) + continue; + + /* +--- 2053,2059 ---- + else + #endif + /* skip this match if it can't match */ +! if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0) + continue; + + /* +*************** +*** 2083,2123 **** + if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */ + cmplen = p_tl; + /* if tag length does not match, don't try comparing */ +! if (pats->len != cmplen) + match = FALSE; + else + { +! if (pats->regmatch.rm_ic) + { +! match = (MB_STRNICMP(tagp.tagname, pats->pat, cmplen) == 0); + if (match) +! match_no_ic = (STRNCMP(tagp.tagname, pats->pat, + cmplen) == 0); + } + else +! match = (STRNCMP(tagp.tagname, pats->pat, cmplen) == 0); + } + + /* + * Has a regexp: Also find tags matching regexp. + */ + match_re = FALSE; +! if (!match && pats->regmatch.regprog != NULL) + { + int cc; + + cc = *tagp.tagname_end; + *tagp.tagname_end = NUL; +! match = vim_regexec(&pats->regmatch, tagp.tagname, (colnr_T)0); + if (match) + { +! matchoff = (int)(pats->regmatch.startp[0] - tagp.tagname); +! if (pats->regmatch.rm_ic) + { +! pats->regmatch.rm_ic = FALSE; +! match_no_ic = vim_regexec(&pats->regmatch, tagp.tagname, + (colnr_T)0); +! pats->regmatch.rm_ic = TRUE; + } + } + *tagp.tagname_end = cc; +--- 2104,2144 ---- + if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */ + cmplen = p_tl; + /* if tag length does not match, don't try comparing */ +! if (orgpat.len != cmplen) + match = FALSE; + else + { +! if (orgpat.regmatch.rm_ic) + { +! match = (MB_STRNICMP(tagp.tagname, orgpat.pat, cmplen) == 0); + if (match) +! match_no_ic = (STRNCMP(tagp.tagname, orgpat.pat, + cmplen) == 0); + } + else +! match = (STRNCMP(tagp.tagname, orgpat.pat, cmplen) == 0); + } + + /* + * Has a regexp: Also find tags matching regexp. + */ + match_re = FALSE; +! if (!match && orgpat.regmatch.regprog != NULL) + { + int cc; + + cc = *tagp.tagname_end; + *tagp.tagname_end = NUL; +! match = vim_regexec(&orgpat.regmatch, tagp.tagname, (colnr_T)0); + if (match) + { +! matchoff = (int)(orgpat.regmatch.startp[0] - tagp.tagname); +! if (orgpat.regmatch.rm_ic) + { +! orgpat.regmatch.rm_ic = FALSE; +! match_no_ic = vim_regexec(&orgpat.regmatch, tagp.tagname, + (colnr_T)0); +! orgpat.regmatch.rm_ic = TRUE; + } + } + *tagp.tagname_end = cc; +*************** +*** 2174,2180 **** + else + mtt = MT_GL_OTH; + } +! if (pats->regmatch.rm_ic && !match_no_ic) + mtt += MT_IC_OFF; + if (match_re) + mtt += MT_RE_OFF; +--- 2195,2201 ---- + else + mtt = MT_GL_OTH; + } +! if (orgpat.regmatch.rm_ic && !match_no_ic) + mtt += MT_IC_OFF; + if (match_re) + mtt += MT_RE_OFF; +*************** +*** 2187,2221 **** + */ + if (ga_grow(&ga_match[mtt], 1) == OK) + { +- #ifdef FEAT_MBYTE +- char_u *conv_line = NULL; +- char_u *lbuf_line = lbuf; +- +- if (vimconv.vc_type != CONV_NONE) +- { +- /* Convert the tag line from the encoding of the tags +- * file to 'encoding'. Then parse the line again. */ +- conv_line = string_convert(&vimconv, lbuf, NULL); +- if (conv_line != NULL) +- { +- if (parse_tag_line(conv_line, +- #ifdef FEAT_EMACS_TAGS +- is_etag, +- #endif +- &tagp) == OK) +- lbuf_line = conv_line; +- else +- /* doesn't work, go back to unconverted line. */ +- (void)parse_tag_line(lbuf, +- #ifdef FEAT_EMACS_TAGS +- is_etag, +- #endif +- &tagp); +- } +- } +- #else +- # define lbuf_line lbuf +- #endif + if (help_only) + { + #ifdef FEAT_MULTI_LANG +--- 2208,2213 ---- +*************** +*** 2307,2313 **** + * without Emacs tags: <mtt><tag_fname><NUL><lbuf> + */ + len = (int)STRLEN(tag_fname) +! + (int)STRLEN(lbuf_line) + 3; + #ifdef FEAT_EMACS_TAGS + if (is_etag) + len += (int)STRLEN(ebuf) + 1; +--- 2299,2305 ---- + * without Emacs tags: <mtt><tag_fname><NUL><lbuf> + */ + len = (int)STRLEN(tag_fname) +! + (int)STRLEN(lbuf) + 3; + #ifdef FEAT_EMACS_TAGS + if (is_etag) + len += (int)STRLEN(ebuf) + 1; +*************** +*** 2337,2343 **** + else + *s++ = NUL; + #endif +! STRCPY(s, lbuf_line); + } + } + +--- 2329,2335 ---- + else + *s++ = NUL; + #endif +! STRCPY(s, lbuf); + } + } + +*************** +*** 2373,2382 **** + else + vim_free(mfp); + } +- #ifdef FEAT_MBYTE +- /* Note: this makes the values in "tagp" invalid! */ +- vim_free(conv_line); +- #endif + } + else /* Out of memory! Just forget about the rest. */ + { +--- 2365,2370 ---- +*************** +*** 2415,2433 **** + } + #endif + #ifdef FEAT_MBYTE +- if (pats == &convpat) +- { +- /* Go back from converted pattern to original pattern. */ +- vim_free(pats->pat); +- vim_free(pats->regmatch.regprog); +- orgpat.regmatch.rm_ic = pats->regmatch.rm_ic; +- pats = &orgpat; +- } + if (vimconv.vc_type != CONV_NONE) + convert_setup(&vimconv, NULL, NULL); + #endif + + #ifdef FEAT_TAG_BINS + if (sort_error) + { + EMSG2(_("E432: Tags file not sorted: %s"), tag_fname); +--- 2403,2414 ---- + } + #endif + #ifdef FEAT_MBYTE + if (vimconv.vc_type != CONV_NONE) + convert_setup(&vimconv, NULL, NULL); + #endif + + #ifdef FEAT_TAG_BINS ++ tag_file_sorted = NUL; + if (sort_error) + { + EMSG2(_("E432: Tags file not sorted: %s"), tag_fname); +*************** +*** 2461,2473 **** + #ifdef FEAT_TAG_BINS + /* stop searching when already did a linear search, or when TAG_NOIC + * used, and 'ignorecase' not set or already did case-ignore search */ +! if (stop_searching || linear || (!p_ic && noic) || pats->regmatch.rm_ic) + break; + # ifdef FEAT_CSCOPE + if (use_cscope) + break; + # endif +! pats->regmatch.rm_ic = TRUE; /* try another time while ignoring case */ + } + #endif + +--- 2442,2454 ---- + #ifdef FEAT_TAG_BINS + /* stop searching when already did a linear search, or when TAG_NOIC + * used, and 'ignorecase' not set or already did case-ignore search */ +! if (stop_searching || linear || (!p_ic && noic) || orgpat.regmatch.rm_ic) + break; + # ifdef FEAT_CSCOPE + if (use_cscope) + break; + # endif +! orgpat.regmatch.rm_ic = TRUE; /* try another time while ignoring case */ + } + #endif + +*************** +*** 2480,2486 **** + + findtag_end: + vim_free(lbuf); +! vim_free(pats->regmatch.regprog); + vim_free(tag_fname); + #ifdef FEAT_EMACS_TAGS + vim_free(ebuf); +--- 2461,2467 ---- + + findtag_end: + vim_free(lbuf); +! vim_free(orgpat.regmatch.regprog); + vim_free(tag_fname); + #ifdef FEAT_EMACS_TAGS + vim_free(ebuf); +*** ../vim-7.3.335/src/testdir/Make_amiga.mak 2011-07-15 21:16:54.000000000 +0200 +--- src/testdir/Make_amiga.mak 2011-10-12 19:21:00.000000000 +0200 +*************** +*** 29,35 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out + + .SUFFIXES: .in .out + +--- 29,35 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out + + .SUFFIXES: .in .out + +*************** +*** 131,133 **** +--- 131,134 ---- + test80.out: test80.in + test81.out: test81.in + test82.out: test82.in ++ test83.out: test83.in +*** ../vim-7.3.335/src/testdir/Make_dos.mak 2011-07-15 21:16:54.000000000 +0200 +--- src/testdir/Make_dos.mak 2011-10-12 17:39:03.000000000 +0200 +*************** +*** 29,35 **** + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out + + SCRIPTS32 = test50.out test70.out + +--- 29,35 ---- + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.335/src/testdir/Make_ming.mak 2011-07-15 21:16:54.000000000 +0200 +--- src/testdir/Make_ming.mak 2011-10-12 17:39:03.000000000 +0200 +*************** +*** 49,55 **** + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out + + SCRIPTS32 = test50.out test70.out + +--- 49,55 ---- + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.335/src/testdir/Make_os2.mak 2011-07-15 21:16:54.000000000 +0200 +--- src/testdir/Make_os2.mak 2011-10-12 17:39:03.000000000 +0200 +*************** +*** 29,35 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out + + .SUFFIXES: .in .out + +--- 29,35 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out + + .SUFFIXES: .in .out + +*** ../vim-7.3.335/src/testdir/Make_vms.mms 2011-07-15 21:16:54.000000000 +0200 +--- src/testdir/Make_vms.mms 2011-10-12 17:39:03.000000000 +0200 +*************** +*** 76,82 **** + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 76,82 ---- + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.335/src/testdir/Makefile 2011-07-15 21:16:54.000000000 +0200 +--- src/testdir/Makefile 2011-10-12 17:39:03.000000000 +0200 +*************** +*** 26,32 **** + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out + + SCRIPTS_GUI = test16.out + +--- 26,32 ---- + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out + + SCRIPTS_GUI = test16.out + +*************** +*** 72,78 **** + fi \ + else echo $* NO OUTPUT >>test.log; \ + fi" +! -rm -rf X* test.ok viminfo + + test49.out: test49.vim + +--- 72,78 ---- + fi \ + else echo $* NO OUTPUT >>test.log; \ + fi" +! # -rm -rf X* test.ok viminfo + + test49.out: test49.vim + +*** ../vim-7.3.335/src/testdir/test83-tags2 2011-10-12 19:49:38.000000000 +0200 +--- src/testdir/test83-tags2 2011-10-12 19:34:15.000000000 +0200 +*************** +*** 0 **** +--- 1,2 ---- ++ !_TAG_FILE_ENCODING cp932 // ++ ‚`‚a‚b Xtags2.txt /‚`‚a‚b +*** ../vim-7.3.335/src/testdir/test83-tags3 2011-10-12 19:49:38.000000000 +0200 +--- src/testdir/test83-tags3 2011-10-12 19:35:42.000000000 +0200 +*************** +*** 0 **** +--- 1,102 ---- ++ !_TAG_FILE_SORTED 1 // ++ !_TAG_FILE_ENCODING cp932 // ++ abc1 Xtags3.txt /‚`‚a‚b ++ abc2 Xtags3.txt /‚`‚a‚b ++ abc3 Xtags3.txt /‚`‚a‚b ++ abc4 Xtags3.txt /‚`‚a‚b ++ abc5 Xtags3.txt /‚`‚a‚b ++ abc6 Xtags3.txt /‚`‚a‚b ++ abc7 Xtags3.txt /‚`‚a‚b ++ abc8 Xtags3.txt /‚`‚a‚b ++ abc9 Xtags3.txt /‚`‚a‚b ++ abc10 Xtags3.txt /‚`‚a‚b ++ abc11 Xtags3.txt /‚`‚a‚b ++ abc12 Xtags3.txt /‚`‚a‚b ++ abc13 Xtags3.txt /‚`‚a‚b ++ abc14 Xtags3.txt /‚`‚a‚b ++ abc15 Xtags3.txt /‚`‚a‚b ++ abc16 Xtags3.txt /‚`‚a‚b ++ abc17 Xtags3.txt /‚`‚a‚b ++ abc18 Xtags3.txt /‚`‚a‚b ++ abc19 Xtags3.txt /‚`‚a‚b ++ abc20 Xtags3.txt /‚`‚a‚b ++ abc21 Xtags3.txt /‚`‚a‚b ++ abc22 Xtags3.txt /‚`‚a‚b ++ abc23 Xtags3.txt /‚`‚a‚b ++ abc24 Xtags3.txt /‚`‚a‚b ++ abc25 Xtags3.txt /‚`‚a‚b ++ abc26 Xtags3.txt /‚`‚a‚b ++ abc27 Xtags3.txt /‚`‚a‚b ++ abc28 Xtags3.txt /‚`‚a‚b ++ abc29 Xtags3.txt /‚`‚a‚b ++ abc30 Xtags3.txt /‚`‚a‚b ++ abc31 Xtags3.txt /‚`‚a‚b ++ abc32 Xtags3.txt /‚`‚a‚b ++ abc33 Xtags3.txt /‚`‚a‚b ++ abc34 Xtags3.txt /‚`‚a‚b ++ abc35 Xtags3.txt /‚`‚a‚b ++ abc36 Xtags3.txt /‚`‚a‚b ++ abc37 Xtags3.txt /‚`‚a‚b ++ abc38 Xtags3.txt /‚`‚a‚b ++ abc39 Xtags3.txt /‚`‚a‚b ++ abc40 Xtags3.txt /‚`‚a‚b ++ abc41 Xtags3.txt /‚`‚a‚b ++ abc42 Xtags3.txt /‚`‚a‚b ++ abc43 Xtags3.txt /‚`‚a‚b ++ abc44 Xtags3.txt /‚`‚a‚b ++ abc45 Xtags3.txt /‚`‚a‚b ++ abc46 Xtags3.txt /‚`‚a‚b ++ abc47 Xtags3.txt /‚`‚a‚b ++ abc48 Xtags3.txt /‚`‚a‚b ++ abc49 Xtags3.txt /‚`‚a‚b ++ abc50 Xtags3.txt /‚`‚a‚b ++ abc51 Xtags3.txt /‚`‚a‚b ++ abc52 Xtags3.txt /‚`‚a‚b ++ abc53 Xtags3.txt /‚`‚a‚b ++ abc54 Xtags3.txt /‚`‚a‚b ++ abc55 Xtags3.txt /‚`‚a‚b ++ abc56 Xtags3.txt /‚`‚a‚b ++ abc57 Xtags3.txt /‚`‚a‚b ++ abc58 Xtags3.txt /‚`‚a‚b ++ abc59 Xtags3.txt /‚`‚a‚b ++ abc60 Xtags3.txt /‚`‚a‚b ++ abc61 Xtags3.txt /‚`‚a‚b ++ abc62 Xtags3.txt /‚`‚a‚b ++ abc63 Xtags3.txt /‚`‚a‚b ++ abc64 Xtags3.txt /‚`‚a‚b ++ abc65 Xtags3.txt /‚`‚a‚b ++ abc66 Xtags3.txt /‚`‚a‚b ++ abc67 Xtags3.txt /‚`‚a‚b ++ abc68 Xtags3.txt /‚`‚a‚b ++ abc69 Xtags3.txt /‚`‚a‚b ++ abc70 Xtags3.txt /‚`‚a‚b ++ abc71 Xtags3.txt /‚`‚a‚b ++ abc72 Xtags3.txt /‚`‚a‚b ++ abc73 Xtags3.txt /‚`‚a‚b ++ abc74 Xtags3.txt /‚`‚a‚b ++ abc75 Xtags3.txt /‚`‚a‚b ++ abc76 Xtags3.txt /‚`‚a‚b ++ abc77 Xtags3.txt /‚`‚a‚b ++ abc78 Xtags3.txt /‚`‚a‚b ++ abc79 Xtags3.txt /‚`‚a‚b ++ abc80 Xtags3.txt /‚`‚a‚b ++ abc81 Xtags3.txt /‚`‚a‚b ++ abc82 Xtags3.txt /‚`‚a‚b ++ abc83 Xtags3.txt /‚`‚a‚b ++ abc84 Xtags3.txt /‚`‚a‚b ++ abc85 Xtags3.txt /‚`‚a‚b ++ abc86 Xtags3.txt /‚`‚a‚b ++ abc87 Xtags3.txt /‚`‚a‚b ++ abc88 Xtags3.txt /‚`‚a‚b ++ abc89 Xtags3.txt /‚`‚a‚b ++ abc90 Xtags3.txt /‚`‚a‚b ++ abc91 Xtags3.txt /‚`‚a‚b ++ abc92 Xtags3.txt /‚`‚a‚b ++ abc93 Xtags3.txt /‚`‚a‚b ++ abc94 Xtags3.txt /‚`‚a‚b ++ abc95 Xtags3.txt /‚`‚a‚b ++ abc96 Xtags3.txt /‚`‚a‚b ++ abc97 Xtags3.txt /‚`‚a‚b ++ abc98 Xtags3.txt /‚`‚a‚b ++ abc99 Xtags3.txt /‚`‚a‚b ++ abc100 Xtags3.txt /‚`‚a‚b +*** ../vim-7.3.335/src/testdir/test83.in 2011-10-12 19:49:38.000000000 +0200 +--- src/testdir/test83.in 2011-10-12 19:40:47.000000000 +0200 +*************** +*** 0 **** +--- 1,76 ---- ++ Tests for tag search with !_TAG_FILE_ENCODING. ++ ++ STARTTEST ++ :so mbyte.vim ++ :if !has('iconv') ++ : e! test.ok ++ : w! test.out ++ : qa! ++ :endif ++ :set enc=utf8 ++ ++ :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt ++ :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt ++ :/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt ++ :/^tags1$/+1,/^tags1-end$/-1w! Xtags1 ++ ++ ggdG ++ ++ :call setline('.', 'Results of test83') ++ ++ :" case1: ++ :new ++ :set tags=Xtags1 ++ :let v:errmsg = '' ++ :tag abcdefghijklmnopqrs ++ :if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs' ++ : close ++ : put ='case1: failed' ++ :else ++ : close ++ : put ='case1: ok' ++ :endif ++ ++ :" case2: ++ :new ++ :set tags=test83-tags2 ++ :let v:errmsg = '' ++ :tag /.BC ++ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC' ++ : close ++ : put ='case2: failed' ++ :else ++ : close ++ : put ='case2: ok' ++ :endif ++ ++ :" case3: ++ :new ++ :set tags=test83-tags3 ++ :let v:errmsg = '' ++ :tag abc50 ++ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC' ++ : close ++ : put ='case3: failed' ++ :else ++ : close ++ : put ='case3: ok' ++ :endif ++ :close ++ ++ :wq! test.out ++ ENDTEST ++ ++ text for tags1 ++ abcdefghijklmnopqrs ++ ++ text for tags2 ++ ABC ++ ++ text for tags3 ++ ABC ++ ++ tags1 ++ !_TAG_FILE_ENCODING utf-8 // ++ abcdefghijklmnopqrs Xtags1.txt /abcdefghijklmnopqrs ++ tags1-end +*** ../vim-7.3.335/src/testdir/test83.ok 2011-10-12 19:49:38.000000000 +0200 +--- src/testdir/test83.ok 2011-10-12 17:39:03.000000000 +0200 +*************** +*** 0 **** +--- 1,4 ---- ++ Results of test83 ++ case1: ok ++ case2: ok ++ case3: ok +*** ../vim-7.3.335/src/version.c 2011-10-12 16:57:07.000000000 +0200 +--- src/version.c 2011-10-12 19:45:46.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 336, + /**/ + + +-- +hundred-and-one symptoms of being an internet addict: +62. If your doorbell rings, you think that new mail has arrived. And then + you're disappointed that it's only someone at the door. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.337 b/source/ap/vim/patches/7.3.337 new file mode 100644 index 00000000..a2aeb04f --- /dev/null +++ b/source/ap/vim/patches/7.3.337 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.337 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.337 (after 7.3.295) +Problem: Screen doesn't update after resizing the xterm until a character + is typed. +Solution: When the select call is interrupted check do_resize. (Taylor + Hedberg) +Files: src/os_unix.c + + +*** ../vim-7.3.336/src/os_unix.c 2011-09-08 23:24:09.000000000 +0200 +--- src/os_unix.c 2011-10-12 20:57:15.000000000 +0200 +*************** +*** 5146,5156 **** +--- 5146,5163 ---- + # endif + # ifdef EINTR + if (ret == -1 && errno == EINTR) ++ { ++ /* Check whether window has been resized, EINTR may be caused by ++ * SIGWINCH. */ ++ if (do_resize) ++ handle_resize(); ++ + /* Interrupted by a signal, need to try again. We ignore msec + * here, because we do want to check even after a timeout if + * characters are available. Needed for reading output of an + * external command after the process has finished. */ + goto select_eintr; ++ } + # endif + # ifdef __TANDEM + if (ret == -1 && errno == ENOTSUP) +*** ../vim-7.3.336/src/version.c 2011-10-12 19:53:31.000000000 +0200 +--- src/version.c 2011-10-12 21:03:47.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 337, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +64. The remote to the T.V. is missing...and you don't even care. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.338 b/source/ap/vim/patches/7.3.338 new file mode 100644 index 00000000..f273212a --- /dev/null +++ b/source/ap/vim/patches/7.3.338 @@ -0,0 +1,100 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.338 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.338 +Problem: Using getchar() in an expression mapping doesn't work well. +Solution: Don't save and restore the typeahead. (James Vega) +Files: src/getchar.c, src/testdir/test34.ok + + +*** ../vim-7.3.337/src/getchar.c 2011-08-17 20:33:18.000000000 +0200 +--- src/getchar.c 2011-10-12 21:53:27.000000000 +0200 +*************** +*** 2460,2486 **** + + /* + * Handle ":map <expr>": evaluate the {rhs} as an +! * expression. Save and restore the typeahead so that +! * getchar() can be used. Also save and restore the +! * command line for "normal :". + */ + if (mp->m_expr) + { +- tasave_T tabuf; + int save_vgetc_busy = vgetc_busy; + +! save_typeahead(&tabuf); +! if (tabuf.typebuf_valid) +! { +! vgetc_busy = 0; +! save_m_keys = vim_strsave(mp->m_keys); +! save_m_str = vim_strsave(mp->m_str); +! s = eval_map_expr(save_m_str, NUL); +! vgetc_busy = save_vgetc_busy; +! } +! else +! s = NULL; +! restore_typeahead(&tabuf); + } + else + #endif +--- 2460,2477 ---- + + /* + * Handle ":map <expr>": evaluate the {rhs} as an +! * expression. Also save and restore the command line +! * for "normal :". + */ + if (mp->m_expr) + { + int save_vgetc_busy = vgetc_busy; + +! vgetc_busy = 0; +! save_m_keys = vim_strsave(mp->m_keys); +! save_m_str = vim_strsave(mp->m_str); +! s = eval_map_expr(save_m_str, NUL); +! vgetc_busy = save_vgetc_busy; + } + else + #endif +*** ../vim-7.3.337/src/testdir/test34.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test34.ok 2011-10-12 21:59:39.000000000 +0200 +*************** +*** 1,5 **** + xxx4asdf fail nop ok 9 333 +! XX111XX + ---222--- + 1. one + 2. two +--- 1,5 ---- + xxx4asdf fail nop ok 9 333 +! XX111-XX + ---222--- + 1. one + 2. two +*** ../vim-7.3.337/src/version.c 2011-10-12 21:04:15.000000000 +0200 +--- src/version.c 2011-10-12 21:20:31.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 338, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +65. The last time you looked at the clock it was 11:30pm, and in what + seems like only a few seconds later, your sister runs past you to + catch her 7am school bus. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.339 b/source/ap/vim/patches/7.3.339 new file mode 100644 index 00000000..f108ad6e --- /dev/null +++ b/source/ap/vim/patches/7.3.339 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.339 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.339 +Problem: "make shadow" doesn't link all test files. +Solution: Add a line in Makefile and Filelist. +Files: src/Makefile, Filelist + + +*** ../vim-7.3.338/Filelist 2011-09-30 16:56:00.000000000 +0200 +--- Filelist 2011-10-16 14:00:42.000000000 +0200 +*************** +*** 81,86 **** +--- 81,87 ---- + src/testdir/test[0-9]*.ok \ + src/testdir/test49.vim \ + src/testdir/test60.vim \ ++ src/testdir/test83-tags? \ + src/proto.h \ + src/proto/blowfish.pro \ + src/proto/buffer.pro \ +*** ../vim-7.3.338/src/Makefile 2011-05-19 13:40:47.000000000 +0200 +--- src/Makefile 2011-10-16 13:59:40.000000000 +0200 +*************** +*** 2328,2333 **** +--- 2328,2334 ---- + ../../testdir/vimrc.unix \ + ../../testdir/*.in \ + ../../testdir/*.vim \ ++ ../../testdir/test83-tags? \ + ../../testdir/*.ok . + + # Link needed for doing "make install" in a shadow directory. +*** ../vim-7.3.338/src/version.c 2011-10-12 22:02:07.000000000 +0200 +--- src/version.c 2011-10-20 16:34:28.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 339, + /**/ + +-- +From "know your smileys": + :-O>-o Smiley American tourist (note big mouth and camera) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.340 b/source/ap/vim/patches/7.3.340 new file mode 100644 index 00000000..fb0b8423 --- /dev/null +++ b/source/ap/vim/patches/7.3.340 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.340 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.340 +Problem: When 'verbosefile' is set ftplugof.vim can give an error. +Solution: Only remove filetypeplugin autocommands when they exist. (Yasuhiro + Matsumoto) +Files: runtime/ftplugof.vim + + +*** ../vim-7.3.339/runtime/ftplugof.vim 2010-08-15 21:57:11.000000000 +0200 +--- runtime/ftplugof.vim 2011-10-20 16:51:00.000000000 +0200 +*************** +*** 1,11 **** + " Vim support file to switch off loading plugins for file types + " + " Maintainer: Bram Moolenaar <Bram@vim.org> +! " Last Change: 2002 Apr 04 + + if exists("did_load_ftplugin") + unlet did_load_ftplugin + endif + +! " Remove all autocommands in the filetypeplugin group +! silent! au! filetypeplugin * +--- 1,13 ---- + " Vim support file to switch off loading plugins for file types + " + " Maintainer: Bram Moolenaar <Bram@vim.org> +! " Last Change: 2011 Oct 20 + + if exists("did_load_ftplugin") + unlet did_load_ftplugin + endif + +! " Remove all autocommands in the filetypeplugin group, if any exist. +! if exists("#filetypeplugin") +! silent! au! filetypeplugin * +! endif +*** ../vim-7.3.339/src/version.c 2011-10-20 16:35:25.000000000 +0200 +--- src/version.c 2011-10-20 18:01:18.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 340, + /**/ + +-- +How many light bulbs does it take to change a person? + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.341 b/source/ap/vim/patches/7.3.341 new file mode 100644 index 00000000..6ea38603 --- /dev/null +++ b/source/ap/vim/patches/7.3.341 @@ -0,0 +1,360 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.341 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.341 +Problem: Local help files are only listed in help.txt, not in translated + help files. +Solution: Also find translated help files. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + + +*** ../vim-7.3.340/src/ex_cmds.c 2011-09-30 17:30:27.000000000 +0200 +--- src/ex_cmds.c 2011-10-20 17:39:45.000000000 +0200 +*************** +*** 5982,5987 **** +--- 5982,5988 ---- + char_u *line; + int in_example = FALSE; + int len; ++ char_u *fname; + char_u *p; + char_u *rt; + int mustfree; +*************** +*** 6028,6151 **** + } + + /* +! * In the "help.txt" file, add the locally added help files. +! * This uses the very first line in the help file. + */ +! if (fnamecmp(gettail(curbuf->b_fname), "help.txt") == 0) + { + for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum) + { + line = ml_get_buf(curbuf, lnum, FALSE); +! if (strstr((char *)line, "*local-additions*") != NULL) + { +! /* Go through all directories in 'runtimepath', skipping +! * $VIMRUNTIME. */ +! p = p_rtp; +! while (*p != NUL) + { +! copy_option_part(&p, NameBuff, MAXPATHL, ","); +! mustfree = FALSE; +! rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree); +! if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME) +! { +! int fcount; +! char_u **fnames; +! FILE *fd; +! char_u *s; +! int fi; + #ifdef FEAT_MBYTE +! vimconv_T vc; +! char_u *cp; + #endif + +! /* Find all "doc/ *.txt" files in this directory. */ +! add_pathsep(NameBuff); +! STRCAT(NameBuff, "doc/*.txt"); +! if (gen_expand_wildcards(1, &NameBuff, &fcount, +! &fnames, EW_FILE|EW_SILENT) == OK +! && fcount > 0) + { +! for (fi = 0; fi < fcount; ++fi) + { +! fd = mch_fopen((char *)fnames[fi], "r"); +! if (fd != NULL) + { +! vim_fgets(IObuff, IOSIZE, fd); +! if (IObuff[0] == '*' +! && (s = vim_strchr(IObuff + 1, '*')) +! != NULL) +! { +! #ifdef FEAT_MBYTE +! int this_utf = MAYBE; + #endif +! /* Change tag definition to a +! * reference and remove <CR>/<NL>. */ +! IObuff[0] = '|'; +! *s = '|'; +! while (*s != NUL) +! { +! if (*s == '\r' || *s == '\n') +! *s = NUL; + #ifdef FEAT_MBYTE +! /* The text is utf-8 when a byte +! * above 127 is found and no +! * illegal byte sequence is found. +! */ +! if (*s >= 0x80 && this_utf != FALSE) +! { +! int l; +! +! this_utf = TRUE; +! l = utf_ptr2len(s); +! if (l == 1) +! this_utf = FALSE; +! s += l - 1; +! } + #endif +! ++s; +! } + #ifdef FEAT_MBYTE +! /* The help file is latin1 or utf-8; +! * conversion to the current +! * 'encoding' may be required. */ +! vc.vc_type = CONV_NONE; +! convert_setup(&vc, (char_u *)( +! this_utf == TRUE ? "utf-8" +! : "latin1"), p_enc); +! if (vc.vc_type == CONV_NONE) +! /* No conversion needed. */ +! cp = IObuff; +! else + { +! /* Do the conversion. If it fails +! * use the unconverted text. */ +! cp = string_convert(&vc, IObuff, +! NULL); +! if (cp == NULL) +! cp = IObuff; + } +! convert_setup(&vc, NULL, NULL); + +! ml_append(lnum, cp, (colnr_T)0, FALSE); +! if (cp != IObuff) +! vim_free(cp); + #else +! ml_append(lnum, IObuff, (colnr_T)0, +! FALSE); + #endif +! ++lnum; +! } +! fclose(fd); + } + } +- FreeWild(fcount, fnames); + } + } +- if (mustfree) +- vim_free(rt); + } +! break; + } + } + } + } +--- 6029,6215 ---- + } + + /* +! * In the "help.txt" and "help.abx" file, add the locally added help +! * files. This uses the very first line in the help file. + */ +! fname = gettail(curbuf->b_fname); +! if (fnamecmp(fname, "help.txt") == 0 +! #ifdef FEAT_MULTI_LANG +! || (fnamencmp(fname, "help.", 5) == 0 +! && ASCII_ISALPHA(fname[5]) +! && ASCII_ISALPHA(fname[6]) +! && TOLOWER_ASC(fname[7]) == 'x' +! && fname[8] == NUL) +! #endif +! ) + { + for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum) + { + line = ml_get_buf(curbuf, lnum, FALSE); +! if (strstr((char *)line, "*local-additions*") == NULL) +! continue; +! +! /* Go through all directories in 'runtimepath', skipping +! * $VIMRUNTIME. */ +! p = p_rtp; +! while (*p != NUL) + { +! copy_option_part(&p, NameBuff, MAXPATHL, ","); +! mustfree = FALSE; +! rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree); +! if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME) + { +! int fcount; +! char_u **fnames; +! FILE *fd; +! char_u *s; +! int fi; + #ifdef FEAT_MBYTE +! vimconv_T vc; +! char_u *cp; + #endif + +! /* Find all "doc/ *.txt" files in this directory. */ +! add_pathsep(NameBuff); +! #ifdef FEAT_MULTI_LANG +! STRCAT(NameBuff, "doc/*.??[tx]"); +! #else +! STRCAT(NameBuff, "doc/*.txt"); +! #endif +! if (gen_expand_wildcards(1, &NameBuff, &fcount, +! &fnames, EW_FILE|EW_SILENT) == OK +! && fcount > 0) +! { +! #ifdef FEAT_MULTI_LANG +! int i1; +! int i2; +! char_u *f1; +! char_u *f2; +! char_u *t1; +! char_u *e1; +! char_u *e2; +! +! /* If foo.abx is found use it instead of foo.txt in +! * the same directory. */ +! for (i1 = 0; i1 < fcount; ++i1) + { +! for (i2 = 0; i2 < fcount; ++i2) + { +! if (i1 == i2) +! continue; +! if (fnames[i1] == NULL || fnames[i2] == NULL) +! continue; +! f1 = fnames[i1]; +! f2 = fnames[i2]; +! t1 = gettail(f1); +! if (fnamencmp(f1, f2, t1 - f1) != 0) +! continue; +! e1 = vim_strrchr(t1, '.'); +! e2 = vim_strrchr(gettail(f2), '.'); +! if (e1 == NUL || e2 == NUL) +! continue; +! if (fnamecmp(e1, ".txt") != 0 +! && fnamecmp(e1, fname + 4) != 0) + { +! /* Not .txt and not .abx, remove it. */ +! vim_free(fnames[i1]); +! fnames[i1] = NULL; +! continue; +! } +! if (fnamencmp(f1, f2, e1 - f1) != 0) +! continue; +! if (fnamecmp(e1, ".txt") == 0 +! && fnamecmp(e2, fname + 4) == 0) +! { +! /* use .abx instead of .txt */ +! vim_free(fnames[i1]); +! fnames[i1] = NULL; +! } +! } +! } + #endif +! for (fi = 0; fi < fcount; ++fi) +! { +! if (fnames[fi] == NULL) +! continue; +! fd = mch_fopen((char *)fnames[fi], "r"); +! if (fd != NULL) +! { +! vim_fgets(IObuff, IOSIZE, fd); +! if (IObuff[0] == '*' +! && (s = vim_strchr(IObuff + 1, '*')) +! != NULL) +! { + #ifdef FEAT_MBYTE +! int this_utf = MAYBE; + #endif +! /* Change tag definition to a +! * reference and remove <CR>/<NL>. */ +! IObuff[0] = '|'; +! *s = '|'; +! while (*s != NUL) +! { +! if (*s == '\r' || *s == '\n') +! *s = NUL; + #ifdef FEAT_MBYTE +! /* The text is utf-8 when a byte +! * above 127 is found and no +! * illegal byte sequence is found. +! */ +! if (*s >= 0x80 && this_utf != FALSE) + { +! int l; +! +! this_utf = TRUE; +! l = utf_ptr2len(s); +! if (l == 1) +! this_utf = FALSE; +! s += l - 1; + } +! #endif +! ++s; +! } +! #ifdef FEAT_MBYTE +! /* The help file is latin1 or utf-8; +! * conversion to the current +! * 'encoding' may be required. */ +! vc.vc_type = CONV_NONE; +! convert_setup(&vc, (char_u *)( +! this_utf == TRUE ? "utf-8" +! : "latin1"), p_enc); +! if (vc.vc_type == CONV_NONE) +! /* No conversion needed. */ +! cp = IObuff; +! else +! { +! /* Do the conversion. If it fails +! * use the unconverted text. */ +! cp = string_convert(&vc, IObuff, +! NULL); +! if (cp == NULL) +! cp = IObuff; +! } +! convert_setup(&vc, NULL, NULL); + +! ml_append(lnum, cp, (colnr_T)0, FALSE); +! if (cp != IObuff) +! vim_free(cp); + #else +! ml_append(lnum, IObuff, (colnr_T)0, +! FALSE); + #endif +! ++lnum; + } ++ fclose(fd); + } + } ++ FreeWild(fcount, fnames); + } + } +! if (mustfree) +! vim_free(rt); + } ++ break; + } + } + } +*** ../vim-7.3.340/src/version.c 2011-10-20 18:12:27.000000000 +0200 +--- src/version.c 2011-10-20 18:13:46.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 341, + /**/ + +-- +From "know your smileys": + :-)-O Smiling doctor with stethoscope + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.342 b/source/ap/vim/patches/7.3.342 new file mode 100644 index 00000000..2deb7e38 --- /dev/null +++ b/source/ap/vim/patches/7.3.342 @@ -0,0 +1,93 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.342 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.342 +Problem: Code not in Vim style. +Solution: Fix the style. (Elias Diem) +Files: src/os_amiga.c, src/os_mac_conv.c, src/os_win16.c + + +*** ../vim-7.3.341/src/os_amiga.c 2010-08-15 21:57:27.000000000 +0200 +--- src/os_amiga.c 2011-10-20 18:19:45.000000000 +0200 +*************** +*** 1022,1028 **** + + /* insure longword alignment */ + #ifdef __amigaos4__ +! if(!(id = AllocDosObject(DOS_INFODATA, 0))) + goto out; + #else + id = (struct InfoData *)(((long)id_a + 3L) & ~3L); +--- 1022,1028 ---- + + /* insure longword alignment */ + #ifdef __amigaos4__ +! if (!(id = AllocDosObject(DOS_INFODATA, 0))) + goto out; + #else + id = (struct InfoData *)(((long)id_a + 3L) & ~3L); +*** ../vim-7.3.341/src/os_mac_conv.c 2011-06-13 02:03:55.000000000 +0200 +--- src/os_mac_conv.c 2011-10-20 18:19:45.000000000 +0200 +*************** +*** 77,83 **** + *unconvlenp = 0; + cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0); + +! if(cfstr == NULL) + fprintf(stderr, "Encoding failed\n"); + /* When conversion failed, try excluding bytes from the end, helps when + * there is an incomplete byte sequence. Only do up to 6 bytes to avoid +--- 77,83 ---- + *unconvlenp = 0; + cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0); + +! if (cfstr == NULL) + fprintf(stderr, "Encoding failed\n"); + /* When conversion failed, try excluding bytes from the end, helps when + * there is an incomplete byte sequence. Only do up to 6 bytes to avoid +*** ../vim-7.3.341/src/os_win16.c 2010-12-17 20:23:56.000000000 +0100 +--- src/os_win16.c 2011-10-20 18:19:45.000000000 +0200 +*************** +*** 243,251 **** + /* Wait for the command to terminate before continuing */ + while (GetModuleUsage((HINSTANCE)h_module) > 0 && again ) + { +! while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) && again ) + { +! if(msg.message == WM_QUIT) + + { + PostQuitMessage(msg.wParam); +--- 243,251 ---- + /* Wait for the command to terminate before continuing */ + while (GetModuleUsage((HINSTANCE)h_module) > 0 && again ) + { +! while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && again) + { +! if (msg.message == WM_QUIT) + + { + PostQuitMessage(msg.wParam); +*** ../vim-7.3.341/src/version.c 2011-10-20 18:17:38.000000000 +0200 +--- src/version.c 2011-10-20 18:21:43.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 342, + /**/ + +-- +You are only young once, but you can stay immature indefinitely. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.343 b/source/ap/vim/patches/7.3.343 new file mode 100644 index 00000000..db62264d --- /dev/null +++ b/source/ap/vim/patches/7.3.343 @@ -0,0 +1,252 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.343 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.343 +Problem: No mouse support for urxvt. +Solution: Implement urxvt mouse support, also for > 252 columns. (Yiding + Jia) +Files: src/feature.h, src/keymap.h, src/option.h, src/os_unix.c, + src/term.c, src/version.c + + +*** ../vim-7.3.342/src/feature.h 2011-05-19 13:40:47.000000000 +0200 +--- src/feature.h 2011-10-20 21:02:15.000000000 +0200 +*************** +*** 1053,1058 **** +--- 1053,1061 ---- + # ifdef FEAT_BIG + # define FEAT_MOUSE_DEC + # endif ++ # ifdef FEAT_BIG ++ # define FEAT_MOUSE_URXVT ++ # endif + # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264)) + # define DOS_MOUSE + # endif +*************** +*** 1068,1080 **** + #if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE) + # define FEAT_SYSMOUSE + #endif + /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */ + #if !defined(FEAT_MOUSE_TTY) \ + && (defined(FEAT_MOUSE_XTERM) \ +! || defined(FEAT_MOUSE_NET) || defined(FEAT_MOUSE_DEC) \ +! || defined(DOS_MOUSE) || defined(FEAT_MOUSE_GPM) \ +! || defined(FEAT_MOUSE_JSB) || defined(FEAT_MOUSE_PTERM) \ +! || defined(FEAT_SYSMOUSE)) + # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ + #endif + #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) +--- 1071,1093 ---- + #if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE) + # define FEAT_SYSMOUSE + #endif ++ ++ /* urxvt is a small variation of mouse_xterm, and shares its code */ ++ #if defined(FEAT_MOUSE_URXVT) && !defined(FEAT_MOUSE_XTERM) ++ # define FEAT_MOUSE_XTERM ++ #endif ++ + /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */ + #if !defined(FEAT_MOUSE_TTY) \ + && (defined(FEAT_MOUSE_XTERM) \ +! || defined(FEAT_MOUSE_NET) \ +! || defined(FEAT_MOUSE_DEC) \ +! || defined(DOS_MOUSE) \ +! || defined(FEAT_MOUSE_GPM) \ +! || defined(FEAT_MOUSE_JSB) \ +! || defined(FEAT_MOUSE_PTERM) \ +! || defined(FEAT_SYSMOUSE) \ +! || defined(FEAT_MOUSE_URXVT)) + # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ + #endif + #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) +*** ../vim-7.3.342/src/keymap.h 2010-08-15 21:57:32.000000000 +0200 +--- src/keymap.h 2011-10-20 21:00:37.000000000 +0200 +*************** +*** 92,104 **** + */ + #define KS_TEAROFF 244 + +! /* used for JSB term mouse */ + #define KS_JSBTERM_MOUSE 243 + +! /* used a termcap entry that produces a normal character */ + #define KS_KEY 242 + +! /* Used for the qnx pterm mouse */ + #define KS_PTERM_MOUSE 241 + + /* Used for click in a tab pages label. */ +--- 92,104 ---- + */ + #define KS_TEAROFF 244 + +! /* Used for JSB term mouse. */ + #define KS_JSBTERM_MOUSE 243 + +! /* Used a termcap entry that produces a normal character. */ + #define KS_KEY 242 + +! /* Used for the qnx pterm mouse. */ + #define KS_PTERM_MOUSE 241 + + /* Used for click in a tab pages label. */ +*************** +*** 107,112 **** +--- 107,115 ---- + /* Used for menu in a tab pages line. */ + #define KS_TABMENU 239 + ++ /* Used for the urxvt mouse. */ ++ #define KS_URXVT_MOUSE 238 ++ + /* + * Filler used after KS_SPECIAL and others + */ +*** ../vim-7.3.342/src/option.h 2011-09-30 14:44:49.000000000 +0200 +--- src/option.h 2011-10-20 19:38:59.000000000 +0200 +*************** +*** 819,825 **** + EXTERN char_u *p_ttym; /* 'ttymouse' */ + EXTERN unsigned ttym_flags; + # ifdef IN_OPTION_C +! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", NULL}; + # endif + # define TTYM_XTERM 0x01 + # define TTYM_XTERM2 0x02 +--- 819,825 ---- + EXTERN char_u *p_ttym; /* 'ttymouse' */ + EXTERN unsigned ttym_flags; + # ifdef IN_OPTION_C +! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", NULL}; + # endif + # define TTYM_XTERM 0x01 + # define TTYM_XTERM2 0x02 +*************** +*** 827,832 **** +--- 827,833 ---- + # define TTYM_NETTERM 0x08 + # define TTYM_JSBTERM 0x10 + # define TTYM_PTERM 0x20 ++ # define TTYM_URXVT 0x40 + #endif + EXTERN char_u *p_udir; /* 'undodir' */ + EXTERN long p_ul; /* 'undolevels' */ +*** ../vim-7.3.342/src/os_unix.c 2011-10-12 21:04:15.000000000 +0200 +--- src/os_unix.c 2011-10-20 21:02:00.000000000 +0200 +*************** +*** 2158,2167 **** +--- 2158,2170 ---- + * Return non-zero when using an xterm mouse, according to 'ttymouse'. + * Return 1 for "xterm". + * Return 2 for "xterm2". ++ * Return 3 for "urxvt". + */ + int + use_xterm_mouse() + { ++ if (ttym_flags == TTYM_URXVT) ++ return 3; + if (ttym_flags == TTYM_XTERM2) + return 2; + if (ttym_flags == TTYM_XTERM) +*************** +*** 3318,3323 **** +--- 3321,3337 ---- + return; + + xterm_mouse_vers = use_xterm_mouse(); ++ ++ # ifdef FEAT_MOUSE_URXVT ++ if (ttym_flags == TTYM_URXVT) { ++ out_str_nf((char_u *) ++ (on ++ ? IF_EB("\033[?1015h", ESC_STR "[?1015h") ++ : IF_EB("\033[?1015l", ESC_STR "[?1015l"))); ++ ison = on; ++ } ++ # endif ++ + if (xterm_mouse_vers > 0) + { + if (on) /* enable mouse events, use mouse tracking if available */ +*************** +*** 3434,3439 **** +--- 3448,3456 ---- + { + # ifdef FEAT_MOUSE_XTERM + if (use_xterm_mouse() ++ # ifdef FEAT_MOUSE_URXVT ++ && use_xterm_mouse() != 3 ++ # endif + # ifdef FEAT_GUI + && !gui.in_use + # endif +*************** +*** 3523,3528 **** +--- 3540,3566 ---- + else + del_mouse_termcode(KS_PTERM_MOUSE); + # endif ++ # ifdef FEAT_MOUSE_URXVT ++ /* same as the dec mouse */ ++ if (use_xterm_mouse() == 3 ++ # ifdef FEAT_GUI ++ && !gui.in_use ++ # endif ++ ) ++ { ++ set_mouse_termcode(KS_URXVT_MOUSE, (char_u *)(term_is_8bit(T_NAME) ++ ? IF_EB("\233", CSI_STR) ++ : IF_EB("\033[", ESC_STR "["))); ++ ++ if (*p_mouse != NUL) ++ { ++ mch_setmouse(FALSE); ++ setmouse(); ++ } ++ } ++ else ++ del_mouse_termcode(KS_URXVT_MOUSE); ++ # endif + } + #endif + +*** ../vim-7.3.342/src/version.c 2011-10-20 18:24:16.000000000 +0200 +--- src/version.c 2011-10-20 19:40:48.000000000 +0200 +*************** +*** 380,383 **** +--- 380,388 ---- + "-mouse_xterm", + # endif ++ # ifdef FEAT_MOUSE_URXVT ++ "+mouse_urxvt", ++ # else ++ "-mouse_urxvt", ++ # endif + #endif + #ifdef __QNX__ +*************** +*** 711,712 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 343, + /**/ + +-- +Warning label on a superhero Halloween costume: +"Caution: Cape does not enable user to fly." + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.344 b/source/ap/vim/patches/7.3.344 new file mode 100644 index 00000000..d2bb1dbe --- /dev/null +++ b/source/ap/vim/patches/7.3.344 @@ -0,0 +1,121 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.344 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.344 +Problem: Problem with GUI startup related to XInitThreads. +Solution: Use read() and write() instead of fputs() and fread(). (James + Vega) +Files: src/gui.c + + +*** ../vim-7.3.343/src/gui.c 2011-09-14 19:04:35.000000000 +0200 +--- src/gui.c 2011-10-20 21:23:43.000000000 +0200 +*************** +*** 212,218 **** + int status; + int exit_status; + pid_t pid = -1; +- FILE *parent_file; + + /* Setup a pipe between the child and the parent, so that the parent + * knows when the child has done the setsid() call and is allowed to +--- 212,217 ---- +*************** +*** 290,308 **** + gui_mch_forked(); + # endif + +- if (!pipe_error) +- parent_file = fdopen(pipefd[1], "w"); +- else +- parent_file = NULL; +- + /* Try to start the GUI */ + gui_attempt_start(); + + /* Notify the parent */ +! if (parent_file != NULL) + { +! fputs(gui.in_use ? "ok" : "fail", parent_file); +! fclose(parent_file); + } + + /* If we failed to start the GUI, exit now. */ +--- 289,305 ---- + gui_mch_forked(); + # endif + + /* Try to start the GUI */ + gui_attempt_start(); + + /* Notify the parent */ +! if (!pipe_error) + { +! if (gui.in_use) +! write_eintr(pipefd[1], "ok", 3); +! else +! write_eintr(pipefd[1], "fail", 5); +! close(pipefd[1]); + } + + /* If we failed to start the GUI, exit now. */ +*************** +*** 323,339 **** + static int + gui_read_child_pipe(int fd) + { +! size_t bytes_read; +! FILE *file; +! char buffer[10]; +! +! file = fdopen(fd, "r"); +! if (!file) + return GUI_CHILD_IO_ERROR; +! +! bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file); +! buffer[bytes_read] = '\0'; +! fclose(file); + if (strcmp(buffer, "ok") == 0) + return GUI_CHILD_OK; + return GUI_CHILD_FAILED; +--- 320,335 ---- + static int + gui_read_child_pipe(int fd) + { +! long bytes_read; +! #define READ_BUFFER_SIZE 10 +! char buffer[READ_BUFFER_SIZE]; +! +! bytes_read = read_eintr(fd, buffer, READ_BUFFER_SIZE - 1); +! #undef READ_BUFFER_SIZE +! close(fd); +! if (bytes_read < 0) + return GUI_CHILD_IO_ERROR; +! buffer[bytes_read] = NUL; + if (strcmp(buffer, "ok") == 0) + return GUI_CHILD_OK; + return GUI_CHILD_FAILED; +*** ../vim-7.3.343/src/version.c 2011-10-20 21:09:25.000000000 +0200 +--- src/version.c 2011-10-20 21:27:31.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 344, + /**/ + +-- +From "know your smileys": + *<|:-) Santa Claus (Ho Ho Ho) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.345 b/source/ap/vim/patches/7.3.345 new file mode 100644 index 00000000..99dd074a --- /dev/null +++ b/source/ap/vim/patches/7.3.345 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.345 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.345 +Problem: When switching language with ":lang" the window title doesn't + change until later. +Solution: Update the window title right away. (Dominique Pelle) +Files: src/ex_cmds2.c + + +*** ../vim-7.3.344/src/ex_cmds2.c 2011-06-26 04:25:24.000000000 +0200 +--- src/ex_cmds2.c 2011-10-20 21:31:09.000000000 +0200 +*************** +*** 4154,4159 **** +--- 4154,4162 ---- + /* Set v:lang, v:lc_time and v:ctype to the final result. */ + set_lang_var(); + # endif ++ # ifdef FEAT_TITLE ++ maketitle(); ++ # endif + } + } + } +*** ../vim-7.3.344/src/version.c 2011-10-20 21:27:57.000000000 +0200 +--- src/version.c 2011-10-20 21:38:32.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 345, + /**/ + +-- +You can't have everything. Where would you put it? + -- Steven Wright + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.346 b/source/ap/vim/patches/7.3.346 new file mode 100644 index 00000000..e6b1a2b6 --- /dev/null +++ b/source/ap/vim/patches/7.3.346 @@ -0,0 +1,143 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.346 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.346 +Problem: It's hard to test netbeans commands. +Solution: Process netbeans commands after :sleep. (Xavier de Gaye) +Files: runtime/doc/netbeans.txt, src/ex_docmd.c, src/netbeans.c + + +*** ../vim-7.3.345/runtime/doc/netbeans.txt 2010-09-29 17:26:57.000000000 +0200 +--- runtime/doc/netbeans.txt 2011-10-20 21:51:41.000000000 +0200 +*************** +*** 1,4 **** +! *netbeans.txt* For Vim version 7.3. Last change: 2010 Aug 20 + + + VIM REFERENCE MANUAL by Gordon Prieur et al. +--- 1,4 ---- +! *netbeans.txt* For Vim version 7.3. Last change: 2011 Oct 20 + + + VIM REFERENCE MANUAL by Gordon Prieur et al. +*************** +*** 263,268 **** +--- 263,274 ---- + plain UTF-8 text this protocol could also be used with any other communication + mechanism. + ++ Netbeans messages are processed when Vim is idle, waiting for user input. ++ When Vim is run in non-interactive mode, for example when running an automated ++ test case that sources a Vim script, the idle loop may not be called often ++ enough. In that case, insert |sleep| commands in the Vim script. The |sleep| ++ command does invoke Netbeans messages processing. ++ + 6.1 Kinds of messages |nb-messages| + 6.2 Terms |nb-terms| + 6.3 Commands |nb-commands| +*************** +*** 820,826 **** + ============================================================================== + 7. NetBeans commands *netbeans-commands* + +! *:nbstart* *E511* + :nbs[tart] {connection} Start a new Netbeans session with {connection} as the + socket connection parameters. The format of + {connection} is described in |netbeans-parameters|. +--- 826,832 ---- + ============================================================================== + 7. NetBeans commands *netbeans-commands* + +! *:nbstart* *E511* *E838* + :nbs[tart] {connection} Start a new Netbeans session with {connection} as the + socket connection parameters. The format of + {connection} is described in |netbeans-parameters|. +*************** +*** 833,843 **** + signs. + + *:nbkey* +! :nb[key] {key} Pass the {key} to the Vim Controller for processing +! +! When a hot-key has been installed with the specialKeys command, this command +! can be used to generate a hotkey messages to the Vim Controller. The events +! newDotAndMark, keyCommand and keyAtPos are generated (in this order). + + + ============================================================================== +--- 839,854 ---- + signs. + + *:nbkey* +! :nb[key] {key} Pass the {key} to the Vim Controller for processing. +! When a hot-key has been installed with the specialKeys +! command, this command can be used to generate a hotkey +! message to the Vim Controller. +! This command can also be used to pass any text to the +! Vim Controller. It is used by Pyclewn, for example, +! to build the complete set of gdb commands as Vim user +! commands. +! The events newDotAndMark, keyCommand and keyAtPos are +! generated (in this order). + + + ============================================================================== +*** ../vim-7.3.345/src/ex_docmd.c 2011-09-30 18:35:49.000000000 +0200 +--- src/ex_docmd.c 2011-10-20 21:50:06.000000000 +0200 +*************** +*** 8205,8210 **** +--- 8205,8216 ---- + { + ui_delay(msec - done > 1000L ? 1000L : msec - done, TRUE); + ui_breakcheck(); ++ #ifdef FEAT_NETBEANS_INTG ++ /* Process the netbeans messages that may have been received in the ++ * call to ui_breakcheck() when the GUI is in use. This may occur when ++ * running a test case. */ ++ netbeans_parse_messages(); ++ #endif + } + } + +*** ../vim-7.3.345/src/netbeans.c 2011-04-11 21:35:03.000000000 +0200 +--- src/netbeans.c 2011-10-20 21:47:17.000000000 +0200 +*************** +*** 14,19 **** +--- 14,26 ---- + * which are *between* characters, whereas vim uses line number + * and column number which are *on* characters. + * See ":help netbeans-protocol" for explanation. ++ * ++ * The Netbeans messages are received and queued in the gui event loop, or in ++ * the select loop when Vim runs in a terminal. These messages are processed ++ * by netbeans_parse_messages() which is invoked in the idle loop when Vim is ++ * waiting for user input. The function netbeans_parse_messages() is also ++ * called from the ":sleep" command, to allow the execution of test cases that ++ * may not invoke the idle loop. + */ + + #include "vim.h" +*** ../vim-7.3.345/src/version.c 2011-10-20 21:57:43.000000000 +0200 +--- src/version.c 2011-10-20 21:50:23.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 346, + /**/ + +-- +From "know your smileys": + ...---... SOS + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.347 b/source/ap/vim/patches/7.3.347 new file mode 100644 index 00000000..85b0feb7 --- /dev/null +++ b/source/ap/vim/patches/7.3.347 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.347 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.347 +Problem: When dropping text from a browser on Vim it receives HTML even + though "html" is excluded from 'clipboard'. (Andrei Avk) +Solution: Fix the condition for TARGET_HTML. +Files: src/gui_gtk_x11.c + + +*** ../vim-7.3.346/src/gui_gtk_x11.c 2011-08-10 17:44:41.000000000 +0200 +--- src/gui_gtk_x11.c 2011-10-23 20:56:38.000000000 +0200 +*************** +*** 3081,3087 **** + + for (i = 0; i < (int)N_DND_TARGETS; ++i) + { +! if (!clip_html && selection_targets[i].info == TARGET_HTML) + n_targets--; + else + targets[j++] = dnd_targets[i]; +--- 3081,3087 ---- + + for (i = 0; i < (int)N_DND_TARGETS; ++i) + { +! if (!clip_html && dnd_targets[i].info == TARGET_HTML) + n_targets--; + else + targets[j++] = dnd_targets[i]; +*** ../vim-7.3.346/src/version.c 2011-10-20 21:58:20.000000000 +0200 +--- src/version.c 2011-10-26 11:35:23.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 347, + /**/ + +-- +I AM THANKFUL... +...for a lawn that needs mowing, windows that need cleaning +and gutters that need fixing because it means I have a 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 /// diff --git a/source/ap/vim/patches/7.3.348 b/source/ap/vim/patches/7.3.348 new file mode 100644 index 00000000..e92febb9 --- /dev/null +++ b/source/ap/vim/patches/7.3.348 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.348 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.348 +Problem: "call range(1, 947948399)" causes a crash. (ZyX) +Solution: Avoid a loop in the out of memory message. +Files: src/misc2.c + + +*** ../vim-7.3.347/src/misc2.c 2011-08-19 22:28:58.000000000 +0200 +--- src/misc2.c 2011-10-26 11:17:26.000000000 +0200 +*************** +*** 1012,1019 **** + { + /* Don't hide this message */ + emsg_silent = 0; +! EMSGN(_("E342: Out of memory! (allocating %lu bytes)"), size); + did_outofmem_msg = TRUE; + } + } + +--- 1012,1023 ---- + { + /* Don't hide this message */ + emsg_silent = 0; +! +! /* Must come first to avoid coming back here when printing the error +! * message fails, e.g. when setting v:errmsg. */ + did_outofmem_msg = TRUE; ++ ++ EMSGN(_("E342: Out of memory! (allocating %lu bytes)"), size); + } + } + +*** ../vim-7.3.347/src/version.c 2011-10-26 11:36:21.000000000 +0200 +--- src/version.c 2011-10-26 11:38:33.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 348, + /**/ + +-- +A fool learns from his mistakes, a wise man from someone else's. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.349 b/source/ap/vim/patches/7.3.349 new file mode 100644 index 00000000..ac519afe --- /dev/null +++ b/source/ap/vim/patches/7.3.349 @@ -0,0 +1,88 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.349 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.349 +Problem: When running out of memory during startup trying to open a + swapfile will loop forever. +Solution: Let findswapname() set dirp to NULL if out of memory. +Files: src/memline.c + + +*** ../vim-7.3.348/src/memline.c 2011-06-13 01:07:22.000000000 +0200 +--- src/memline.c 2011-10-26 11:26:06.000000000 +0200 +*************** +*** 621,626 **** +--- 621,628 ---- + break; + fname = findswapname(buf, &dirp, mfp->mf_fname); + /* alloc's fname */ ++ if (dirp == NULL) /* out of memory */ ++ break; + if (fname == NULL) /* no file name found for this dir */ + continue; + +*************** +*** 744,749 **** +--- 746,753 ---- + * and creating it, another Vim creates the file. In that case the + * creation will fail and we will use another directory. */ + fname = findswapname(buf, &dirp, NULL); /* allocates fname */ ++ if (dirp == NULL) ++ break; /* out of memory */ + if (fname == NULL) + continue; + if (mf_open_file(mfp, fname) == OK) /* consumes fname! */ +*************** +*** 4114,4119 **** +--- 4118,4124 ---- + * + * Several names are tried to find one that does not exist + * Returns the name in allocated memory or NULL. ++ * When out of memory "dirp" is set to NULL. + * + * Note: If BASENAMELEN is not correct, you will get error messages for + * not being able to open the swap or undo file +*************** +*** 4157,4163 **** + * First allocate some memory to put the directory name in. + */ + dir_name = alloc((unsigned)STRLEN(*dirp) + 1); +! if (dir_name != NULL) + (void)copy_option_part(dirp, dir_name, 31000, ","); + + /* +--- 4162,4170 ---- + * First allocate some memory to put the directory name in. + */ + dir_name = alloc((unsigned)STRLEN(*dirp) + 1); +! if (dir_name == NULL) +! *dirp = NULL; +! else + (void)copy_option_part(dirp, dir_name, 31000, ","); + + /* +*** ../vim-7.3.348/src/version.c 2011-10-26 11:40:56.000000000 +0200 +--- src/version.c 2011-10-26 11:43:05.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 349, + /**/ + +-- +I AM THANKFUL... +...for all the complaining I hear about the government +because it means we have freedom of speech. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.350 b/source/ap/vim/patches/7.3.350 new file mode 100644 index 00000000..5a1f3327 --- /dev/null +++ b/source/ap/vim/patches/7.3.350 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.350 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.350 +Problem: Block of code after ":lua << EOF" may not work. (Paul Isambert) +Solution: Recognize the ":lua" command, skip to EOF. +Files: src/eval.c + + +*** ../vim-7.3.349/src/eval.c 2011-09-30 18:35:49.000000000 +0200 +--- src/eval.c 2011-10-26 13:12:06.000000000 +0200 +*************** +*** 20899,20904 **** +--- 20899,20906 ---- + && (!ASCII_ISALPHA(p[2]) || p[2] == 'r')) + || (p[0] == 't' && p[1] == 'c' + && (!ASCII_ISALPHA(p[2]) || p[2] == 'l')) ++ || (p[0] == 'l' && p[1] == 'u' && p[2] == 'a' ++ && !ASCII_ISALPHA(p[3])) + || (p[0] == 'r' && p[1] == 'u' && p[2] == 'b' + && (!ASCII_ISALPHA(p[3]) || p[3] == 'y')) + || (p[0] == 'm' && p[1] == 'z' +*** ../vim-7.3.349/src/version.c 2011-10-26 11:44:15.000000000 +0200 +--- src/version.c 2011-10-26 13:13:21.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 350, + /**/ + +-- +From "know your smileys": + :-| :-| Deja' vu! + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.351 b/source/ap/vim/patches/7.3.351 new file mode 100644 index 00000000..15b2194c --- /dev/null +++ b/source/ap/vim/patches/7.3.351 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.351 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.351 +Problem: Text formatting uses start of insert position when it should not. + (Peter Wagenaar) +Solution: Do not use Insstart when intentionally formatting. +Files: src/edit.c + + +*** ../vim-7.3.350/src/edit.c 2011-09-21 18:23:02.000000000 +0200 +--- src/edit.c 2011-10-26 16:58:21.000000000 +0200 +*************** +*** 6078,6083 **** +--- 6078,6084 ---- + * Stop at first entered white when 'formatoptions' has 'v' + */ + while ((!fo_ins_blank && !has_format_option(FO_INS_VI)) ++ || (flags & INSCHAR_FORMAT) + || curwin->w_cursor.lnum != Insstart.lnum + || curwin->w_cursor.col >= Insstart.col) + { +*** ../vim-7.3.350/src/version.c 2011-10-26 13:19:23.000000000 +0200 +--- src/version.c 2011-10-26 17:03:37.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 351, + /**/ + +-- +From "know your smileys": + :-* A big kiss! + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.352 b/source/ap/vim/patches/7.3.352 new file mode 100644 index 00000000..52842cfc --- /dev/null +++ b/source/ap/vim/patches/7.3.352 @@ -0,0 +1,108 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.352 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.352 +Problem: When completing methods dict functions and script-local functions + get in the way. +Solution: Sort function names starting with "<" to the end. (Yasuhiro + Matsumoto) +Files: src/ex_getln.c + + +*** ../vim-7.3.351/src/ex_getln.c 2011-09-30 17:46:14.000000000 +0200 +--- src/ex_getln.c 2011-10-26 21:37:53.000000000 +0200 +*************** +*** 121,126 **** +--- 121,134 ---- + static int ex_window __ARGS((void)); + #endif + ++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO) ++ static int ++ #ifdef __BORLANDC__ ++ _RTLENTRYF ++ #endif ++ sort_func_compare __ARGS((const void *s1, const void *s2)); ++ #endif ++ + /* + * getcmdline() - accept a command line starting with firstc. + * +*************** +*** 3286,3291 **** +--- 3294,3317 ---- + return check_abbr(c, ccline.cmdbuff, ccline.cmdpos, 0); + } + ++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO) ++ static int ++ #ifdef __BORLANDC__ ++ _RTLENTRYF ++ #endif ++ sort_func_compare(s1, s2) ++ const void *s1; ++ const void *s2; ++ { ++ char_u *p1 = *(char_u **)s1; ++ char_u *p2 = *(char_u **)s2; ++ ++ if (*p1 != '<' && *p2 == '<') return -1; ++ if (*p1 == '<' && *p2 != '<') return 1; ++ return STRCMP(p1, p2); ++ } ++ #endif ++ + /* + * Return FAIL if this is not an appropriate context in which to do + * completion of anything, return OK if it is (even if there are no matches). +*************** +*** 4735,4741 **** + + /* Sort the results. Keep menu's in the specified order. */ + if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS) +! sort_strings(*file, *num_file); + + #ifdef FEAT_CMDL_COMPL + /* Reset the variables used for special highlight names expansion, so that +--- 4761,4776 ---- + + /* Sort the results. Keep menu's in the specified order. */ + if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS) +! { +! if (xp->xp_context == EXPAND_EXPRESSION +! || xp->xp_context == EXPAND_FUNCTIONS +! || xp->xp_context == EXPAND_USER_FUNC) +! /* <SNR> functions should be sorted to the end. */ +! qsort((void *)*file, (size_t)*num_file, sizeof(char_u *), +! sort_func_compare); +! else +! sort_strings(*file, *num_file); +! } + + #ifdef FEAT_CMDL_COMPL + /* Reset the variables used for special highlight names expansion, so that +*** ../vim-7.3.351/src/version.c 2011-10-26 17:04:23.000000000 +0200 +--- src/version.c 2011-10-26 21:49:53.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 352, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +94. Now admit it... How many of you have made "modem noises" into + the phone just to see if it was possible? :-) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.353 b/source/ap/vim/patches/7.3.353 new file mode 100644 index 00000000..1846243e --- /dev/null +++ b/source/ap/vim/patches/7.3.353 @@ -0,0 +1,155 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.353 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.353 (after 7.3.343) +Problem: Missing part of the urxvt patch. +Solution: Add the change in term.c +Files: src/term.c + + +*** ../vim-7.3.352/src/term.c 2011-09-14 14:43:21.000000000 +0200 +--- src/term.c 2011-10-26 23:48:01.000000000 +0200 +*************** +*** 4008,4014 **** + } + + #ifdef FEAT_TERMRESPONSE +! if (key_name[0] == NUL) + { + /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also + * eat other possible responses to t_RV, rxvt returns +--- 4008,4016 ---- + } + + #ifdef FEAT_TERMRESPONSE +! if (key_name[0] == NUL +! /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */ +! || key_name[0] == KS_URXVT_MOUSE) + { + /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also + * eat other possible responses to t_RV, rxvt returns +*************** +*** 4047,4053 **** + if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) + { + /* if xterm version >= 95 use mouse dragging */ +! if (extra >= 95) + set_option_value((char_u *)"ttym", 0L, + (char_u *)"xterm2", 0); + /* if xterm version >= 141 try to get termcap codes */ +--- 4049,4055 ---- + if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) + { + /* if xterm version >= 95 use mouse dragging */ +! if (extra >= 95 && ttym_flags != TTYM_URXVT) + set_option_value((char_u *)"ttym", 0L, + (char_u *)"xterm2", 0); + /* if xterm version >= 141 try to get termcap codes */ +*************** +*** 4141,4146 **** +--- 4143,4151 ---- + # ifdef FEAT_MOUSE_PTERM + || key_name[0] == (int)KS_PTERM_MOUSE + # endif ++ # ifdef FEAT_MOUSE_URXVT ++ || key_name[0] == (int)KS_URXVT_MOUSE ++ # endif + ) + { + is_click = is_drag = FALSE; +*************** +*** 4219,4225 **** +--- 4224,4292 ---- + else + break; + } ++ } ++ ++ # ifdef FEAT_MOUSE_URXVT ++ if (key_name[0] == (int)KS_URXVT_MOUSE) ++ { ++ for (;;) ++ { ++ /* URXVT 1015 mouse reporting mode: ++ * Almost identical to xterm mouse mode, except the values ++ * are decimal instead of bytes. ++ * ++ * \033[%d;%d;%dM ++ * ^-- row ++ * ^----- column ++ * ^-------- code ++ */ ++ p = tp + slen; ++ ++ mouse_code = getdigits(&p); ++ if (*p++ != ';') ++ return -1; ++ ++ mouse_col = getdigits(&p) - 1; ++ if (*p++ != ';') ++ return -1; ++ ++ mouse_row = getdigits(&p) - 1; ++ if (*p++ != 'M') ++ return -1; ++ ++ slen += (int)(p - (tp + slen)); ++ ++ /* skip this one if next one has same code (like xterm ++ * case) */ ++ j = termcodes[idx].len; ++ if (STRNCMP(tp, tp + slen, (size_t)j) == 0) { ++ /* check if the command is complete by looking for the ++ * M */ ++ int slen2; ++ int cmd_complete = 0; ++ for (slen2 = slen; slen2 < len; slen2++) { ++ if (tp[slen2] == 'M') { ++ cmd_complete = 1; ++ break; ++ } ++ } ++ p += j; ++ if (cmd_complete && getdigits(&p) == mouse_code) { ++ slen += j; /* skip the \033[ */ ++ continue; ++ } ++ } ++ break; ++ } ++ } ++ # endif + ++ if (key_name[0] == (int)KS_MOUSE ++ #ifdef FEAT_MOUSE_URXVT ++ || key_name[0] == (int)KS_URXVT_MOUSE ++ #endif ++ ) ++ { + # if !defined(MSWIN) && !defined(MSDOS) + /* + * Handle mouse events. +*** ../vim-7.3.352/src/version.c 2011-10-26 22:02:10.000000000 +0200 +--- src/version.c 2011-10-26 23:43:26.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 353, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +99. The hum of a cooling fan and the click of keys is comforting to you. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.354 b/source/ap/vim/patches/7.3.354 new file mode 100644 index 00000000..8250f9af --- /dev/null +++ b/source/ap/vim/patches/7.3.354 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.354 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.354 +Problem: ":set backspace+=eol" doesn't work when 'backspace' has a + backwards compatible value of 2. +Solution: Convert the number to a string. (Hirohito Higashi) +Files: src/option.c + + +*** ../vim-7.3.353/src/option.c 2011-10-12 16:57:07.000000000 +0200 +--- src/option.c 2011-11-30 11:11:15.000000000 +0100 +*************** +*** 4567,4572 **** +--- 4567,4597 ---- + arg = errbuf; + } + /* ++ * Convert 'backspace' number to string, for ++ * adding, prepending and removing string. ++ */ ++ else if (varp == (char_u *)&p_bs ++ && VIM_ISDIGIT(**(char_u **)varp)) ++ { ++ i = getdigits((char_u **)varp); ++ switch (i) ++ { ++ case 0: ++ *(char_u **)varp = empty_option; ++ break; ++ case 1: ++ *(char_u **)varp = vim_strsave( ++ (char_u *)"indent,eol"); ++ break; ++ case 2: ++ *(char_u **)varp = vim_strsave( ++ (char_u *)"indent,eol,start"); ++ break; ++ } ++ vim_free(oldval); ++ oldval = *(char_u **)varp; ++ } ++ /* + * Convert 'whichwrap' number to string, for + * backwards compatibility with Vim 3.0. + * Misuse errbuf[] for the resulting string. +*** ../vim-7.3.353/src/version.c 2011-10-26 23:48:17.000000000 +0200 +--- src/version.c 2011-11-30 11:14:44.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 354, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +206. You religiously respond immediately to e-mail, while ignoring + your growing pile of snail mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.355 b/source/ap/vim/patches/7.3.355 new file mode 100644 index 00000000..51bc3b7f --- /dev/null +++ b/source/ap/vim/patches/7.3.355 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.355 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.355 +Problem: GTK warnings when using netrw.vim. (Ivan Krasilnikov) +Solution: Do not remove the beval event handler twice. +Files: src/option.c + + +*** ../vim-7.3.354/src/option.c 2011-11-30 11:15:40.000000000 +0100 +--- src/option.c 2011-11-30 11:11:15.000000000 +0100 +*************** +*** 7796,7804 **** + #ifdef FEAT_BEVAL + else if ((int *)varp == &p_beval) + { +! if (p_beval == TRUE) + gui_mch_enable_beval_area(balloonEval); +! else + gui_mch_disable_beval_area(balloonEval); + } + #endif +--- 7796,7804 ---- + #ifdef FEAT_BEVAL + else if ((int *)varp == &p_beval) + { +! if (p_beval && !old_value) + gui_mch_enable_beval_area(balloonEval); +! else if (!p_beval && old_value) + gui_mch_disable_beval_area(balloonEval); + } + #endif +*** ../vim-7.3.354/src/version.c 2011-11-30 11:15:40.000000000 +0100 +--- src/version.c 2011-11-30 11:30:55.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 355, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +209. Your house stinks because you haven't cleaned it in a week. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.356 b/source/ap/vim/patches/7.3.356 new file mode 100644 index 00000000..8b5572bd --- /dev/null +++ b/source/ap/vim/patches/7.3.356 @@ -0,0 +1,79 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.356 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.356 +Problem: Using "o" with 'cindent' set may freeze Vim. (lolilolicon) +Solution: Skip over {} correctly. (Hari G) +Files: src/misc1.c + + +*** ../vim-7.3.355/src/misc1.c 2011-10-04 18:03:43.000000000 +0200 +--- src/misc1.c 2011-11-30 12:56:55.000000000 +0100 +*************** +*** 6127,6133 **** + + /* + * Set w_cursor.col to the column number of the last unmatched ')' or '{' in +! * line "l". + */ + static int + find_last_paren(l, start, end) +--- 6127,6133 ---- + + /* + * Set w_cursor.col to the column number of the last unmatched ')' or '{' in +! * line "l". "l" must point to the start of the line. + */ + static int + find_last_paren(l, start, end) +*************** +*** 6140,6146 **** + + curwin->w_cursor.col = 0; /* default is start of line */ + +! for (i = 0; l[i]; i++) + { + i = (int)(cin_skipcomment(l + i) - l); /* ignore parens in comments */ + i = (int)(skip_string(l + i) - l); /* ignore parens in quotes */ +--- 6140,6146 ---- + + curwin->w_cursor.col = 0; /* default is start of line */ + +! for (i = 0; l[i] != NUL; i++) + { + i = (int)(cin_skipcomment(l + i) - l); /* ignore parens in comments */ + i = (int)(skip_string(l + i) - l); /* ignore parens in quotes */ +*************** +*** 7953,7958 **** +--- 7953,7959 ---- + * If we're at the end of a block, skip to the start of + * that block. + */ ++ l = ml_get_curline(); + if (find_last_paren(l, '{', '}') + && (trypos = find_start_brace(ind_maxcomment)) + != NULL) /* XXX */ +*** ../vim-7.3.355/src/version.c 2011-11-30 11:31:25.000000000 +0100 +--- src/version.c 2011-11-30 13:02:52.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 356, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +213. Your kids start referring to you as "that guy in front of the monitor." + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.357 b/source/ap/vim/patches/7.3.357 new file mode 100644 index 00000000..893a6bb4 --- /dev/null +++ b/source/ap/vim/patches/7.3.357 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.357 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.357 +Problem: Compiler warning in MS-Windows console build. +Solution: Adjust return type of PrintHookProc(). (Mike Williams) +Files: src/os_mswin.c + + +*** ../vim-7.3.356/src/os_mswin.c 2011-09-21 20:09:38.000000000 +0200 +--- src/os_mswin.c 2011-11-30 13:41:13.000000000 +0100 +*************** +*** 1869,1875 **** + + #ifndef FEAT_GUI + +! static UINT CALLBACK + PrintHookProc( + HWND hDlg, // handle to dialog box + UINT uiMsg, // message identifier +--- 1869,1875 ---- + + #ifndef FEAT_GUI + +! static UINT_PTR CALLBACK + PrintHookProc( + HWND hDlg, // handle to dialog box + UINT uiMsg, // message identifier +*** ../vim-7.3.356/src/version.c 2011-11-30 13:03:24.000000000 +0100 +--- src/version.c 2011-11-30 13:41:55.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 357, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +215. Your mouse-clicking forearm rivals Popeye's. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.358 b/source/ap/vim/patches/7.3.358 new file mode 100644 index 00000000..b9b385f8 --- /dev/null +++ b/source/ap/vim/patches/7.3.358 @@ -0,0 +1,74 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.358 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.358 (after 7.3.353) +Problem: Mouse support doesn't work properly. +Solution: Add HMT_URXVT. (lilydjwg, James McCoy) +Files: src/term.c + + +*** ../vim-7.3.357/src/term.c 2011-10-26 23:48:17.000000000 +0200 +--- src/term.c 2011-11-30 14:42:22.000000000 +0100 +*************** +*** 1996,2001 **** +--- 1996,2002 ---- + # define HMT_DEC 4 + # define HMT_JSBTERM 8 + # define HMT_PTERM 16 ++ # define HMT_URXVT 32 + static int has_mouse_termcode = 0; + # endif + +*************** +*** 2031,2036 **** +--- 2032,2042 ---- + has_mouse_termcode |= HMT_PTERM; + else + # endif ++ # ifdef FEAT_MOUSE_URXVT ++ if (n == KS_URXVT_MOUSE) ++ has_mouse_termcode |= HMT_URXVT; ++ else ++ # endif + has_mouse_termcode |= HMT_NORMAL; + # endif + } +*************** +*** 2068,2073 **** +--- 2074,2084 ---- + has_mouse_termcode &= ~HMT_PTERM; + else + # endif ++ # ifdef FEAT_MOUSE_URXVT ++ if (n == KS_URXVT_MOUSE) ++ has_mouse_termcode &= ~HMT_URXVT; ++ else ++ # endif + has_mouse_termcode &= ~HMT_NORMAL; + # endif + } +*** ../vim-7.3.357/src/version.c 2011-11-30 13:42:40.000000000 +0100 +--- src/version.c 2011-11-30 14:45:06.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 358, + /**/ + +-- +I noticed my daughter's Disney-net password on a sticky note: +"MickeyMinnieGoofyPluto". I asked her why it was so long. +"Because they say it has to have at least four characters." + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.359 b/source/ap/vim/patches/7.3.359 new file mode 100644 index 00000000..7fbd3f6f --- /dev/null +++ b/source/ap/vim/patches/7.3.359 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.359 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.359 +Problem: Command line completion shows dict functions. +Solution: Skip dict functions for completion. (Yasuhiro Matsumoto) +Files: src/eval.c + + +*** ../vim-7.3.358/src/eval.c 2011-10-26 13:19:23.000000000 +0200 +--- src/eval.c 2011-11-30 14:53:38.000000000 +0100 +*************** +*** 875,881 **** + + #ifdef EBCDIC + /* +! * Sort the function table, to enable binary sort. + */ + sortFunctions(); + #endif +--- 875,881 ---- + + #ifdef EBCDIC + /* +! * Sort the function table, to enable binary search. + */ + sortFunctions(); + #endif +*************** +*** 21737,21742 **** +--- 21737,21745 ---- + ++hi; + fp = HI2UF(hi); + ++ if (fp->uf_flags & FC_DICT) ++ return NULL; /* don't show dict functions */ ++ + if (STRLEN(fp->uf_name) + 4 >= IOSIZE) + return fp->uf_name; /* prevents overflow */ + +*** ../vim-7.3.358/src/version.c 2011-11-30 14:47:12.000000000 +0100 +--- src/version.c 2011-11-30 14:56:57.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 359, + /**/ + +-- +'Psychologist' -- Someone who looks at everyone else when +an attractive woman enters the room. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.360 b/source/ap/vim/patches/7.3.360 new file mode 100644 index 00000000..de153c83 --- /dev/null +++ b/source/ap/vim/patches/7.3.360 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.360 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.360 +Problem: Interrupting the load of an autoload function may cause a crash. +Solution: Do not use the hashitem when not valid. (Yukihiro Nakadaira) +Files: src/eval.c + + +*** ../vim-7.3.359/src/eval.c 2011-11-30 14:57:26.000000000 +0100 +--- src/eval.c 2011-11-30 15:06:53.000000000 +0100 +*************** +*** 19589,19597 **** + * worked find the variable again. Don't auto-load a script if it was + * loaded already, otherwise it would be loaded every time when + * checking if a function name is a Funcref variable. */ +! if (ht == &globvarht && !writing +! && script_autoload(varname, FALSE) && !aborting()) + hi = hash_find(ht, varname); + if (HASHITEM_EMPTY(hi)) + return NULL; + } +--- 19589,19602 ---- + * worked find the variable again. Don't auto-load a script if it was + * loaded already, otherwise it would be loaded every time when + * checking if a function name is a Funcref variable. */ +! if (ht == &globvarht && !writing) +! { +! /* Note: script_autoload() may make "hi" invalid. It must either +! * be obtained again or not used. */ +! if (!script_autoload(varname, FALSE) || aborting()) +! return NULL; + hi = hash_find(ht, varname); ++ } + if (HASHITEM_EMPTY(hi)) + return NULL; + } +*** ../vim-7.3.359/src/version.c 2011-11-30 14:57:26.000000000 +0100 +--- src/version.c 2011-11-30 15:17:28.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 360, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +217. Your sex life has drastically improved...so what if it's only cyber-sex! + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.361 b/source/ap/vim/patches/7.3.361 new file mode 100644 index 00000000..c128057f --- /dev/null +++ b/source/ap/vim/patches/7.3.361 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.361 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.361 +Problem: Accessing memory after it is freed when EXITFREE is defined. +Solution: Don't access curwin when firstwin is NULL. (Dominique Pelle) +Files: src/buffer.c + +*** ../vim-7.3.360/src/buffer.c 2011-09-14 17:50:05.000000000 +0200 +--- src/buffer.c 2011-11-30 15:38:00.000000000 +0100 +*************** +*** 567,574 **** + diff_buf_delete(buf); /* Can't use 'diff' for unloaded buffer. */ + #endif + #ifdef FEAT_SYN_HL +! if (curwin->w_buffer == buf) +! reset_synblock(curwin); /* remove any ownsyntax */ + #endif + + #ifdef FEAT_FOLDING +--- 567,575 ---- + diff_buf_delete(buf); /* Can't use 'diff' for unloaded buffer. */ + #endif + #ifdef FEAT_SYN_HL +! /* Remove any ownsyntax, unless exiting. */ +! if (firstwin != NULL && curwin->w_buffer == buf) +! reset_synblock(curwin); + #endif + + #ifdef FEAT_FOLDING +*** ../vim-7.3.360/src/version.c 2011-11-30 15:19:25.000000000 +0100 +--- src/version.c 2011-11-30 15:40:22.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 361, + /**/ + + +-- +From the classified section of a city newspaper: +Dog for sale: eats anything and is fond of children. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.362 b/source/ap/vim/patches/7.3.362 new file mode 100644 index 00000000..00568861 --- /dev/null +++ b/source/ap/vim/patches/7.3.362 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.362 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.362 +Problem: ml_get error when using ":g" with folded lines. +Solution: Adjust the line number for changed_lines(). (Christian Brabandt) +Files: src/ex_cmds.c + + +*** ../vim-7.3.361/src/ex_cmds.c 2011-10-20 18:17:38.000000000 +0200 +--- src/ex_cmds.c 2011-11-30 16:58:34.000000000 +0100 +*************** +*** 820,826 **** + curwin->w_cursor.lnum = dest + (line2 - line1) + 1; + + if (line1 < dest) +! changed_lines(line1, 0, dest + num_lines + 1, 0L); + else + changed_lines(dest + 1, 0, line1 + num_lines, 0L); + +--- 820,832 ---- + curwin->w_cursor.lnum = dest + (line2 - line1) + 1; + + if (line1 < dest) +! { +! dest += num_lines + 1; +! last_line = curbuf->b_ml.ml_line_count; +! if (dest > last_line + 1) +! dest = last_line + 1; +! changed_lines(line1, 0, dest, 0L); +! } + else + changed_lines(dest + 1, 0, line1 + num_lines, 0L); + +*** ../vim-7.3.361/src/version.c 2011-11-30 15:40:51.000000000 +0100 +--- src/version.c 2011-11-30 17:01:07.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 362, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +218. Your spouse hands you a gift wrapped magnet with your PC's name + on it and you accuse him or her of genocide. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.363 b/source/ap/vim/patches/7.3.363 new file mode 100644 index 00000000..10ab5482 --- /dev/null +++ b/source/ap/vim/patches/7.3.363 @@ -0,0 +1,110 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.363 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.363 +Problem: C indenting is wrong after #endif followed by a semicolon. +Solution: Add special handling for a semicolon in a line by itself. (Lech + Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.362/src/misc1.c 2011-11-30 13:03:24.000000000 +0100 +--- src/misc1.c 2011-11-30 17:10:59.000000000 +0100 +*************** +*** 8143,8148 **** +--- 8143,8171 ---- + break; + + /* ++ * Find a line only has a semicolon that belongs to a previous ++ * line ending in '}', e.g. before an #endif. Don't increase ++ * indent then. ++ */ ++ if (*(look = skipwhite(l)) == ';' && cin_nocode(look + 1)) ++ { ++ pos_T curpos_save = curwin->w_cursor; ++ ++ while (curwin->w_cursor.lnum > 1) ++ { ++ look = ml_get(--curwin->w_cursor.lnum); ++ if (!(cin_nocode(look) || cin_ispreproc_cont( ++ &look, &curwin->w_cursor.lnum))) ++ break; ++ } ++ if (curwin->w_cursor.lnum > 0 ++ && cin_ends_in(look, (char_u *)"}", NULL)) ++ break; ++ ++ curwin->w_cursor = curpos_save; ++ } ++ ++ /* + * If the PREVIOUS line is a function declaration, the current + * line (and the ones that follow) needs to be indented as + * parameters. +*** ../vim-7.3.362/src/testdir/test3.in 2011-10-04 18:03:43.000000000 +0200 +--- src/testdir/test3.in 2011-11-30 17:05:20.000000000 +0100 +*************** +*** 1454,1459 **** +--- 1454,1469 ---- + printf("This line used to be indented incorrectly.\n"); + } + ++ int foo[] ++ #ifdef BAR ++ ++ = { 1, 2, 3, ++ 4, 5, 6 } ++ ++ #endif ++ ; ++ int baz; ++ + void func3(void) + { + int tab[] = { +*** ../vim-7.3.362/src/testdir/test3.ok 2011-10-04 18:03:43.000000000 +0200 +--- src/testdir/test3.ok 2011-11-30 17:05:20.000000000 +0100 +*************** +*** 1307,1312 **** +--- 1307,1322 ---- + printf("This line used to be indented incorrectly.\n"); + } + ++ int foo[] ++ #ifdef BAR ++ ++ = { 1, 2, 3, ++ 4, 5, 6 } ++ ++ #endif ++ ; ++ int baz; ++ + void func3(void) + { + int tab[] = { +*** ../vim-7.3.362/src/version.c 2011-11-30 17:01:55.000000000 +0100 +--- src/version.c 2011-11-30 17:06:57.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 363, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +220. Your wife asks for sex and you tell her where to find you on IRC. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.364 b/source/ap/vim/patches/7.3.364 new file mode 100644 index 00000000..e62ef76d --- /dev/null +++ b/source/ap/vim/patches/7.3.364 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.364 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.364 (after 7.3.353) +Problem: Can't compile on HP-UX. (John Marriott) +Solution: Only use TTYM_URXVT when it is defined. +Files: src/term.c + + +*** ../vim-7.3.363/src/term.c 2011-11-30 14:47:12.000000000 +0100 +--- src/term.c 2011-12-01 20:53:57.000000000 +0100 +*************** +*** 4060,4066 **** + if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) + { + /* if xterm version >= 95 use mouse dragging */ +! if (extra >= 95 && ttym_flags != TTYM_URXVT) + set_option_value((char_u *)"ttym", 0L, + (char_u *)"xterm2", 0); + /* if xterm version >= 141 try to get termcap codes */ +--- 4060,4070 ---- + if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) + { + /* if xterm version >= 95 use mouse dragging */ +! if (extra >= 95 +! # ifdef TTYM_URXVT +! && ttym_flags != TTYM_URXVT +! # endif +! ) + set_option_value((char_u *)"ttym", 0L, + (char_u *)"xterm2", 0); + /* if xterm version >= 141 try to get termcap codes */ +*** ../vim-7.3.363/src/version.c 2011-11-30 17:20:18.000000000 +0100 +--- src/version.c 2011-12-01 20:56:55.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 364, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +224. You set up your own Web page. You set up a Web page for each + of your kids... and your pets. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.365 b/source/ap/vim/patches/7.3.365 new file mode 100644 index 00000000..16d5ad1b --- /dev/null +++ b/source/ap/vim/patches/7.3.365 @@ -0,0 +1,131 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.365 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.365 +Problem: Crash when using a large Unicode character in a file that has + syntax highlighting. (ngollan) +Solution: Check for going past the end of the utf tables. (Dominique Pelle) +Files: src/mbyte.c + + +*** ../vim-7.3.364/src/mbyte.c 2011-08-10 13:21:30.000000000 +0200 +--- src/mbyte.c 2011-12-08 15:09:13.000000000 +0100 +*************** +*** 2764,2782 **** + int tableSize; + { + int start, mid, end; /* indices into table */ + + start = 0; +! end = tableSize / sizeof(convertStruct); + while (start < end) + { + /* need to search further */ +! mid = (end + start) /2; + if (table[mid].rangeEnd < a) + start = mid + 1; + else + end = mid; + } +! if (table[start].rangeStart <= a && a <= table[start].rangeEnd + && (a - table[start].rangeStart) % table[start].step == 0) + return (a + table[start].offset); + else +--- 2764,2785 ---- + int tableSize; + { + int start, mid, end; /* indices into table */ ++ int entries = tableSize / sizeof(convertStruct); + + start = 0; +! end = entries; + while (start < end) + { + /* need to search further */ +! mid = (end + start) / 2; + if (table[mid].rangeEnd < a) + start = mid + 1; + else + end = mid; + } +! if (start < entries +! && table[start].rangeStart <= a +! && a <= table[start].rangeEnd + && (a - table[start].rangeStart) % table[start].step == 0) + return (a + table[start].offset); + else +*************** +*** 2791,2797 **** + utf_fold(a) + int a; + { +! return utf_convert(a, foldCase, sizeof(foldCase)); + } + + static convertStruct toLower[] = +--- 2794,2800 ---- + utf_fold(a) + int a; + { +! return utf_convert(a, foldCase, (int)sizeof(foldCase)); + } + + static convertStruct toLower[] = +*************** +*** 3119,3125 **** + return TOUPPER_LOC(a); + + /* For any other characters use the above mapping table. */ +! return utf_convert(a, toUpper, sizeof(toUpper)); + } + + int +--- 3122,3128 ---- + return TOUPPER_LOC(a); + + /* For any other characters use the above mapping table. */ +! return utf_convert(a, toUpper, (int)sizeof(toUpper)); + } + + int +*************** +*** 3152,3158 **** + return TOLOWER_LOC(a); + + /* For any other characters use the above mapping table. */ +! return utf_convert(a, toLower, sizeof(toLower)); + } + + int +--- 3155,3161 ---- + return TOLOWER_LOC(a); + + /* For any other characters use the above mapping table. */ +! return utf_convert(a, toLower, (int)sizeof(toLower)); + } + + int +*** ../vim-7.3.364/src/version.c 2011-12-01 20:59:16.000000000 +0100 +--- src/version.c 2011-12-08 15:07:53.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 365, + /**/ + +-- +Hear about the guy who played a blank tape at full blast? +The mime next door went nuts. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.366 b/source/ap/vim/patches/7.3.366 new file mode 100644 index 00000000..ddf39903 --- /dev/null +++ b/source/ap/vim/patches/7.3.366 @@ -0,0 +1,76 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.366 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.366 +Problem: A tags file with an extremely long name causes errors. +Solution: Ignore tags that are too long. (Arno Renevier) +Files: src/tag.c + + +*** ../vim-7.3.365/src/tag.c 2011-10-12 19:53:31.000000000 +0200 +--- src/tag.c 2011-12-08 13:32:51.000000000 +0100 +*************** +*** 1906,1917 **** + tagp.tagname = lbuf; + #ifdef FEAT_TAG_ANYWHITE + tagp.tagname_end = skiptowhite(lbuf); +! if (*tagp.tagname_end == NUL) /* corrupted tag line */ + #else + tagp.tagname_end = vim_strchr(lbuf, TAB); +! if (tagp.tagname_end == NULL) /* corrupted tag line */ + #endif + { + line_error = TRUE; + break; + } +--- 1906,1931 ---- + tagp.tagname = lbuf; + #ifdef FEAT_TAG_ANYWHITE + tagp.tagname_end = skiptowhite(lbuf); +! if (*tagp.tagname_end == NUL) + #else + tagp.tagname_end = vim_strchr(lbuf, TAB); +! if (tagp.tagname_end == NULL) + #endif + { ++ if (vim_strchr(lbuf, NL) == NULL) ++ { ++ /* Truncated line, ignore it. Has been reported for ++ * Mozilla JS with extremely long names. */ ++ if (p_verbose >= 5) ++ { ++ verbose_enter(); ++ MSG(_("Ignoring long line in tags file")); ++ verbose_leave(); ++ } ++ continue; ++ } ++ ++ /* Corrupted tag line. */ + line_error = TRUE; + break; + } +*** ../vim-7.3.365/src/version.c 2011-12-08 15:09:46.000000000 +0100 +--- src/version.c 2011-12-08 15:11:10.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 366, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +246. You use up your free 100 hours in less than a week. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.367 b/source/ap/vim/patches/7.3.367 new file mode 100644 index 00000000..2452d531 --- /dev/null +++ b/source/ap/vim/patches/7.3.367 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.367 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.367 +Problem: :wundo and :rundo use a wrong checksum. +Solution: Include the last line when computing the hash. (Christian Brabandt) +Files: src/undo.c + + +*** ../vim-7.3.366/src/undo.c 2011-01-22 21:25:07.000000000 +0100 +--- src/undo.c 2011-12-08 14:19:03.000000000 +0100 +*************** +*** 719,725 **** + char_u *p; + + sha256_start(&ctx); +! for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum) + { + p = ml_get(lnum); + sha256_update(&ctx, p, (UINT32_T)(STRLEN(p) + 1)); +--- 719,725 ---- + char_u *p; + + sha256_start(&ctx); +! for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; ++lnum) + { + p = ml_get(lnum); + sha256_update(&ctx, p, (UINT32_T)(STRLEN(p) + 1)); +*** ../vim-7.3.366/src/version.c 2011-12-08 15:12:08.000000000 +0100 +--- src/version.c 2011-12-08 15:13:32.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 367, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +247. You use www.switchboard.com instead of dialing 411 and 555-12-12 + for directory assistance. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.368 b/source/ap/vim/patches/7.3.368 new file mode 100644 index 00000000..958c69e7 --- /dev/null +++ b/source/ap/vim/patches/7.3.368 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.368 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.368 +Problem: Gcc complains about redefining _FORTIFY_SOURCE. +Solution: Undefine it before redefining it. +Files: src/Makefile, src/configure.in, src/auto/configure + + +*** ../vim-7.3.367/src/Makefile 2011-10-20 16:35:25.000000000 +0200 +--- src/Makefile 2011-12-08 15:16:13.000000000 +0100 +*************** +*** 561,568 **** + #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes + + # Use this with GCC to check for mistakes, unused arguments, etc. +! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -D_FORTIFY_SOURCE=1 +! #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -D_FORTIFY_SOURCE=1 -DU_DEBUG + #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers + #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter + +--- 561,568 ---- + #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes + + # Use this with GCC to check for mistakes, unused arguments, etc. +! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 +! #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DU_DEBUG + #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers + #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter + +*** ../vim-7.3.367/src/configure.in 2011-09-02 12:27:20.000000000 +0200 +--- src/configure.in 2011-12-01 20:23:22.000000000 +0100 +*************** +*** 3584,3592 **** + dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is + dnl declared as char x[1] but actually longer. Introduced in gcc 4.0. + dnl Also remove duplicate _FORTIFY_SOURCE arguments. + AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1) + if test "$gccmajor" -gt "3"; then +! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'` + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) +--- 3584,3593 ---- + dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is + dnl declared as char x[1] but actually longer. Introduced in gcc 4.0. + dnl Also remove duplicate _FORTIFY_SOURCE arguments. ++ dnl And undefine it first to avoid a warning. + AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1) + if test "$gccmajor" -gt "3"; then +! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'` + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) +*** ../vim-7.3.367/src/auto/configure 2011-09-02 12:27:20.000000000 +0200 +--- src/auto/configure 2011-12-01 20:24:02.000000000 +0100 +*************** +*** 12483,12492 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_FORTIFY_SOURCE=1" >&5 + $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; } + if test "$gccmajor" -gt "3"; then +! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +--- 12483,12492 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_FORTIFY_SOURCE=1" >&5 + $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; } + if test "$gccmajor" -gt "3"; then +! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +*** ../vim-7.3.367/src/version.c 2011-12-08 15:14:04.000000000 +0100 +--- src/version.c 2011-12-08 15:15:13.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 368, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +248. You sign your letters with your e-mail address instead of your name. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.369 b/source/ap/vim/patches/7.3.369 new file mode 100644 index 00000000..af6e7e6e --- /dev/null +++ b/source/ap/vim/patches/7.3.369 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.369 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.369 +Problem: When compiled with Gnome get an error message when using --help. +Solution: Don't fork. (Ivan Krasilnikov) +Files: src/main.c + + +*** ../vim-7.3.368/src/main.c 2011-10-04 16:43:49.000000000 +0200 +--- src/main.c 2011-12-01 20:27:11.000000000 +0100 +*************** +*** 3294,3300 **** +--- 3294,3303 ---- + #ifdef FEAT_GUI_GNOME + /* Gnome gives extra messages for --help if we continue, but not for -h. */ + if (gui.starting) ++ { + mch_msg("\n"); ++ gui.dofork = FALSE; ++ } + else + #endif + mch_exit(0); +*** ../vim-7.3.368/src/version.c 2011-12-08 15:17:28.000000000 +0100 +--- src/version.c 2011-12-08 15:57:03.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 369, + /**/ + +-- +Vi is clearly superior to emacs, since "vi" has only two characters +(and two keystrokes), while "emacs" has five. (Randy C. Ford) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.370 b/source/ap/vim/patches/7.3.370 new file mode 100644 index 00000000..26bce4d1 --- /dev/null +++ b/source/ap/vim/patches/7.3.370 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.370 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.370 +Problem: Compiler warns for unused variable in Lua interface. +Solution: Remove the variable. +Files: src/if_lua.c + + +*** ../vim-7.3.369/src/if_lua.c 2011-09-21 17:15:34.000000000 +0200 +--- src/if_lua.c 2011-12-01 20:19:17.000000000 +0100 +*************** +*** 1044,1056 **** + static int + luaV_open(lua_State *L) + { +- luaV_Buffer *b; + char_u *s = NULL; + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif + if (lua_isstring(L, 1)) s = (char_u *) lua_tostring(L, 1); +! b = luaV_pushbuffer(L, buflist_new(s, NULL, 1L, BLN_LISTED)); + return 1; + } + +--- 1044,1055 ---- + static int + luaV_open(lua_State *L) + { + char_u *s = NULL; + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif + if (lua_isstring(L, 1)) s = (char_u *) lua_tostring(L, 1); +! luaV_pushbuffer(L, buflist_new(s, NULL, 1L, BLN_LISTED)); + return 1; + } + +*** ../vim-7.3.369/src/version.c 2011-12-08 15:57:54.000000000 +0100 +--- src/version.c 2011-12-08 15:59:35.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 370, + /**/ + +-- +Emacs is a nice OS - but it lacks a good text editor. +That's why I am using Vim. --Anonymous + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.371 b/source/ap/vim/patches/7.3.371 new file mode 100644 index 00000000..1701c118 --- /dev/null +++ b/source/ap/vim/patches/7.3.371 @@ -0,0 +1,75 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.371 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.371 +Problem: Crash in autocomplete. (Greg Weber) +Solution: Check not going over allocated buffer size. +Files: src/misc2.c + + +*** ../vim-7.3.370/src/misc2.c 2011-10-26 11:40:56.000000000 +0200 +--- src/misc2.c 2011-12-08 17:49:23.000000000 +0100 +*************** +*** 4293,4298 **** +--- 4293,4300 ---- + static int ff_path_in_stoplist __ARGS((char_u *, int, char_u **)); + #endif + ++ static char_u e_pathtoolong[] = N_("E854: path too long for completion"); ++ + #if 0 + /* + * if someone likes findfirst/findnext, here are the functions +*************** +*** 4589,4594 **** +--- 4591,4601 ---- + len = 0; + while (*wc_part != NUL) + { ++ if (len + 5 >= MAXPATHL) ++ { ++ EMSG(_(e_pathtoolong)); ++ break; ++ } + if (STRNCMP(wc_part, "**", 2) == 0) + { + ff_expand_buffer[len++] = *wc_part++; +*************** +*** 4634,4639 **** +--- 4641,4652 ---- + } + + /* create an absolute path */ ++ if (STRLEN(search_ctx->ffsc_start_dir) ++ + STRLEN(search_ctx->ffsc_fix_path) + 3 >= MAXPATHL) ++ { ++ EMSG(_(e_pathtoolong)); ++ goto error_return; ++ } + STRCPY(ff_expand_buffer, search_ctx->ffsc_start_dir); + add_pathsep(ff_expand_buffer); + STRCAT(ff_expand_buffer, search_ctx->ffsc_fix_path); +*** ../vim-7.3.370/src/version.c 2011-12-08 16:00:12.000000000 +0100 +--- src/version.c 2011-12-08 17:46:41.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 371, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +253. You wait for a slow loading web page before going to the toilet. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.372 b/source/ap/vim/patches/7.3.372 new file mode 100644 index 00000000..c9978c31 --- /dev/null +++ b/source/ap/vim/patches/7.3.372 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.372 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.372 +Problem: When using a command line mapping to <Up> with file name + completion to go one directory up, 'wildchar' is inserted. + (Yasuhiro Matsumoto) +Solution: Set the KeyTyped flag. +Files: src/ex_getln.c + + +*** ../vim-7.3.371/src/ex_getln.c 2011-10-26 22:02:10.000000000 +0200 +--- src/ex_getln.c 2011-12-08 18:40:49.000000000 +0100 +*************** +*** 645,651 **** +--- 645,655 ---- + } + else if (ccline.cmdpos > i) + cmdline_del(i); ++ ++ /* Now complete in the new directory. Set KeyTyped in case the ++ * Up key came from a mapping. */ + c = p_wc; ++ KeyTyped = TRUE; + } + } + +*** ../vim-7.3.371/src/version.c 2011-12-08 17:49:31.000000000 +0100 +--- src/version.c 2011-12-08 18:42:54.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 372, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +255. You work for a newspaper and your editor asks you to write an + article about Internet addiction...in the "first person." + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.373 b/source/ap/vim/patches/7.3.373 new file mode 100644 index 00000000..3e8937a0 --- /dev/null +++ b/source/ap/vim/patches/7.3.373 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.373 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.373 (after 7.3.366) +Problem: A tags file with an extremely long name may cause an infinite loop. +Solution: When encountering a long name switch to linear search. +Files: src/tag.c + + +*** ../vim-7.3.372/src/tag.c 2011-12-08 15:12:08.000000000 +0100 +--- src/tag.c 2011-12-14 14:13:28.000000000 +0100 +*************** +*** 1854,1860 **** + + if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic) + { +! /* binary search won't work for ignoring case, use linear + * search. */ + linear = TRUE; + state = TS_LINEAR; +--- 1854,1860 ---- + + if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic) + { +! /* Binary search won't work for ignoring case, use linear + * search. */ + linear = TRUE; + state = TS_LINEAR; +*************** +*** 1922,1927 **** +--- 1922,1940 ---- + MSG(_("Ignoring long line in tags file")); + verbose_leave(); + } ++ #ifdef FEAT_TAG_BINS ++ if (state != TS_LINEAR) ++ { ++ /* Avoid getting stuck. */ ++ linear = TRUE; ++ state = TS_LINEAR; ++ # ifdef HAVE_FSEEKO ++ fseeko(fp, search_info.low_offset, SEEK_SET); ++ # else ++ fseek(fp, (long)search_info.low_offset, SEEK_SET); ++ # endif ++ } ++ #endif + continue; + } + +*** ../vim-7.3.372/src/version.c 2011-12-08 18:44:47.000000000 +0100 +--- src/version.c 2011-12-14 14:12:06.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 373, + /**/ + +-- +ZOOT: I'm afraid our life must seem very dull and quiet compared to yours. + We are but eightscore young blondes, all between sixteen and + nineteen-and-a-half, cut off in this castle, with no one to protect us. + Oooh. It is a lonely life ... bathing ... dressing ... undressing ... + making exciting underwear.... + "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 /// diff --git a/source/ap/vim/patches/7.3.374 b/source/ap/vim/patches/7.3.374 new file mode 100644 index 00000000..b312828a --- /dev/null +++ b/source/ap/vim/patches/7.3.374 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.374 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.374 +Problem: ++encoding does not work properly. +Solution: Recognize ++encoding before ++enc. (Charles Cooper) +Files: src/ex_docmd.c + + +*** ../vim-7.3.373/src/ex_docmd.c 2011-10-20 21:58:20.000000000 +0200 +--- src/ex_docmd.c 2011-12-14 14:46:05.000000000 +0100 +*************** +*** 4840,4851 **** + #ifdef FEAT_MBYTE + else if (STRNCMP(arg, "enc", 3) == 0) + { +! arg += 3; +! pp = &eap->force_enc; +! } +! else if (STRNCMP(arg, "encoding", 8) == 0) +! { +! arg += 8; + pp = &eap->force_enc; + } + else if (STRNCMP(arg, "bad", 3) == 0) +--- 4840,4849 ---- + #ifdef FEAT_MBYTE + else if (STRNCMP(arg, "enc", 3) == 0) + { +! if (STRNCMP(arg, "encoding", 8) == 0) +! arg += 8; +! else +! arg += 3; + pp = &eap->force_enc; + } + else if (STRNCMP(arg, "bad", 3) == 0) +*** ../vim-7.3.373/src/version.c 2011-12-14 14:15:12.000000000 +0100 +--- src/version.c 2011-12-14 14:44:01.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 374, + /**/ + +-- +Linux is just like a wigwam: no Windows, no Gates and an Apache inside. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.375 b/source/ap/vim/patches/7.3.375 new file mode 100644 index 00000000..6f15fea1 --- /dev/null +++ b/source/ap/vim/patches/7.3.375 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.375 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.375 +Problem: Duplicate return statement. +Solution: Remove the superfluous one. (Dominique Pelle) +Files: src/gui_mac.c + + +*** ../vim-7.3.374/src/gui_mac.c 2011-06-19 01:14:22.000000000 +0200 +--- src/gui_mac.c 2011-12-10 17:20:59.000000000 +0100 +*************** +*** 3216,3222 **** + { + /* TODO: + * This proc is called when Normal is set to a value +! * so what msut be done? I don't know + */ + } + +--- 3216,3222 ---- + { + /* TODO: + * This proc is called when Normal is set to a value +! * so what must be done? I don't know + */ + } + +*************** +*** 3303,3309 **** + *x = bounds.left; + *y = bounds.top; + return OK; +- return FAIL; + } + + /* +--- 3303,3308 ---- +*** ../vim-7.3.374/src/version.c 2011-12-14 14:49:41.000000000 +0100 +--- src/version.c 2011-12-14 15:06:01.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 375, + /**/ + +-- +GALAHAD: No look, really, this isn't nescess ... +PIGLET: We must examine you. +GALAHAD: There's nothing wrong with ... that. + "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 /// diff --git a/source/ap/vim/patches/7.3.376 b/source/ap/vim/patches/7.3.376 new file mode 100644 index 00000000..1e20743e --- /dev/null +++ b/source/ap/vim/patches/7.3.376 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.376 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.376 +Problem: Win32: Toolbar repainting does not work when the mouse pointer + hovers over a button. +Solution: Call DefWindowProc() when not handling an event. (Sergiu Dotenco) +Files: src/gui_w32.c + + +*** ../vim-7.3.375/src/gui_w32.c 2011-08-10 17:07:56.000000000 +0200 +--- src/gui_w32.c 2011-12-14 15:14:48.000000000 +0100 +*************** +*** 1101,1107 **** + return MyWindowProc(hwnd, uMsg, wParam, lParam); + } + +! return 1; + } + + /* +--- 1101,1107 ---- + return MyWindowProc(hwnd, uMsg, wParam, lParam); + } + +! return DefWindowProc(hwnd, uMsg, wParam, lParam); + } + + /* +*** ../vim-7.3.375/src/version.c 2011-12-14 15:07:11.000000000 +0100 +--- src/version.c 2011-12-14 15:23:10.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 376, + /**/ + +-- + GALAHAD hurries to the door and pushes through it. As he leaves the room + we CUT TO the reverse to show that he is now in a room full of bathing + and romping GIRLIES, all innocent, wide-eyed and beautiful. They smile + enchantingly at him as he tries to keep walking without being diverted by + the lovely sights assaulting his eyeballs. + "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 /// diff --git a/source/ap/vim/patches/7.3.377 b/source/ap/vim/patches/7.3.377 new file mode 100644 index 00000000..1a2df1d5 --- /dev/null +++ b/source/ap/vim/patches/7.3.377 @@ -0,0 +1,406 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.377 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.377 +Problem: No support for bitwise AND, OR, XOR and invert. +Solution: Add and(), or(), invert() and xor() functions. +Files: src/eval.c, src/testdir/test49.in, src/testdir/test65.in, + src/testdir/test65.ok, runtime/doc/eval.txt + + +*** ../vim-7.3.376/src/eval.c 2011-11-30 15:19:25.000000000 +0100 +--- src/eval.c 2011-12-11 13:49:31.000000000 +0100 +*************** +*** 474,479 **** +--- 474,480 ---- + static void f_acos __ARGS((typval_T *argvars, typval_T *rettv)); + #endif + static void f_add __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_and __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_append __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_argc __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_argidx __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 602,607 **** +--- 603,609 ---- + static void f_inputsave __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_inputsecret __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_insert __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_invert __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_isdirectory __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_islocked __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_items __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 640,645 **** +--- 642,648 ---- + #endif + static void f_nextnonblank __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_nr2char __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_or __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_pathshorten __ARGS((typval_T *argvars, typval_T *rettv)); + #ifdef FEAT_FLOAT + static void f_pow __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 751,756 **** +--- 754,760 ---- + static void f_winsaveview __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_winwidth __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_writefile __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_xor __ARGS((typval_T *argvars, typval_T *rettv)); + + static int list2fpos __ARGS((typval_T *arg, pos_T *posp, int *fnump)); + static pos_T *var2fpos __ARGS((typval_T *varp, int dollar_lnum, int *fnum)); +*************** +*** 7715,7720 **** +--- 7719,7725 ---- + {"acos", 1, 1, f_acos}, /* WJMc */ + #endif + {"add", 2, 2, f_add}, ++ {"and", 2, 2, f_and}, + {"append", 2, 2, f_append}, + {"argc", 0, 0, f_argc}, + {"argidx", 0, 0, f_argidx}, +*************** +*** 7850,7855 **** +--- 7855,7861 ---- + {"inputsave", 0, 0, f_inputsave}, + {"inputsecret", 1, 2, f_inputsecret}, + {"insert", 2, 3, f_insert}, ++ {"invert", 1, 1, f_invert}, + {"isdirectory", 1, 1, f_isdirectory}, + {"islocked", 1, 1, f_islocked}, + {"items", 1, 1, f_items}, +*************** +*** 7888,7893 **** +--- 7894,7900 ---- + #endif + {"nextnonblank", 1, 1, f_nextnonblank}, + {"nr2char", 1, 1, f_nr2char}, ++ {"or", 2, 2, f_or}, + {"pathshorten", 1, 1, f_pathshorten}, + #ifdef FEAT_FLOAT + {"pow", 2, 2, f_pow}, +*************** +*** 7999,8004 **** +--- 8006,8012 ---- + {"winsaveview", 0, 0, f_winsaveview}, + {"winwidth", 1, 1, f_winwidth}, + {"writefile", 2, 3, f_writefile}, ++ {"xor", 2, 2, f_xor}, + }; + + #if defined(FEAT_CMDL_COMPL) || defined(PROTO) +*************** +*** 8572,8577 **** +--- 8580,8597 ---- + } + + /* ++ * "and(expr, expr)" function ++ */ ++ static void ++ f_and(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL) ++ & get_tv_number_chk(&argvars[1], NULL); ++ } ++ ++ /* + * "append(lnum, string/list)" function + */ + static void +*************** +*** 12958,12963 **** +--- 12978,12994 ---- + } + + /* ++ * "invert(expr)" function ++ */ ++ static void ++ f_invert(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ rettv->vval.v_number = ~get_tv_number_chk(&argvars[0], NULL); ++ } ++ ++ /* + * "isdirectory()" function + */ + static void +*************** +*** 14108,14113 **** +--- 14139,14156 ---- + } + + /* ++ * "or(expr, expr)" function ++ */ ++ static void ++ f_or(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL) ++ | get_tv_number_chk(&argvars[1], NULL); ++ } ++ ++ /* + * "pathshorten()" function + */ + static void +*************** +*** 18394,18399 **** +--- 18437,18455 ---- + } + + /* ++ * "xor(expr, expr)" function ++ */ ++ static void ++ f_xor(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL) ++ ^ get_tv_number_chk(&argvars[1], NULL); ++ } ++ ++ ++ /* + * Translate a String variable into a position. + * Returns NULL when there is an error. + */ +*** ../vim-7.3.376/src/testdir/test65.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test65.in 2011-12-11 13:55:06.000000000 +0100 +*************** +*** 1,4 **** +! Test for floating point. + + STARTTEST + :so small.vim +--- 1,4 ---- +! Test for floating point and logical operators. + + STARTTEST + :so small.vim +*************** +*** 72,77 **** +--- 72,94 ---- + :$put ='float2nr' + :$put =float2nr(123.456) + :$put =float2nr(-123.456) ++ :$put ='AND' ++ :$put =and(127, 127) ++ :$put =and(127, 16) ++ :$put =and(127, 128) ++ :$put ='OR' ++ :$put =or(16, 7) ++ :$put =or(8, 7) ++ :$put =or(0, 123) ++ :$put ='XOR' ++ :$put =xor(127, 127) ++ :$put =xor(127, 16) ++ :$put =xor(127, 128) ++ :$put ='invert' ++ :$put =and(invert(127), 65535) ++ :$put =and(invert(16), 65535) ++ :$put =and(invert(128), 65535) ++ :$put =invert(1.0) + :/^Results/,$wq! test.out + ENDTEST + +*** ../vim-7.3.376/src/testdir/test65.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test65.ok 2011-12-11 13:55:30.000000000 +0100 +*************** +*** 54,56 **** +--- 54,73 ---- + float2nr + 123 + -123 ++ AND ++ 127 ++ 16 ++ 0 ++ OR ++ 23 ++ 15 ++ 123 ++ XOR ++ 0 ++ 111 ++ 255 ++ invert ++ 65408 ++ 65519 ++ 65407 ++ 0 +*** ../vim-7.3.376/runtime/doc/eval.txt 2011-06-19 02:55:32.000000000 +0200 +--- runtime/doc/eval.txt 2011-12-14 15:28:23.000000000 +0100 +*************** +*** 798,808 **** + For |Lists| only "+" is possible and then both expr6 must be a list. The + result is a new list with the two lists Concatenated. + +! expr7 * expr7 .. number multiplication *expr-star* +! expr7 / expr7 .. number division *expr-/* +! expr7 % expr7 .. number modulo *expr-%* + + For all, except ".", Strings are converted to Numbers. + + Note the difference between "+" and ".": + "123" + "456" = 579 +--- 800,811 ---- + For |Lists| only "+" is possible and then both expr6 must be a list. The + result is a new list with the two lists Concatenated. + +! expr7 * expr7 .. Number multiplication *expr-star* +! expr7 / expr7 .. Number division *expr-/* +! expr7 % expr7 .. Number modulo *expr-%* + + For all, except ".", Strings are converted to Numbers. ++ For bitwise operators see |and()|, |or()| and |xor()|. + + Note the difference between "+" and ".": + "123" + "456" = 579 +*************** +*** 1679,1684 **** +--- 1688,1694 ---- + abs( {expr}) Float or Number absolute value of {expr} + acos( {expr}) Float arc cosine of {expr} + add( {list}, {item}) List append {item} to |List| {list} ++ and( {expr}, {expr}) Number bitwise AND + append( {lnum}, {string}) Number append {string} below line {lnum} + append( {lnum}, {list}) Number append lines {list} below line {lnum} + argc() Number number of files in the argument list +*************** +*** 1817,1822 **** +--- 1827,1833 ---- + inputsave() Number save and clear typeahead + inputsecret( {prompt} [, {text}]) String like input() but hiding the text + insert( {list}, {item} [, {idx}]) List insert {item} in {list} [before {idx}] ++ invert( {expr}) Number bitwise invert + isdirectory( {directory}) Number TRUE if {directory} is a directory + islocked( {expr}) Number TRUE if {expr} is locked + items( {dict}) List key-value pairs in {dict} +*************** +*** 1856,1861 **** +--- 1868,1874 ---- + mzeval( {expr}) any evaluate |MzScheme| expression + nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} + nr2char( {expr}) String single char with ASCII value {expr} ++ or( {expr}, {expr}) Number bitwise OR + pathshorten( {expr}) String shorten directory names in a path + pow( {x}, {y}) Float {x} to the power of {y} + prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum} +*************** +*** 1978,1983 **** +--- 1992,1998 ---- + winwidth( {nr}) Number width of window {nr} + writefile( {list}, {fname} [, {binary}]) + Number write list of lines to file {fname} ++ xor( {expr}, {expr}) Number bitwise XOR + + abs({expr}) *abs()* + Return the absolute value of {expr}. When {expr} evaluates to +*************** +*** 2017,2022 **** +--- 2032,2044 ---- + Use |insert()| to add an item at another position. + + ++ and({expr}, {expr}) *and()* ++ Bitwise AND on the two arguments. The arguments are converted ++ to a number. A List, Dict or Float argument causes an error. ++ Example: > ++ :let flag = and(bits, 0x80) ++ ++ + append({lnum}, {expr}) *append()* + When {expr} is a |List|: Append each item of the |List| as a + text line below line {lnum} in the current buffer. +*************** +*** 3770,3775 **** +--- 3798,3808 ---- + Note that when {item} is a |List| it is inserted as a single + item. Use |extend()| to concatenate |Lists|. + ++ invert({expr}) *invert()* ++ Bitwise invert. The argument is converted to a number. A ++ List, Dict or Float argument causes an error. Example: > ++ :let bits = invert(bits) ++ + isdirectory({directory}) *isdirectory()* + The result is a Number, which is non-zero when a directory + with the name {directory} exists. If {directory} doesn't +*************** +*** 4334,4339 **** +--- 4368,4380 ---- + call setpos('.', save_cursor) + < Also see |setpos()|. + ++ or({expr}, {expr}) *or()* ++ Bitwise OR on the two arguments. The arguments are converted ++ to a number. A List, Dict or Float argument causes an error. ++ Example: > ++ :let bits = or(bits, 0x80) ++ ++ + pathshorten({expr}) *pathshorten()* + Shorten directory names in the path {expr} and return the + result. The tail, the file name, is kept as-is. The other +*************** +*** 6097,6103 **** + To copy a file byte for byte: > + :let fl = readfile("foo", "b") + :call writefile(fl, "foocopy", "b") +! < + + *feature-list* + There are three types of features: +--- 6149,6163 ---- + To copy a file byte for byte: > + :let fl = readfile("foo", "b") + :call writefile(fl, "foocopy", "b") +! +! +! xor({expr}, {expr}) *xor()* +! Bitwise XOR on the two arguments. The arguments are converted +! to a number. A List, Dict or Float argument causes an error. +! Example: > +! :let bits = xor(bits, 0x80) +! +! + + *feature-list* + There are three types of features: +*** ../vim-7.3.376/src/version.c 2011-12-14 15:23:53.000000000 +0100 +--- src/version.c 2011-12-14 15:28:39.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 377, + /**/ + +-- +DINGO: Wicked wicked Zoot ... she is a bad person and she must pay the + penalty. And here in Castle Anthrax, we have but one punishment + ... you must tie her down on a bed ... and spank her. Come! +GIRLS: A spanking! A spanking! + "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 /// diff --git a/source/ap/vim/patches/7.3.378 b/source/ap/vim/patches/7.3.378 new file mode 100644 index 00000000..8ad3d703 --- /dev/null +++ b/source/ap/vim/patches/7.3.378 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.378 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.378 +Problem: When cross-compiling the check for uint32_t fails. +Solution: Only give a warning message. (Maksim Melnikau) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.377/src/configure.in 2011-12-08 15:17:28.000000000 +0100 +--- src/configure.in 2011-12-14 19:18:36.000000000 +0100 +*************** +*** 3283,3289 **** + }], + AC_MSG_RESULT(ok), + AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]), +! AC_MSG_ERROR([could not compile program using uint32_t.])) + + dnl Check for memmove() before bcopy(), makes memmove() be used when both are + dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5. +--- 3283,3289 ---- + }], + AC_MSG_RESULT(ok), + AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]), +! AC_MSG_WARN([cannot check uint32_t when cross-compiling.])) + + dnl Check for memmove() before bcopy(), makes memmove() be used when both are + dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5. +*** ../vim-7.3.377/src/auto/configure 2011-12-08 15:17:28.000000000 +0100 +--- src/auto/configure 2011-12-14 19:20:55.000000000 +0100 +*************** +*** 11777,11783 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5 + $as_echo_n "checking uint32_t is 32 bits... " >&6; } + if test "$cross_compiling" = yes; then : +! as_fn_error "could not compile program using uint32_t." "$LINENO" 5 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +--- 11777,11784 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5 + $as_echo_n "checking uint32_t is 32 bits... " >&6; } + if test "$cross_compiling" = yes; then : +! { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check uint32_t when cross-compiling." >&5 +! $as_echo "$as_me: WARNING: cannot check uint32_t when cross-compiling." >&2;} + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +*** ../vim-7.3.377/src/version.c 2011-12-14 15:32:44.000000000 +0100 +--- src/version.c 2011-12-14 19:21:08.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 378, + /**/ + +-- + ### Hiroshima 45, Chernobyl 86, Windows 95 ### + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.379 b/source/ap/vim/patches/7.3.379 new file mode 100644 index 00000000..fd87f9a1 --- /dev/null +++ b/source/ap/vim/patches/7.3.379 @@ -0,0 +1,112 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.379 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.379 +Problem: C-indenting wrong for static enum. +Solution: Skip over "static". (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.378/src/misc1.c 2011-11-30 17:20:18.000000000 +0100 +--- src/misc1.c 2011-12-14 19:37:48.000000000 +0100 +*************** +*** 5138,5143 **** +--- 5138,5146 ---- + if (STRNCMP(s, "typedef", 7) == 0 && !vim_isIDc(s[7])) + s = cin_skipcomment(s + 7); + ++ if (STRNCMP(s, "static", 6) == 0 && !vim_isIDc(s[6])) ++ s = cin_skipcomment(s + 6); ++ + if (STRNCMP(s, "enum", 4) == 0 && !vim_isIDc(s[4])) + return TRUE; + +*** ../vim-7.3.378/src/testdir/test3.in 2011-11-30 17:20:18.000000000 +0100 +--- src/testdir/test3.in 2011-12-14 20:03:11.000000000 +0100 +*************** +*** 299,316 **** + + enum soppie + { +! yes = 0, +! no, +! maybe + }; + + typedef enum soppie + { +! yes = 0, +! no, +! maybe + }; + + { + int a, + b; +--- 299,323 ---- + + enum soppie + { +! yes = 0, +! no, +! maybe + }; + + typedef enum soppie + { +! yes = 0, +! no, +! maybe + }; + ++ static enum ++ { ++ yes = 0, ++ no, ++ maybe ++ } soppie; ++ + { + int a, + b; +*** ../vim-7.3.378/src/testdir/test3.ok 2011-11-30 17:20:18.000000000 +0100 +--- src/testdir/test3.ok 2011-12-14 19:37:48.000000000 +0100 +*************** +*** 299,304 **** +--- 299,311 ---- + maybe + }; + ++ static enum ++ { ++ yes = 0, ++ no, ++ maybe ++ } soppie; ++ + { + int a, + b; +*** ../vim-7.3.378/src/version.c 2011-12-14 19:22:29.000000000 +0100 +--- src/version.c 2011-12-14 20:02:19.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 379, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.380 b/source/ap/vim/patches/7.3.380 new file mode 100644 index 00000000..a8f4bcf6 --- /dev/null +++ b/source/ap/vim/patches/7.3.380 @@ -0,0 +1,318 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.380 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.380 +Problem: C-indenting wrong for a function header. +Solution: Skip to the start paren. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.379/src/misc1.c 2011-12-14 20:05:17.000000000 +0100 +--- src/misc1.c 2011-12-14 20:16:43.000000000 +0100 +*************** +*** 4943,4949 **** + static int cin_islinecomment __ARGS((char_u *)); + static int cin_isterminated __ARGS((char_u *, int, int)); + static int cin_isinit __ARGS((void)); +! static int cin_isfuncdecl __ARGS((char_u **, linenr_T)); + static int cin_isif __ARGS((char_u *)); + static int cin_iselse __ARGS((char_u *)); + static int cin_isdo __ARGS((char_u *)); +--- 4943,4949 ---- + static int cin_islinecomment __ARGS((char_u *)); + static int cin_isterminated __ARGS((char_u *, int, int)); + static int cin_isinit __ARGS((void)); +! static int cin_isfuncdecl __ARGS((char_u **, linenr_T, linenr_T, int, int)); + static int cin_isif __ARGS((char_u *)); + static int cin_iselse __ARGS((char_u *)); + static int cin_isdo __ARGS((char_u *)); +*************** +*** 5585,5605 **** + * "sp" points to a string with the line. When looking at other lines it must + * be restored to the line. When it's NULL fetch lines here. + * "lnum" is where we start looking. + */ + static int +! cin_isfuncdecl(sp, first_lnum) + char_u **sp; + linenr_T first_lnum; + { + char_u *s; + linenr_T lnum = first_lnum; + int retval = FALSE; + + if (sp == NULL) + s = ml_get(lnum); + else + s = *sp; + + /* Ignore line starting with #. */ + if (cin_ispreproc(s)) + return FALSE; +--- 5585,5621 ---- + * "sp" points to a string with the line. When looking at other lines it must + * be restored to the line. When it's NULL fetch lines here. + * "lnum" is where we start looking. ++ * "min_lnum" is the line before which we will not be looking. + */ + static int +! cin_isfuncdecl(sp, first_lnum, min_lnum, ind_maxparen, ind_maxcomment) + char_u **sp; + linenr_T first_lnum; ++ linenr_T min_lnum; ++ int ind_maxparen; ++ int ind_maxcomment; + { + char_u *s; + linenr_T lnum = first_lnum; + int retval = FALSE; ++ pos_T *trypos; ++ int just_started = TRUE; + + if (sp == NULL) + s = ml_get(lnum); + else + s = *sp; + ++ if (find_last_paren(s, '(', ')') ++ && (trypos = find_match_paren(ind_maxparen, ind_maxcomment)) != NULL) ++ { ++ lnum = trypos->lnum; ++ if (lnum < min_lnum) ++ return FALSE; ++ ++ s = ml_get(lnum); ++ } ++ + /* Ignore line starting with #. */ + if (cin_ispreproc(s)) + return FALSE; +*************** +*** 5650,5662 **** + /* Require a comma at end of the line or a comma or ')' at the + * start of next line. */ + s = skipwhite(s); +! if (!comma && *s != ',' && *s != ')') + break; + } + else if (cin_iscomment(s)) /* ignore comments */ + s = cin_skipcomment(s); + else + ++s; + } + + done: +--- 5666,5682 ---- + /* Require a comma at end of the line or a comma or ')' at the + * start of next line. */ + s = skipwhite(s); +! if (!just_started && (!comma && *s != ',' && *s != ')')) + break; ++ just_started = FALSE; + } + else if (cin_iscomment(s)) /* ignore comments */ + s = cin_skipcomment(s); + else ++ { + ++s; ++ just_started = FALSE; ++ } + } + + done: +*************** +*** 7158,7164 **** + * (it's a variable declaration). + */ + if (start_brace != BRACE_IN_COL0 +! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum)) + { + /* if the line is terminated with another ',' + * it is a continued variable initialization. +--- 7178,7185 ---- + * (it's a variable declaration). + */ + if (start_brace != BRACE_IN_COL0 +! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum, +! 0, ind_maxparen, ind_maxcomment)) + { + /* if the line is terminated with another ',' + * it is a continued variable initialization. +*************** +*** 8019,8025 **** + && vim_strchr(theline, '}') == NULL + && !cin_ends_in(theline, (char_u *)":", NULL) + && !cin_ends_in(theline, (char_u *)",", NULL) +! && cin_isfuncdecl(NULL, cur_curpos.lnum + 1) + && !cin_isterminated(theline, FALSE, TRUE)) + { + amount = ind_func_type; +--- 8040,8048 ---- + && vim_strchr(theline, '}') == NULL + && !cin_ends_in(theline, (char_u *)":", NULL) + && !cin_ends_in(theline, (char_u *)",", NULL) +! && cin_isfuncdecl(NULL, cur_curpos.lnum + 1, +! cur_curpos.lnum + 1, +! ind_maxparen, ind_maxcomment) + && !cin_isterminated(theline, FALSE, TRUE)) + { + amount = ind_func_type; +*************** +*** 8125,8131 **** + * If the line looks like a function declaration, and we're + * not in a comment, put it the left margin. + */ +! if (cin_isfuncdecl(NULL, cur_curpos.lnum)) /* XXX */ + break; + l = ml_get_curline(); + +--- 8148,8155 ---- + * If the line looks like a function declaration, and we're + * not in a comment, put it the left margin. + */ +! if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0, +! ind_maxparen, ind_maxcomment)) /* XXX */ + break; + l = ml_get_curline(); + +*************** +*** 8173,8179 **** + * line (and the ones that follow) needs to be indented as + * parameters. + */ +! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum)) + { + amount = ind_param; + break; +--- 8197,8204 ---- + * line (and the ones that follow) needs to be indented as + * parameters. + */ +! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0, +! ind_maxparen, ind_maxcomment)) + { + amount = ind_param; + break; +*** ../vim-7.3.379/src/testdir/test3.in 2011-12-14 20:05:17.000000000 +0100 +--- src/testdir/test3.in 2011-12-14 20:11:24.000000000 +0100 +*************** +*** 1429,1435 **** + + STARTTEST + :set cino& +! 2kdd=4][ + ENDTEST + + void func(void) +--- 1429,1435 ---- + + STARTTEST + :set cino& +! 2kdd=7][ + ENDTEST + + void func(void) +*************** +*** 1478,1484 **** + 3, 4, + 5, 6}; + +! printf("Don't you dare indent this line incorrectly!\n); + } + + STARTTEST +--- 1478,1506 ---- + 3, 4, + 5, 6}; + +! printf("Don't you dare indent this line incorrectly!\n"); +! } +! +! void +! func4(a, b, +! c) +! int a; +! int b; +! int c; +! { +! } +! +! void +! func5( +! int a, +! int b) +! { +! } +! +! void +! func6( +! int a) +! { + } + + STARTTEST +*** ../vim-7.3.379/src/testdir/test3.ok 2011-12-14 20:05:17.000000000 +0100 +--- src/testdir/test3.ok 2011-12-14 20:11:24.000000000 +0100 +*************** +*** 1331,1337 **** + 3, 4, + 5, 6}; + +! printf("Don't you dare indent this line incorrectly!\n); + } + + +--- 1331,1359 ---- + 3, 4, + 5, 6}; + +! printf("Don't you dare indent this line incorrectly!\n"); +! } +! +! void +! func4(a, b, +! c) +! int a; +! int b; +! int c; +! { +! } +! +! void +! func5( +! int a, +! int b) +! { +! } +! +! void +! func6( +! int a) +! { + } + + +*** ../vim-7.3.379/src/version.c 2011-12-14 20:05:17.000000000 +0100 +--- src/version.c 2011-12-14 20:20:50.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 380, + /**/ + +-- +"Intelligence has much less practical application than you'd think." + -- Scott Adams, Dilbert. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.381 b/source/ap/vim/patches/7.3.381 new file mode 100644 index 00000000..b7957379 --- /dev/null +++ b/source/ap/vim/patches/7.3.381 @@ -0,0 +1,260 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.381 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.381 +Problem: Configure silently skips interfaces that won't work. +Solution: Add the --enable-fail_if_missing argument. (Shlomi Fish) +Files: src/Makefile, src/configure.in, src/auto/configure + + +*** ../vim-7.3.380/src/Makefile 2011-12-08 15:17:28.000000000 +0100 +--- src/Makefile 2011-12-14 20:49:26.000000000 +0100 +*************** +*** 389,394 **** +--- 389,399 ---- + #CONF_OPT_PLTHOME = --with-plthome=/usr/local/drscheme + #CONF_OPT_PLTHOME = --with-plthome=/home/me/mz + ++ # Uncomment the next line to fail if one of the requested language interfaces ++ # cannot be configured. Without this Vim will be build anyway, without ++ # the failing interfaces. ++ #CONF_OPT_FAIL = --enable-fail-if-missing ++ + # PERL + # Uncomment one of these when you want to include the Perl interface. + # First one is for static linking, second one for dynamic loading. +*************** +*** 1648,1654 **** + CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \ + ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \ +! $(CONF_OPT_DARWIN) $(CONF_OPT_PERL) $(CONF_OPT_PYTHON) $(CONF_OPT_PYTHON3) \ + $(CONF_OPT_TCL) $(CONF_OPT_RUBY) $(CONF_OPT_NLS) \ + $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \ + $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \ +--- 1653,1660 ---- + CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \ + ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \ +! $(CONF_OPT_DARWIN) $(CONF_OPT_FAIL) \ +! $(CONF_OPT_PERL) $(CONF_OPT_PYTHON) $(CONF_OPT_PYTHON3) \ + $(CONF_OPT_TCL) $(CONF_OPT_RUBY) $(CONF_OPT_NLS) \ + $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \ + $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \ +*** ../vim-7.3.380/src/configure.in 2011-12-14 19:22:29.000000000 +0100 +--- src/configure.in 2011-12-14 20:46:36.000000000 +0100 +*************** +*** 28,33 **** +--- 28,43 ---- + AC_HEADER_STDC + AC_HEADER_SYS_WAIT + ++ dnl Check for the flag that fails if stuff are missing. ++ ++ AC_MSG_CHECKING(--enable-fail-if-missing argument) ++ AC_ARG_ENABLE(fail_if_missing, ++ [ --enable-fail-if-missing Fail if dependencies on additional features ++ specified on the command line are missing.], ++ [fail_if_missing="yes"], ++ [fail_if_missing="no"]) ++ AC_MSG_RESULT($fail_if_missing) ++ + dnl Set default value for CFLAGS if none is defined or it's empty + if test -z "$CFLAGS"; then + CFLAGS="-O" +*************** +*** 491,496 **** +--- 501,509 ---- + 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 ++ AC_MSG_ERROR([could not configure lua]) ++ fi + AC_SUBST(LUA_SRC) + AC_SUBST(LUA_OBJ) + AC_SUBST(LUA_PRO) +*************** +*** 781,786 **** +--- 794,803 ---- + PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS" + fi + fi ++ ++ if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then ++ AC_MSG_ERROR([could not configure perl]) ++ fi + fi + AC_SUBST(shrpenv) + AC_SUBST(PERL_SRC) +*************** +*** 966,971 **** +--- 983,992 ---- + AC_MSG_RESULT(too old) + fi + fi ++ ++ if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then ++ AC_MSG_ERROR([could not configure python]) ++ fi + fi + + AC_SUBST(PYTHON_CONFDIR) +*************** +*** 1389,1394 **** +--- 1410,1418 ---- + AC_MSG_RESULT(too old; need Tcl version 8.0 or later) + fi + fi ++ if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then ++ AC_MSG_ERROR([could not configure Tcl]) ++ fi + fi + AC_SUBST(TCL_SRC) + AC_SUBST(TCL_OBJ) +*************** +*** 1469,1474 **** +--- 1493,1502 ---- + AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later) + fi + fi ++ ++ if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then ++ AC_MSG_ERROR([could not configure Ruby]) ++ fi + fi + AC_SUBST(RUBY_SRC) + AC_SUBST(RUBY_OBJ) +*** ../vim-7.3.380/src/auto/configure 2011-12-14 19:22:29.000000000 +0100 +--- src/auto/configure 2011-12-14 20:49:51.000000000 +0100 +*************** +*** 741,746 **** +--- 741,747 ---- + ac_subst_files='' + ac_user_opts=' + enable_option_checking ++ enable_fail_if_missing + enable_darwin + with_mac_arch + with_developer_dir +*************** +*** 1418,1423 **** +--- 1419,1426 ---- + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] ++ --enable-fail-if-missing Fail if dependencies on additional features ++ specified on the command line are missing. + --disable-darwin Disable Darwin (Mac OS X) support. + --disable-selinux Don't check for SELinux support. + --disable-xsmp Disable XSMP session management +*************** +*** 3949,3954 **** +--- 3952,3970 ---- + fi + + ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-fail-if-missing argument" >&5 ++ $as_echo_n "checking --enable-fail-if-missing argument... " >&6; } ++ # Check whether --enable-fail_if_missing was given. ++ if test "${enable_fail_if_missing+set}" = set; then : ++ enableval=$enable_fail_if_missing; fail_if_missing="yes" ++ else ++ fail_if_missing="no" ++ fi ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fail_if_missing" >&5 ++ $as_echo "$fail_if_missing" >&6; } ++ + if test -z "$CFLAGS"; then + CFLAGS="-O" + test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall" +*************** +*** 4727,4732 **** +--- 4743,4751 ---- + 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 ++ as_fn_error "could not configure lua" "$LINENO" 5 ++ fi + + + +*************** +*** 5140,5145 **** +--- 5159,5168 ---- + PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS" + fi + fi ++ ++ if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then ++ as_fn_error "could not configure perl" "$LINENO" 5 ++ fi + fi + + +*************** +*** 5429,5434 **** +--- 5452,5461 ---- + $as_echo "too old" >&6; } + fi + fi ++ ++ if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then ++ as_fn_error "could not configure python" "$LINENO" 5 ++ fi + fi + + +*************** +*** 6216,6221 **** +--- 6243,6251 ---- + $as_echo "too old; need Tcl version 8.0 or later" >&6; } + fi + fi ++ if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then ++ as_fn_error "could not configure Tcl" "$LINENO" 5 ++ fi + fi + + +*************** +*** 6353,6358 **** +--- 6383,6392 ---- + $as_echo "too old; need Ruby version 1.6.0 or later" >&6; } + fi + fi ++ ++ if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then ++ as_fn_error "could not configure Ruby" "$LINENO" 5 ++ fi + fi + + +*** ../vim-7.3.380/src/version.c 2011-12-14 20:21:29.000000000 +0100 +--- src/version.c 2011-12-14 20:50:42.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 381, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.382 b/source/ap/vim/patches/7.3.382 new file mode 100644 index 00000000..7f344e7e --- /dev/null +++ b/source/ap/vim/patches/7.3.382 @@ -0,0 +1,173 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.382 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.382 (after 7.3.376) +Problem: IME characters are inserted twice. +Solution: Do not call DefWindowProc() if the event was handled. (Yasuhiro + Matsumoto) +Files: src/gui_w32.c + + +*** ../vim-7.3.381/src/gui_w32.c 2011-12-14 15:23:53.000000000 +0100 +--- src/gui_w32.c 2011-12-15 21:50:51.000000000 +0100 +*************** +*** 798,804 **** + if (pt.y < rect.top) + { + show_tabline_popup_menu(); +! return 0; + } + } + return MyWindowProc(hwnd, uMsg, wParam, lParam); +--- 798,804 ---- + if (pt.y < rect.top) + { + show_tabline_popup_menu(); +! return 0L; + } + } + return MyWindowProc(hwnd, uMsg, wParam, lParam); +*************** +*** 828,834 **** +--- 828,837 ---- + + case WM_ENDSESSION: + if (wParam) /* system only really goes down when wParam is TRUE */ ++ { + _OnEndSession(); ++ return 0L; ++ } + break; + + case WM_CHAR: +*************** +*** 866,872 **** + * are received, mouse pointer remains hidden. */ + return MyWindowProc(hwnd, uMsg, wParam, lParam); + #else +! return 0; + #endif + + case WM_SIZING: /* HANDLE_MSG doesn't seem to handle this one */ +--- 869,875 ---- + * are received, mouse pointer remains hidden. */ + return MyWindowProc(hwnd, uMsg, wParam, lParam); + #else +! return 0L; + #endif + + case WM_SIZING: /* HANDLE_MSG doesn't seem to handle this one */ +*************** +*** 874,880 **** + + case WM_MOUSEWHEEL: + _OnMouseWheel(hwnd, HIWORD(wParam)); +! break; + + /* Notification for change in SystemParametersInfo() */ + case WM_SETTINGCHANGE: +--- 877,883 ---- + + case WM_MOUSEWHEEL: + _OnMouseWheel(hwnd, HIWORD(wParam)); +! return 0L; + + /* Notification for change in SystemParametersInfo() */ + case WM_SETTINGCHANGE: +*************** +*** 987,999 **** +--- 990,1008 ---- + case TCN_SELCHANGE: + if (gui_mch_showing_tabline() + && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd) ++ { + send_tabline_event(TabCtrl_GetCurSel(s_tabhwnd) + 1); ++ return 0L; ++ } + break; + + case NM_RCLICK: + if (gui_mch_showing_tabline() + && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd) ++ { + show_tabline_popup_menu(); ++ return 0L; ++ } + break; + # endif + default: +*************** +*** 1037,1042 **** +--- 1046,1052 ---- + out_flush(); + did_menu_tip = TRUE; + } ++ return 0L; + } + break; + #endif +*************** +*** 1079,1096 **** + case WM_IME_NOTIFY: + if (!_OnImeNotify(hwnd, (DWORD)wParam, (DWORD)lParam)) + return MyWindowProc(hwnd, uMsg, wParam, lParam); +! break; + case WM_IME_COMPOSITION: + if (!_OnImeComposition(hwnd, wParam, lParam)) + return MyWindowProc(hwnd, uMsg, wParam, lParam); +! break; + #endif + + default: + if (uMsg == msh_msgmousewheel && msh_msgmousewheel != 0) + { /* handle MSH_MOUSEWHEEL messages for Intellimouse */ + _OnMouseWheel(hwnd, HIWORD(wParam)); +! break; + } + #ifdef MSWIN_FIND_REPLACE + else if (uMsg == s_findrep_msg && s_findrep_msg != 0) +--- 1089,1107 ---- + case WM_IME_NOTIFY: + if (!_OnImeNotify(hwnd, (DWORD)wParam, (DWORD)lParam)) + return MyWindowProc(hwnd, uMsg, wParam, lParam); +! return 1L; +! + case WM_IME_COMPOSITION: + if (!_OnImeComposition(hwnd, wParam, lParam)) + return MyWindowProc(hwnd, uMsg, wParam, lParam); +! return 1L; + #endif + + default: + if (uMsg == msh_msgmousewheel && msh_msgmousewheel != 0) + { /* handle MSH_MOUSEWHEEL messages for Intellimouse */ + _OnMouseWheel(hwnd, HIWORD(wParam)); +! return 0L; + } + #ifdef MSWIN_FIND_REPLACE + else if (uMsg == s_findrep_msg && s_findrep_msg != 0) +*** ../vim-7.3.381/src/version.c 2011-12-14 20:51:19.000000000 +0100 +--- src/version.c 2011-12-15 21:48:49.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 382, + /**/ + +-- +Even got a Datapoint 3600(?) with a DD50 connector instead of the +usual DB25... what a nightmare trying to figure out the pinout +for *that* with no spex... + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.383 b/source/ap/vim/patches/7.3.383 new file mode 100644 index 00000000..c0ce6d90 --- /dev/null +++ b/source/ap/vim/patches/7.3.383 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.383 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.383 +Problem: For EBCDIC pound sign is defined as 't'. +Solution: Correctly define POUND. +Files: src/ascii.h + + +*** ../vim-7.3.382/src/ascii.h 2011-09-02 14:18:14.000000000 +0200 +--- src/ascii.h 2011-12-17 21:38:36.000000000 +0100 +*************** +*** 123,129 **** + #define DCS 0x90 /* Device Control String */ + #define STERM 0x9c /* String Terminator */ + +! #define POUND '\xA3' + + #define CTRL_F_STR "\056" + #define CTRL_H_STR "\026" +--- 123,129 ---- + #define DCS 0x90 /* Device Control String */ + #define STERM 0x9c /* String Terminator */ + +! #define POUND 0xB1 + + #define CTRL_F_STR "\056" + #define CTRL_H_STR "\026" +*** ../vim-7.3.382/src/version.c 2011-12-15 21:51:32.000000000 +0100 +--- src/version.c 2011-12-23 12:46:08.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 383, + /**/ + +-- +Vim is like Emacs without all the typing. (John "Johann" Spetz) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.384 b/source/ap/vim/patches/7.3.384 new file mode 100644 index 00000000..f75ff408 --- /dev/null +++ b/source/ap/vim/patches/7.3.384 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.384 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.384 +Problem: Mapping CTRL-K in Insert mode breaks CTRL-X CTRL-K for dictionary + completion. +Solution: Add CTRL-K to the list of recognized keys. (James McCoy) +Files: src/edit.c + + +*** ../vim-7.3.383/src/edit.c 2011-10-26 17:04:23.000000000 +0200 +--- src/edit.c 2011-12-23 12:36:22.000000000 +0100 +*************** +*** 2183,2189 **** + || c == Ctrl_I || c == Ctrl_D || c == Ctrl_P + || c == Ctrl_N || c == Ctrl_T || c == Ctrl_V + || c == Ctrl_Q || c == Ctrl_U || c == Ctrl_O +! || c == Ctrl_S || c == 's'); + case CTRL_X_SCROLL: + return (c == Ctrl_Y || c == Ctrl_E); + case CTRL_X_WHOLE_LINE: +--- 2183,2189 ---- + || c == Ctrl_I || c == Ctrl_D || c == Ctrl_P + || c == Ctrl_N || c == Ctrl_T || c == Ctrl_V + || c == Ctrl_Q || c == Ctrl_U || c == Ctrl_O +! || c == Ctrl_S || c == Ctrl_K || c == 's'); + case CTRL_X_SCROLL: + return (c == Ctrl_Y || c == Ctrl_E); + case CTRL_X_WHOLE_LINE: +*** ../vim-7.3.383/src/version.c 2011-12-23 12:46:56.000000000 +0100 +--- src/version.c 2011-12-23 12:53:38.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 384, + /**/ + +-- +Q: Is selling software the same as selling hardware? +A: No, good hardware is sold new, good software has already been used by many. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.385 b/source/ap/vim/patches/7.3.385 new file mode 100644 index 00000000..405a77f0 --- /dev/null +++ b/source/ap/vim/patches/7.3.385 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.385 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.385 +Problem: When using an expression mapping on the command line the cursor + ends up in the wrong place. (Yasuhiro Matsumoto) +Solution: Save and restore msg_col and msg_row when evaluating the + expression. +Files: src/getchar. + + +*** ../vim-7.3.384/src/getchar.c 2011-10-12 22:02:07.000000000 +0200 +--- src/getchar.c 2011-12-14 18:37:52.000000000 +0100 +*************** +*** 4510,4515 **** +--- 4510,4517 ---- + char_u *expr; + char_u *save_cmd; + pos_T save_cursor; ++ int save_msg_col; ++ int save_msg_row; + + /* Remove escaping of CSI, because "str" is in a format to be used as + * typeahead. */ +*************** +*** 4533,4544 **** +--- 4535,4550 ---- + #endif + set_vim_var_char(c); /* set v:char to the typed character */ + save_cursor = curwin->w_cursor; ++ save_msg_col = msg_col; ++ save_msg_row = msg_row; + p = eval_to_string(expr, NULL, FALSE); + --textlock; + #ifdef FEAT_EX_EXTRA + --ex_normal_lock; + #endif + curwin->w_cursor = save_cursor; ++ msg_col = save_msg_col; ++ msg_row = save_msg_row; + + restore_cmdline_alloc(save_cmd); + vim_free(expr); +*** ../vim-7.3.384/src/version.c 2011-12-23 13:14:58.000000000 +0100 +--- src/version.c 2011-12-23 14:53:23.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 385, + /**/ + +-- +`When any government, or any church for that matter, undertakes to say to + its subjects, "This you may not read, this you must not see, this you are + forbidden to know," the end result is tyranny and oppression no matter how + holy the motives' -- Robert A Heinlein, "If this goes on --" + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.386 b/source/ap/vim/patches/7.3.386 new file mode 100644 index 00000000..c9035050 --- /dev/null +++ b/source/ap/vim/patches/7.3.386 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.386 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.386 +Problem: Test 83 fails when iconv does not support cp932. (raf) +Solution: Test if conversion works. (Yukihiro Nakadaira) +Files: src/testdir/test83.in + + +*** ../vim-7.3.385/src/testdir/test83.in 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/test83.in 2011-12-21 21:01:44.000000000 +0100 +*************** +*** 2,8 **** + + STARTTEST + :so mbyte.vim +! :if !has('iconv') + : e! test.ok + : w! test.out + : qa! +--- 2,8 ---- + + STARTTEST + :so mbyte.vim +! :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21" + : e! test.ok + : w! test.out + : qa! +*** ../vim-7.3.385/src/version.c 2011-12-23 14:54:01.000000000 +0100 +--- src/version.c 2011-12-23 14:55:38.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 386, + /**/ + +-- +WOMAN: King of the who? +ARTHUR: The Britons. +WOMAN: Who are the Britons? +ARTHUR: Well, we all are. we're all Britons and I am your king. + 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 /// diff --git a/source/ap/vim/patches/7.3.387 b/source/ap/vim/patches/7.3.387 new file mode 100644 index 00000000..6b20a58a --- /dev/null +++ b/source/ap/vim/patches/7.3.387 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.387 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.387 (after 7.3.386) +Problem: Test 83 may fail for some encodings. +Solution: Set 'encoding' to utf-8 earlier. +Files: src/testdir/test83.in + + +*** ../vim-7.3.386/src/testdir/test83.in 2011-12-23 14:56:24.000000000 +0100 +--- src/testdir/test83.in 2011-12-30 13:05:05.000000000 +0100 +*************** +*** 2,13 **** + + STARTTEST + :so mbyte.vim + :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21" + : e! test.ok + : w! test.out + : qa! + :endif +- :set enc=utf8 + + :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt + :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt +--- 2,13 ---- + + STARTTEST + :so mbyte.vim ++ :set enc=utf8 + :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21" + : e! test.ok + : w! test.out + : qa! + :endif + + :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt + :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt +*** ../vim-7.3.386/src/version.c 2011-12-23 14:56:24.000000000 +0100 +--- src/version.c 2011-12-30 13:06:17.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 387, + /**/ + +-- +Mental Floss prevents moral decay! + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.388 b/source/ap/vim/patches/7.3.388 new file mode 100644 index 00000000..7a6df895 --- /dev/null +++ b/source/ap/vim/patches/7.3.388 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.388 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.388 +Problem: Crash on exit when EXITFREE is defined and using tiny features. +Solution: Check for NULL window pointer. (Dominique Pelle) +Files: src/buffer.c + + +*** ../vim-7.3.387/src/buffer.c 2011-11-30 15:40:51.000000000 +0100 +--- src/buffer.c 2011-12-30 13:35:26.000000000 +0100 +*************** +*** 419,424 **** +--- 419,426 ---- + if ( + #ifdef FEAT_WINDOWS + win_valid(win) && ++ #else ++ win != NULL && + #endif + win->w_buffer == buf) + win->w_buffer = NULL; /* make sure we don't use the buffer now */ +*** ../vim-7.3.387/src/version.c 2011-12-30 13:09:15.000000000 +0100 +--- src/version.c 2011-12-30 13:37:23.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 388, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.389 b/source/ap/vim/patches/7.3.389 new file mode 100644 index 00000000..c8a968c3 --- /dev/null +++ b/source/ap/vim/patches/7.3.389 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.389 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.389 +Problem: After typing at a prompt the "MORE" message appears too soon. +Solution: reset lines_left in msg_end_prompt(). (Eswald) +Files: src/message.c + + +*** ../vim-7.3.388/src/message.c 2011-09-14 15:39:26.000000000 +0200 +--- src/message.c 2011-12-30 14:08:05.000000000 +0100 +*************** +*** 85,91 **** + * need_wait_return to be set. This is a hack to make ":ts" + * work without an extra prompt. + * lines_left Number of lines available for messages before the +! * more-prompt is to be given. + * need_wait_return TRUE when the hit-return prompt is needed. + * Reset: After giving the hit-return prompt, when the user + * has answered some other prompt. +--- 85,91 ---- + * need_wait_return to be set. This is a hack to make ":ts" + * work without an extra prompt. + * lines_left Number of lines available for messages before the +! * more-prompt is to be given. -1 when not set. + * need_wait_return TRUE when the hit-return prompt is needed. + * Reset: After giving the hit-return prompt, when the user + * has answered some other prompt. +*************** +*** 855,860 **** +--- 855,861 ---- + cmdline_row = msg_row; + msg_col = 0; + msg_clr_eos(); ++ lines_left = -1; + } + #endif + +*** ../vim-7.3.388/src/version.c 2011-12-30 13:39:04.000000000 +0100 +--- src/version.c 2011-12-30 14:11:00.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 389, + /**/ + +-- +Proofread carefully to see if you any words out. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.390 b/source/ap/vim/patches/7.3.390 new file mode 100644 index 00000000..7199f8e1 --- /dev/null +++ b/source/ap/vim/patches/7.3.390 @@ -0,0 +1,155 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.390 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.390 +Problem: Using NULL buffer pointer in a window. +Solution: Check for w_buffer being NULL in more places. (Bjorn Winckler) +Files: src/ex_cmds.c, src/quickfix.c, src/window.c + + +*** ../vim-7.3.389/src/ex_cmds.c 2011-11-30 17:01:55.000000000 +0100 +--- src/ex_cmds.c 2011-12-30 14:59:57.000000000 +0100 +*************** +*** 3390,3395 **** +--- 3390,3402 ---- + (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD); + + #ifdef FEAT_AUTOCMD ++ /* Autocommands may open a new window and leave oldwin open ++ * which leads to crashes since the above call sets ++ * oldwin->w_buffer to NULL. */ ++ if (curwin != oldwin && oldwin != aucmd_win ++ && win_valid(oldwin) && oldwin->w_buffer == NULL) ++ win_close(oldwin, FALSE); ++ + # ifdef FEAT_EVAL + if (aborting()) /* autocmds may abort script processing */ + { +*** ../vim-7.3.389/src/quickfix.c 2011-08-10 18:36:49.000000000 +0200 +--- src/quickfix.c 2011-12-30 14:45:19.000000000 +0100 +*************** +*** 2675,2681 **** + bt_quickfix(buf) + buf_T *buf; + { +! return (buf->b_p_bt[0] == 'q'); + } + + /* +--- 2675,2681 ---- + bt_quickfix(buf) + buf_T *buf; + { +! return buf != NULL && buf->b_p_bt[0] == 'q'; + } + + /* +*************** +*** 2686,2693 **** + bt_nofile(buf) + buf_T *buf; + { +! return (buf->b_p_bt[0] == 'n' && buf->b_p_bt[2] == 'f') +! || buf->b_p_bt[0] == 'a'; + } + + /* +--- 2686,2693 ---- + bt_nofile(buf) + buf_T *buf; + { +! return buf != NULL && ((buf->b_p_bt[0] == 'n' && buf->b_p_bt[2] == 'f') +! || buf->b_p_bt[0] == 'a'); + } + + /* +*************** +*** 2697,2703 **** + bt_dontwrite(buf) + buf_T *buf; + { +! return (buf->b_p_bt[0] == 'n'); + } + + int +--- 2697,2703 ---- + bt_dontwrite(buf) + buf_T *buf; + { +! return buf != NULL && buf->b_p_bt[0] == 'n'; + } + + int +*** ../vim-7.3.389/src/window.c 2011-09-14 14:43:21.000000000 +0200 +--- src/window.c 2011-12-30 14:44:18.000000000 +0100 +*************** +*** 2170,2176 **** + + /* When closing the help window, try restoring a snapshot after closing + * the window. Otherwise clear the snapshot, it's now invalid. */ +! if (win->w_buffer->b_help) + help_window = TRUE; + else + clear_snapshot(curtab, SNAP_HELP_IDX); +--- 2170,2176 ---- + + /* When closing the help window, try restoring a snapshot after closing + * the window. Otherwise clear the snapshot, it's now invalid. */ +! if (win->w_buffer != NULL && win->w_buffer->b_help) + help_window = TRUE; + else + clear_snapshot(curtab, SNAP_HELP_IDX); +*************** +*** 2214,2226 **** + + #ifdef FEAT_SYN_HL + /* Free independent synblock before the buffer is freed. */ +! reset_synblock(win); + #endif + + /* + * Close the link to the buffer. + */ +! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0); + + /* Autocommands may have closed the window already, or closed the only + * other window or moved to another tab page. */ +--- 2214,2228 ---- + + #ifdef FEAT_SYN_HL + /* Free independent synblock before the buffer is freed. */ +! if (win->w_buffer != NULL) +! reset_synblock(win); + #endif + + /* + * Close the link to the buffer. + */ +! if (win->w_buffer != NULL) +! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0); + + /* Autocommands may have closed the window already, or closed the only + * other window or moved to another tab page. */ +*** ../vim-7.3.389/src/version.c 2011-12-30 14:14:16.000000000 +0100 +--- src/version.c 2011-12-30 14:38:39.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 390, + /**/ + +-- +There can't be a crisis today, my schedule is already full. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.391 b/source/ap/vim/patches/7.3.391 new file mode 100644 index 00000000..0a1bcceb --- /dev/null +++ b/source/ap/vim/patches/7.3.391 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.391 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.391 +Problem: Can't check if the XPM_W32 feature is enabled. +Solution: Add xpm_w32 to the list of features. (kat) +Files: src/eval.c + + +*** ../vim-7.3.390/src/eval.c 2011-12-14 15:32:44.000000000 +0100 +--- src/eval.c 2012-01-04 14:33:22.000000000 +0100 +*************** +*** 12260,12265 **** +--- 12260,12268 ---- + #ifdef FEAT_XFONTSET + "xfontset", + #endif ++ #ifdef FEAT_XPM_W32 ++ "xpm_w32", ++ #endif + #ifdef USE_XSMP + "xsmp", + #endif +*** ../vim-7.3.390/src/version.c 2011-12-30 15:01:55.000000000 +0100 +--- src/version.c 2012-01-04 14:34:31.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 391, + /**/ + +-- +ROBIN: The what? +ARTHUR: The Holy Hand Grenade of Antioch. 'Tis one of the sacred relics + Brother Maynard always carries with him. +ALL: Yes. Of course. +ARTHUR: (shouting) Bring up the Holy Hand Grenade! + "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 /// diff --git a/source/ap/vim/patches/7.3.392 b/source/ap/vim/patches/7.3.392 new file mode 100644 index 00000000..a603d90e --- /dev/null +++ b/source/ap/vim/patches/7.3.392 @@ -0,0 +1,115 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.392 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.392 +Problem: When setting 'undofile' while the file is already loaded but + unchanged, try reading the undo file. (Andy Wokula) +Solution: Compute a checksum of the text when 'undofile' is set. (Christian + Brabandt) +Files: src/option.c, src/testdir/test72.in, src/testdir/test72.ok + + +*** ../vim-7.3.391/src/option.c 2011-11-30 11:31:25.000000000 +0100 +--- src/option.c 2012-01-04 19:34:11.000000000 +0100 +*************** +*** 7516,7521 **** +--- 7516,7545 ---- + compatible_set(); + } + ++ #ifdef FEAT_PERSISTENT_UNDO ++ /* 'undofile' */ ++ else if ((int *)varp == &curbuf->b_p_udf || (int *)varp == &p_udf) ++ { ++ char_u hash[UNDO_HASH_SIZE]; ++ buf_T *save_curbuf = curbuf; ++ ++ for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next) ++ { ++ /* When 'undofile' is set globally: for every buffer, otherwise ++ * only for the current buffer: Try to read in the undofile, if ++ * one exists and the buffer wasn't changed. */ ++ if ((curbuf == save_curbuf ++ || (opt_flags & OPT_GLOBAL) || opt_flags == 0) ++ && !curbufIsChanged()) ++ { ++ u_compute_hash(hash); ++ u_read_undo(NULL, hash, curbuf->b_fname); ++ } ++ } ++ curbuf = save_curbuf; ++ } ++ #endif ++ + /* 'list', 'number' */ + else if ((int *)varp == &curwin->w_p_list + || (int *)varp == &curwin->w_p_nu +*** ../vim-7.3.391/src/testdir/test72.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test72.in 2012-01-04 19:04:17.000000000 +0100 +*************** +*** 51,56 **** +--- 51,62 ---- + :e Xtestfile + uuu:w >>test.out + :" ++ :" Test that reading the undofiles when setting undofile works ++ :set noundofile ul=0 ++ i ++ u:e! Xtestfile ++ :set undofile ul=100 ++ uuuuuu:w >>test.out + :" And now with encryption, cryptmethod=zip + :e! Xtestfile + :set undofile cm=zip +*** ../vim-7.3.391/src/testdir/test72.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test72.ok 2012-01-04 19:04:17.000000000 +0100 +*************** +*** 7,12 **** +--- 7,22 ---- + eight + nine + ten ++ one ++ two ++ three ++ four ++ five ++ six ++ seven ++ eight ++ nine ++ ten + monday + wednesday + thursday +*** ../vim-7.3.391/src/version.c 2012-01-04 14:35:31.000000000 +0100 +--- src/version.c 2012-01-04 19:33:41.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 392, + /**/ + +-- +BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One. +ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O + Lord bless this thy hand grenade that with it thou mayest + blow thine enemies to tiny bits, in thy mercy. "and the Lord + did grin and people did feast upon the lambs and sloths and + carp and anchovies and orang-utans and breakfast cereals and + fruit bats and... +BROTHER MAYNARD: Skip a bit brother ... + "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 /// diff --git a/source/ap/vim/patches/7.3.393 b/source/ap/vim/patches/7.3.393 new file mode 100644 index 00000000..ca6cbc96 --- /dev/null +++ b/source/ap/vim/patches/7.3.393 @@ -0,0 +1,130 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.393 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.393 +Problem: Win32: When resizing Vim it is always moved to the primary monitor + if the secondary monitor is on the left. +Solution: Use the nearest monitor. (Yukihiro Nakadaira) +Files: src/gui_w32.c + + +*** ../vim-7.3.392/src/gui_w32.c 2011-12-15 21:51:32.000000000 +0100 +--- src/gui_w32.c 2012-01-04 20:25:58.000000000 +0100 +*************** +*** 1661,1669 **** + { + RECT workarea_rect; + int win_width, win_height; +- int win_xpos, win_ypos; + WINDOWPLACEMENT wndpl; +- int workarea_left; + + /* Try to keep window completely on screen. */ + /* Get position of the screen work area. This is the part that is not +--- 1661,1667 ---- +*************** +*** 1685,1693 **** + GetWindowPlacement(s_hwnd, &wndpl); + } + +- win_xpos = wndpl.rcNormalPosition.left; +- win_ypos = wndpl.rcNormalPosition.top; +- + /* compute the size of the outside of the window */ + win_width = width + GetSystemMetrics(SM_CXFRAME) * 2; + win_height = height + GetSystemMetrics(SM_CYFRAME) * 2 +--- 1683,1688 ---- +*************** +*** 1697,1732 **** + #endif + ; + +! /* There is an inconsistency when using two monitors and Vim is on the +! * second (right) one: win_xpos will be the offset from the workarea of +! * the left monitor. While with one monitor it's the offset from the +! * workarea (including a possible taskbar on the left). Detect the second +! * monitor by checking for the left offset to be quite big. */ +! if (workarea_rect.left > 300) +! workarea_left = 0; +! else +! workarea_left = workarea_rect.left; + +! /* If the window is going off the screen, move it on to the screen. +! * win_xpos and win_ypos are relative to the workarea. */ + if ((direction & RESIZE_HOR) +! && workarea_left + win_xpos + win_width > workarea_rect.right) +! win_xpos = workarea_rect.right - win_width - workarea_left; + +! if ((direction & RESIZE_HOR) && win_xpos < 0) +! win_xpos = 0; + + if ((direction & RESIZE_VERT) +! && workarea_rect.top + win_ypos + win_height > workarea_rect.bottom) +! win_ypos = workarea_rect.bottom - win_height - workarea_rect.top; + +! if ((direction & RESIZE_VERT) && win_ypos < 0) +! win_ypos = 0; +! +! wndpl.rcNormalPosition.left = win_xpos; +! wndpl.rcNormalPosition.right = win_xpos + win_width; +! wndpl.rcNormalPosition.top = win_ypos; +! wndpl.rcNormalPosition.bottom = win_ypos + win_height; + + /* set window position - we should use SetWindowPlacement rather than + * SetWindowPos as the MSDN docs say the coord systems returned by +--- 1692,1723 ---- + #endif + ; + +! /* The following should take care of keeping Vim on the same monitor, no +! * matter if the secondary monitor is left or right of the primary +! * monitor. */ +! wndpl.rcNormalPosition.right = wndpl.rcNormalPosition.left + win_width; +! wndpl.rcNormalPosition.bottom = wndpl.rcNormalPosition.top + win_height; + +! /* If the window is going off the screen, move it on to the screen. */ + if ((direction & RESIZE_HOR) +! && wndpl.rcNormalPosition.right > workarea_rect.right) +! OffsetRect(&wndpl.rcNormalPosition, +! workarea_rect.right - wndpl.rcNormalPosition.right, 0); + +! if ((direction & RESIZE_HOR) +! && wndpl.rcNormalPosition.left < workarea_rect.left) +! OffsetRect(&wndpl.rcNormalPosition, +! workarea_rect.left - wndpl.rcNormalPosition.left, 0); + + if ((direction & RESIZE_VERT) +! && wndpl.rcNormalPosition.bottom > workarea_rect.bottom) +! OffsetRect(&wndpl.rcNormalPosition, +! 0, workarea_rect.bottom - wndpl.rcNormalPosition.bottom); + +! if ((direction & RESIZE_VERT) +! && wndpl.rcNormalPosition.top < workarea_rect.top) +! OffsetRect(&wndpl.rcNormalPosition, +! 0, workarea_rect.top - wndpl.rcNormalPosition.top); + + /* set window position - we should use SetWindowPlacement rather than + * SetWindowPos as the MSDN docs say the coord systems returned by +*** ../vim-7.3.392/src/version.c 2012-01-04 19:34:32.000000000 +0100 +--- src/version.c 2012-01-04 20:28:57.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 393, + /**/ + +-- +I wonder, do vegetarians eat fruit bats? + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.394 b/source/ap/vim/patches/7.3.394 new file mode 100644 index 00000000..20c7cffe --- /dev/null +++ b/source/ap/vim/patches/7.3.394 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.394 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.394 +Problem: When placing a mark while starting up a screen redraw messes up + the screen. (lith) +Solution: Don't redraw while still starting up. (Christian Brabandt) +Files: src/screen.c + + +*** ../vim-7.3.393/src/screen.c 2011-09-02 14:07:31.000000000 +0200 +--- src/screen.c 2012-01-10 12:36:52.000000000 +0100 +*************** +*** 764,772 **** + doit = TRUE; + } + +! /* Return when there is nothing to do or screen updating already +! * happening. */ +! if (!doit || updating_screen) + return; + + /* update all windows that need updating */ +--- 764,776 ---- + doit = TRUE; + } + +! /* Return when there is nothing to do, screen updating is already +! * happening (recursive call) or still starting up. */ +! if (!doit || updating_screen +! #ifdef FEAT_GUI +! || gui.starting +! #endif +! || starting) + return; + + /* update all windows that need updating */ +*** ../vim-7.3.393/src/version.c 2012-01-04 20:29:18.000000000 +0100 +--- src/version.c 2012-01-10 12:41:32.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 394, + /**/ + +-- +It is illegal for anyone to try and stop a child from playfully jumping over +puddles of water. + [real standing law in California, 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 /// diff --git a/source/ap/vim/patches/7.3.395 b/source/ap/vim/patches/7.3.395 new file mode 100644 index 00000000..cb268939 --- /dev/null +++ b/source/ap/vim/patches/7.3.395 @@ -0,0 +1,115 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.395 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.395 (after 7.3.251) +Problem: "dv?bar" in the last line deletes too much and breaks undo. +Solution: Only adjust the cursor position when it's after the last line of + the buffer. Add a test. (Christian Brabandt) +Files: src/ops.c, src/testdir/test43.in, src/testdir/test43.ok + + +*** ../vim-7.3.394/src/ops.c 2011-09-21 17:33:49.000000000 +0200 +--- src/ops.c 2012-01-10 13:28:05.000000000 +0100 +*************** +*** 1961,1968 **** + /* Special case: gH<Del> deletes the last line. */ + del_lines(1L, FALSE); + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ +! if (curwin->w_cursor.lnum > 1) +! --curwin->w_cursor.lnum; + } + else + { +--- 1962,1969 ---- + /* Special case: gH<Del> deletes the last line. */ + del_lines(1L, FALSE); + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ +! if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count) +! curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count; + } + else + { +*************** +*** 4434,4440 **** + #endif + + /* +! * implementation of the format operator 'gq' + */ + void + op_format(oap, keep_cursor) +--- 4435,4441 ---- + #endif + + /* +! * Implementation of the format operator 'gq'. + */ + void + op_format(oap, keep_cursor) +*** ../vim-7.3.394/src/testdir/test43.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test43.in 2012-01-10 13:41:13.000000000 +0100 +*************** +*** 13,19 **** + x:set magic + /\v(a)(b)\2\1\1/e + x/\V[ab]\(\[xy]\)\1 +! x:?^1?,$w! test.out + :qa! + ENDTEST + +--- 13,23 ---- + x:set magic + /\v(a)(b)\2\1\1/e + x/\V[ab]\(\[xy]\)\1 +! x:$ +! :set undolevels=100 +! dv?bar? +! Yup:" +! :?^1?,$w! test.out + :qa! + ENDTEST + +*************** +*** 25,27 **** +--- 29,33 ---- + 6 x ^aa$ x + 7 (a)(b) abbaa + 8 axx [ab]xx ++ 9 foobar ++ +*** ../vim-7.3.394/src/testdir/test43.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test43.ok 2012-01-10 13:42:39.000000000 +0100 +*************** +*** 6,8 **** +--- 6,11 ---- + 6 x aa$ x + 7 (a)(b) abba + 8 axx ab]xx ++ 9 foobar ++ 9 foo ++ +*** ../vim-7.3.394/src/version.c 2012-01-10 12:42:05.000000000 +0100 +--- src/version.c 2012-01-10 13:30:40.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 395, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.396 b/source/ap/vim/patches/7.3.396 new file mode 100644 index 00000000..72b55a29 --- /dev/null +++ b/source/ap/vim/patches/7.3.396 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.396 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.396 +Problem: After forcing an operator to be characterwise it can still become + linewise when spanning whole lines. +Solution: Don't make the operator linewise when motion_force was set. + (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.3.395/src/ops.c 2012-01-10 13:44:23.000000000 +0100 +--- src/ops.c 2012-01-10 13:28:05.000000000 +0100 +*************** +*** 1648,1653 **** +--- 1648,1654 ---- + && !oap->block_mode + #endif + && oap->line_count > 1 ++ && oap->motion_force == NUL + && oap->op_type == OP_DELETE) + { + ptr = ml_get(oap->end.lnum) + oap->end.col; +*** ../vim-7.3.395/src/version.c 2012-01-10 13:44:23.000000000 +0100 +--- src/version.c 2012-01-10 13:45:31.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 396, + /**/ + +-- +Any sufficiently advanced technology is indistinguishable from magic. + Arthur C. Clarke +Any sufficiently advanced bug is indistinguishable from a feature. + Rich Kulawiec + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.397 b/source/ap/vim/patches/7.3.397 new file mode 100644 index 00000000..866b3aac --- /dev/null +++ b/source/ap/vim/patches/7.3.397 @@ -0,0 +1,224 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.397 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.397 +Problem: ":helpgrep" does not work properly when 'encoding' is not utf-8 or + latin1. +Solution: Convert non-ascii lines to 'encoding'. (Yasuhiro Matsumoto) +Files: src/quickfix.c, src/spell.c, src/misc2.c, src/proto/misc2.pro + + +*** ../vim-7.3.396/src/quickfix.c 2011-12-30 15:01:55.000000000 +0100 +--- src/quickfix.c 2012-01-10 16:18:51.000000000 +0100 +*************** +*** 3914,3919 **** +--- 3914,3929 ---- + regmatch.rm_ic = FALSE; + if (regmatch.regprog != NULL) + { ++ #ifdef FEAT_MBYTE ++ vimconv_T vc; ++ ++ /* Help files are in utf-8 or latin1, convert lines when 'encoding' ++ * differs. */ ++ vc.vc_type = CONV_NONE; ++ if (!enc_utf8) ++ convert_setup(&vc, (char_u *)"utf-8", p_enc); ++ #endif ++ + /* create a new quickfix list */ + qf_new_list(qi, *eap->cmdlinep); + +*************** +*** 3948,3968 **** + lnum = 1; + while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int) + { +! if (vim_regexec(®match, IObuff, (colnr_T)0)) + { +! int l = (int)STRLEN(IObuff); + + /* remove trailing CR, LF, spaces, etc. */ +! while (l > 0 && IObuff[l - 1] <= ' ') +! IObuff[--l] = NUL; + + if (qf_add_entry(qi, &prevp, + NULL, /* dir */ + fnames[fi], + 0, +! IObuff, + lnum, +! (int)(regmatch.startp[0] - IObuff) + + 1, /* col */ + FALSE, /* vis_col */ + NULL, /* search pattern */ +--- 3958,3990 ---- + lnum = 1; + while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int) + { +! char_u *line = IObuff; +! #ifdef FEAT_MBYTE +! /* Convert a line if 'encoding' is not utf-8 and +! * the line contains a non-ASCII character. */ +! if (vc.vc_type != CONV_NONE +! && has_non_ascii(IObuff)) { +! line = string_convert(&vc, IObuff, NULL); +! if (line == NULL) +! line = IObuff; +! } +! #endif +! +! if (vim_regexec(®match, line, (colnr_T)0)) + { +! int l = (int)STRLEN(line); + + /* remove trailing CR, LF, spaces, etc. */ +! while (l > 0 && line[l - 1] <= ' ') +! line[--l] = NUL; + + if (qf_add_entry(qi, &prevp, + NULL, /* dir */ + fnames[fi], + 0, +! line, + lnum, +! (int)(regmatch.startp[0] - line) + + 1, /* col */ + FALSE, /* vis_col */ + NULL, /* search pattern */ +*************** +*** 3972,3980 **** +--- 3994,4010 ---- + ) == FAIL) + { + got_int = TRUE; ++ #ifdef FEAT_MBYTE ++ if (line != IObuff) ++ vim_free(line); ++ #endif + break; + } + } ++ #ifdef FEAT_MBYTE ++ if (line != IObuff) ++ vim_free(line); ++ #endif + ++lnum; + line_breakcheck(); + } +*************** +*** 3984,3990 **** +--- 4014,4025 ---- + FreeWild(fcount, fnames); + } + } ++ + vim_free(regmatch.regprog); ++ #ifdef FEAT_MBYTE ++ if (vc.vc_type != CONV_NONE) ++ convert_setup(&vc, NULL, NULL); ++ #endif + + qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE; + qi->qf_lists[qi->qf_curlist].qf_ptr = +*** ../vim-7.3.396/src/spell.c 2011-09-02 14:18:14.000000000 +0200 +--- src/spell.c 2012-01-10 16:19:33.000000000 +0100 +*************** +*** 5020,5026 **** + static int str_equal __ARGS((char_u *s1, char_u *s2)); + static void add_fromto __ARGS((spellinfo_T *spin, garray_T *gap, char_u *from, char_u *to)); + static int sal_to_bool __ARGS((char_u *s)); +- static int has_non_ascii __ARGS((char_u *s)); + static void spell_free_aff __ARGS((afffile_T *aff)); + static int spell_read_dic __ARGS((spellinfo_T *spin, char_u *fname, afffile_T *affile)); + static int get_affix_flags __ARGS((afffile_T *affile, char_u *afflist)); +--- 5020,5025 ---- +*************** +*** 6485,6507 **** + } + + /* +- * Return TRUE if string "s" contains a non-ASCII character (128 or higher). +- * When "s" is NULL FALSE is returned. +- */ +- static int +- has_non_ascii(s) +- char_u *s; +- { +- char_u *p; +- +- if (s != NULL) +- for (p = s; *p != NUL; ++p) +- if (*p >= 128) +- return TRUE; +- return FALSE; +- } +- +- /* + * Free the structure filled by spell_read_aff(). + */ + static void +--- 6484,6489 ---- +*** ../vim-7.3.396/src/misc2.c 2011-12-08 17:49:31.000000000 +0100 +--- src/misc2.c 2012-01-10 16:25:53.000000000 +0100 +*************** +*** 6541,6543 **** +--- 6541,6563 ---- + #endif + + #endif ++ ++ #if (defined(FEAT_MBYTE) && defined(FEAT_QUICKFIX)) \ ++ || defined(FEAT_SPELL) || defined(PROTO) ++ /* ++ * Return TRUE if string "s" contains a non-ASCII character (128 or higher). ++ * When "s" is NULL FALSE is returned. ++ */ ++ int ++ has_non_ascii(s) ++ char_u *s; ++ { ++ char_u *p; ++ ++ if (s != NULL) ++ for (p = s; *p != NUL; ++p) ++ if (*p >= 128) ++ return TRUE; ++ return FALSE; ++ } ++ #endif +*** ../vim-7.3.396/src/proto/misc2.pro 2011-07-07 16:20:45.000000000 +0200 +--- src/proto/misc2.pro 2012-01-10 16:20:03.000000000 +0100 +*************** +*** 116,119 **** +--- 116,120 ---- + char_u *read_string __ARGS((FILE *fd, int cnt)); + int put_bytes __ARGS((FILE *fd, long_u nr, int len)); + void put_time __ARGS((FILE *fd, time_t the_time)); ++ int has_non_ascii __ARGS((char_u *s)); + /* vim: set ft=c : */ +*** ../vim-7.3.396/src/version.c 2012-01-10 13:46:18.000000000 +0100 +--- src/version.c 2012-01-10 16:26:32.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 397, + /**/ + +-- +Biting someone with your natural teeth is "simple assault," while biting +someone with your false teeth is "aggravated assault." + [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 /// diff --git a/source/ap/vim/patches/7.3.398 b/source/ap/vim/patches/7.3.398 new file mode 100644 index 00000000..8d4b2138 --- /dev/null +++ b/source/ap/vim/patches/7.3.398 @@ -0,0 +1,65 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.398 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.398 +Problem: When creating more than 10 location lists and adding items one by + one a previous location may be used. (Audrius Kažukauskas) +Solution: Clear the location list completely when adding the tenth one. +Files: src/quickfix.c + + +*** ../vim-7.3.397/src/quickfix.c 2012-01-10 16:28:41.000000000 +0100 +--- src/quickfix.c 2012-01-10 16:58:52.000000000 +0100 +*************** +*** 899,906 **** + } + else + qi->qf_curlist = qi->qf_listcount++; +! qi->qf_lists[qi->qf_curlist].qf_index = 0; +! qi->qf_lists[qi->qf_curlist].qf_count = 0; + if (qf_title != NULL) + { + char_u *p = alloc((int)STRLEN(qf_title) + 2); +--- 899,905 ---- + } + else + qi->qf_curlist = qi->qf_listcount++; +! vim_memset(&qi->qf_lists[qi->qf_curlist], 0, (size_t)(sizeof(qf_list_T))); + if (qf_title != NULL) + { + char_u *p = alloc((int)STRLEN(qf_title) + 2); +*************** +*** 909,916 **** + if (p != NULL) + sprintf((char *)p, ":%s", (char *)qf_title); + } +- else +- qi->qf_lists[qi->qf_curlist].qf_title = NULL; + } + + /* +--- 908,913 ---- +*** ../vim-7.3.397/src/version.c 2012-01-10 16:28:41.000000000 +0100 +--- src/version.c 2012-01-10 17:13:09.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 398, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.399 b/source/ap/vim/patches/7.3.399 new file mode 100644 index 00000000..33d06302 --- /dev/null +++ b/source/ap/vim/patches/7.3.399 @@ -0,0 +1,137 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.399 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.399 +Problem: ":cd" doesn't work when the path contains wildcards. (Yukihiro + Nakadaira) +Solution: Ignore wildcard errors when the EW_NOTWILD flag is used. +Files: src/misc1.c + + +*** ../vim-7.3.398/src/misc1.c 2011-12-14 20:21:29.000000000 +0100 +--- src/misc1.c 2012-01-10 17:57:42.000000000 +0100 +*************** +*** 9103,9117 **** + } + + /* compile the regexp into a program */ +! if (flags & EW_NOERROR) + ++emsg_silent; + regmatch.rm_ic = TRUE; /* Always ignore case */ + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); +! if (flags & EW_NOERROR) + --emsg_silent; + vim_free(pat); + +! if (regmatch.regprog == NULL) + { + vim_free(buf); + return 0; +--- 9103,9117 ---- + } + + /* compile the regexp into a program */ +! if (flags & (EW_NOERROR | EW_NOTWILD)) + ++emsg_silent; + regmatch.rm_ic = TRUE; /* Always ignore case */ + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); +! if (flags & (EW_NOERROR | EW_NOTWILD)) + --emsg_silent; + vim_free(pat); + +! if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0) + { + vim_free(buf); + return 0; +*************** +*** 9179,9185 **** + * all entries found with "matchname". */ + if ((p[0] != '.' || starts_with_dot) + && (matchname == NULL +! || vim_regexec(®match, p, (colnr_T)0) + || ((flags & EW_NOTWILD) + && fnamencmp(path + (s - buf), p, e - s) == 0))) + { +--- 9179,9186 ---- + * all entries found with "matchname". */ + if ((p[0] != '.' || starts_with_dot) + && (matchname == NULL +! || (regmatch.regprog != NULL +! && vim_regexec(®match, p, (colnr_T)0)) + || ((flags & EW_NOTWILD) + && fnamencmp(path + (s - buf), p, e - s) == 0))) + { +*************** +*** 9419,9428 **** + else + regmatch.rm_ic = FALSE; /* Don't ignore case */ + #endif + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); + vim_free(pat); + +! if (regmatch.regprog == NULL) + { + vim_free(buf); + return 0; +--- 9420,9433 ---- + else + regmatch.rm_ic = FALSE; /* Don't ignore case */ + #endif ++ if (flags & (EW_NOERROR | EW_NOTWILD)) ++ ++emsg_silent; + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); ++ if (flags & (EW_NOERROR | EW_NOTWILD)) ++ --emsg_silent; + vim_free(pat); + +! if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0) + { + vim_free(buf); + return 0; +*************** +*** 9452,9458 **** + if (dp == NULL) + break; + if ((dp->d_name[0] != '.' || starts_with_dot) +! && (vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0) + || ((flags & EW_NOTWILD) + && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) + { +--- 9457,9464 ---- + if (dp == NULL) + break; + if ((dp->d_name[0] != '.' || starts_with_dot) +! && ((regmatch.regprog != NULL && vim_regexec(®match, +! (char_u *)dp->d_name, (colnr_T)0)) + || ((flags & EW_NOTWILD) + && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) + { +*** ../vim-7.3.398/src/version.c 2012-01-10 17:13:48.000000000 +0100 +--- src/version.c 2012-01-10 18:21:05.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 399, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.400 b/source/ap/vim/patches/7.3.400 new file mode 100644 index 00000000..c621a881 --- /dev/null +++ b/source/ap/vim/patches/7.3.400 @@ -0,0 +1,1762 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.400 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.400 +Problem: Compiler warnings for shadowed variables. +Solution: Remove or rename the variables. +Files: src/charset.c, src/digraph.c, src/edit.c, src/eval.c, src/fold.c, + src/getchar.c, src/message.c, src/misc2.c, src/move.c, + src/netbeans.c, src/option.c, src/os_unix.c, src/screen.c, + src/search.c, src/spell.c, src/syntax.c, src/tag.c, src/window.c + + +*** ../vim-7.3.399/src/charset.c 2010-08-15 21:57:25.000000000 +0200 +--- src/charset.c 2012-01-10 21:55:50.000000000 +0100 +*************** +*** 463,503 **** + if (enc_utf8) + { + int c = utf_ptr2char(STR_PTR(i)); +! int ol = utf_ptr2len(STR_PTR(i)); + int lc = utf_tolower(c); + + /* Only replace the character when it is not an invalid + * sequence (ASCII character or more than one byte) and + * utf_tolower() doesn't return the original character. */ +! if ((c < 0x80 || ol > 1) && c != lc) + { +! int nl = utf_char2len(lc); + + /* If the byte length changes need to shift the following + * characters forward or backward. */ +! if (ol != nl) + { +! if (nl > ol) + { +! if (buf == NULL ? ga_grow(&ga, nl - ol + 1) == FAIL +! : len + nl - ol >= buflen) + { + /* out of memory, keep old char */ + lc = c; +! nl = ol; + } + } +! if (ol != nl) + { + if (buf == NULL) + { +! STRMOVE(GA_PTR(i) + nl, GA_PTR(i) + ol); +! ga.ga_len += nl - ol; + } + else + { +! STRMOVE(buf + i + nl, buf + i + ol); +! len += nl - ol; + } + } + } +--- 463,504 ---- + if (enc_utf8) + { + int c = utf_ptr2char(STR_PTR(i)); +! int olen = utf_ptr2len(STR_PTR(i)); + int lc = utf_tolower(c); + + /* Only replace the character when it is not an invalid + * sequence (ASCII character or more than one byte) and + * utf_tolower() doesn't return the original character. */ +! if ((c < 0x80 || olen > 1) && c != lc) + { +! int nlen = utf_char2len(lc); + + /* If the byte length changes need to shift the following + * characters forward or backward. */ +! if (olen != nlen) + { +! if (nlen > olen) + { +! if (buf == NULL +! ? ga_grow(&ga, nlen - olen + 1) == FAIL +! : len + nlen - olen >= buflen) + { + /* out of memory, keep old char */ + lc = c; +! nlen = olen; + } + } +! if (olen != nlen) + { + if (buf == NULL) + { +! STRMOVE(GA_PTR(i) + nlen, GA_PTR(i) + olen); +! ga.ga_len += nlen - olen; + } + else + { +! STRMOVE(buf + i + nlen, buf + i + olen); +! len += nlen - olen; + } + } + } +*** ../vim-7.3.399/src/digraph.c 2010-08-15 21:57:28.000000000 +0200 +--- src/digraph.c 2012-01-10 21:57:16.000000000 +0100 +*************** +*** 2080,2092 **** + /* + * Lookup the pair "char1", "char2" in the digraph tables. + * If no match, return "char2". +! * If "meta" is TRUE and "char1" is a space, return "char2" | 0x80. + */ + static int +! getexactdigraph(char1, char2, meta) + int char1; + int char2; +! int meta; + { + int i; + int retval = 0; +--- 2080,2092 ---- + /* + * Lookup the pair "char1", "char2" in the digraph tables. + * If no match, return "char2". +! * If "meta_char" is TRUE and "char1" is a space, return "char2" | 0x80. + */ + static int +! getexactdigraph(char1, char2, meta_char) + int char1; + int char2; +! int meta_char; + { + int i; + int retval = 0; +*************** +*** 2159,2165 **** + + if (retval == 0) /* digraph deleted or not found */ + { +! if (char1 == ' ' && meta) /* <space> <char> --> meta-char */ + return (char2 | 0x80); + return char2; + } +--- 2159,2165 ---- + + if (retval == 0) /* digraph deleted or not found */ + { +! if (char1 == ' ' && meta_char) /* <space> <char> --> meta-char */ + return (char2 | 0x80); + return char2; + } +*************** +*** 2171,2186 **** + * Allow for both char1-char2 and char2-char1 + */ + int +! getdigraph(char1, char2, meta) + int char1; + int char2; +! int meta; + { + int retval; + +! if (((retval = getexactdigraph(char1, char2, meta)) == char2) + && (char1 != char2) +! && ((retval = getexactdigraph(char2, char1, meta)) == char1)) + return char2; + return retval; + } +--- 2171,2186 ---- + * Allow for both char1-char2 and char2-char1 + */ + int +! getdigraph(char1, char2, meta_char) + int char1; + int char2; +! int meta_char; + { + int retval; + +! if (((retval = getexactdigraph(char1, char2, meta_char)) == char2) + && (char1 != char2) +! && ((retval = getexactdigraph(char2, char1, meta_char)) == char1)) + return char2; + return retval; + } +*** ../vim-7.3.399/src/edit.c 2011-12-23 13:14:58.000000000 +0100 +--- src/edit.c 2012-01-10 21:58:28.000000000 +0100 +*************** +*** 4003,4026 **** + ins_compl_add_dict(dict) + dict_T *dict; + { +! dictitem_T *refresh; +! dictitem_T *words; + + /* Check for optional "refresh" item. */ + compl_opt_refresh_always = FALSE; +! refresh = dict_find(dict, (char_u *)"refresh", 7); +! if (refresh != NULL && refresh->di_tv.v_type == VAR_STRING) + { +! char_u *v = refresh->di_tv.vval.v_string; + + if (v != NULL && STRCMP(v, (char_u *)"always") == 0) + compl_opt_refresh_always = TRUE; + } + + /* Add completions from a "words" list. */ +! words = dict_find(dict, (char_u *)"words", 5); +! if (words != NULL && words->di_tv.v_type == VAR_LIST) +! ins_compl_add_list(words->di_tv.vval.v_list); + } + + /* +--- 4003,4026 ---- + ins_compl_add_dict(dict) + dict_T *dict; + { +! dictitem_T *di_refresh; +! dictitem_T *di_words; + + /* Check for optional "refresh" item. */ + compl_opt_refresh_always = FALSE; +! di_refresh = dict_find(dict, (char_u *)"refresh", 7); +! if (di_refresh != NULL && di_refresh->di_tv.v_type == VAR_STRING) + { +! char_u *v = di_refresh->di_tv.vval.v_string; + + if (v != NULL && STRCMP(v, (char_u *)"always") == 0) + compl_opt_refresh_always = TRUE; + } + + /* Add completions from a "words" list. */ +! di_words = dict_find(dict, (char_u *)"words", 5); +! if (di_words != NULL && di_words->di_tv.v_type == VAR_LIST) +! ins_compl_add_list(di_words->di_tv.vval.v_list); + } + + /* +*** ../vim-7.3.399/src/eval.c 2012-01-04 14:35:31.000000000 +0100 +--- src/eval.c 2012-01-10 22:00:50.000000000 +0100 +*************** +*** 6573,6587 **** + + /* + * Join list "l" into a string in "*gap", using separator "sep". +! * When "echo" is TRUE use String as echoed, otherwise as inside a List. + * Return FAIL or OK. + */ + static int +! list_join(gap, l, sep, echo, copyID) + garray_T *gap; + list_T *l; + char_u *sep; +! int echo; + int copyID; + { + int first = TRUE; +--- 6573,6587 ---- + + /* + * Join list "l" into a string in "*gap", using separator "sep". +! * When "echo_style" is TRUE use String as echoed, otherwise as inside a List. + * Return FAIL or OK. + */ + static int +! list_join(gap, l, sep, echo_style, copyID) + garray_T *gap; + list_T *l; + char_u *sep; +! int echo_style; + int copyID; + { + int first = TRUE; +*************** +*** 6597,6603 **** + else + ga_concat(gap, sep); + +! if (echo) + s = echo_string(&item->li_tv, &tofree, numbuf, copyID); + else + s = tv2string(&item->li_tv, &tofree, numbuf, copyID); +--- 6597,6603 ---- + else + ga_concat(gap, sep); + +! if (echo_style) + s = echo_string(&item->li_tv, &tofree, numbuf, copyID); + else + s = tv2string(&item->li_tv, &tofree, numbuf, copyID); +*************** +*** 17893,17899 **** + typval_T *argvars; + typval_T *rettv; + { +! char_u *instr; + char_u *fromstr; + char_u *tostr; + char_u *p; +--- 17893,17899 ---- + typval_T *argvars; + typval_T *rettv; + { +! char_u *in_str; + char_u *fromstr; + char_u *tostr; + char_u *p; +*************** +*** 17910,17916 **** + char_u buf2[NUMBUFLEN]; + garray_T ga; + +! instr = get_tv_string(&argvars[0]); + fromstr = get_tv_string_buf_chk(&argvars[1], buf); + tostr = get_tv_string_buf_chk(&argvars[2], buf2); + +--- 17910,17916 ---- + char_u buf2[NUMBUFLEN]; + garray_T ga; + +! in_str = get_tv_string(&argvars[0]); + fromstr = get_tv_string_buf_chk(&argvars[1], buf); + tostr = get_tv_string_buf_chk(&argvars[2], buf2); + +*************** +*** 17936,17954 **** + } + + /* fromstr and tostr have to contain the same number of chars */ +! while (*instr != NUL) + { + #ifdef FEAT_MBYTE + if (has_mbyte) + { +! inlen = (*mb_ptr2len)(instr); +! cpstr = instr; + cplen = inlen; + idx = 0; + for (p = fromstr; *p != NUL; p += fromlen) + { + fromlen = (*mb_ptr2len)(p); +! if (fromlen == inlen && STRNCMP(instr, p, inlen) == 0) + { + for (p = tostr; *p != NUL; p += tolen) + { +--- 17936,17954 ---- + } + + /* fromstr and tostr have to contain the same number of chars */ +! while (*in_str != NUL) + { + #ifdef FEAT_MBYTE + if (has_mbyte) + { +! inlen = (*mb_ptr2len)(in_str); +! cpstr = in_str; + cplen = inlen; + idx = 0; + for (p = fromstr; *p != NUL; p += fromlen) + { + fromlen = (*mb_ptr2len)(p); +! if (fromlen == inlen && STRNCMP(in_str, p, inlen) == 0) + { + for (p = tostr; *p != NUL; p += tolen) + { +*************** +*** 17967,17977 **** + ++idx; + } + +! if (first && cpstr == instr) + { + /* Check that fromstr and tostr have the same number of + * (multi-byte) characters. Done only once when a character +! * of instr doesn't appear in fromstr. */ + first = FALSE; + for (p = tostr; *p != NUL; p += tolen) + { +--- 17967,17977 ---- + ++idx; + } + +! if (first && cpstr == in_str) + { + /* Check that fromstr and tostr have the same number of + * (multi-byte) characters. Done only once when a character +! * of in_str doesn't appear in fromstr. */ + first = FALSE; + for (p = tostr; *p != NUL; p += tolen) + { +*************** +*** 17986,18003 **** + mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen); + ga.ga_len += cplen; + +! instr += inlen; + } + else + #endif + { + /* When not using multi-byte chars we can do it faster. */ +! p = vim_strchr(fromstr, *instr); + if (p != NULL) + ga_append(&ga, tostr[p - fromstr]); + else +! ga_append(&ga, *instr); +! ++instr; + } + } + +--- 17986,18003 ---- + mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen); + ga.ga_len += cplen; + +! in_str += inlen; + } + else + #endif + { + /* When not using multi-byte chars we can do it faster. */ +! p = vim_strchr(fromstr, *in_str); + if (p != NULL) + ga_append(&ga, tostr[p - fromstr]); + else +! ga_append(&ga, *in_str); +! ++in_str; + } + } + +*** ../vim-7.3.399/src/fold.c 2011-08-26 16:12:55.000000000 +0200 +--- src/fold.c 2012-01-10 22:01:26.000000000 +0100 +*************** +*** 1033,1042 **** + * Init the fold info in a new window. + */ + void +! foldInitWin(newwin) +! win_T *newwin; + { +! ga_init2(&newwin->w_folds, (int)sizeof(fold_T), 10); + } + + /* find_wl_entry() {{{2 */ +--- 1033,1042 ---- + * Init the fold info in a new window. + */ + void +! foldInitWin(new_win) +! win_T *new_win; + { +! ga_init2(&new_win->w_folds, (int)sizeof(fold_T), 10); + } + + /* find_wl_entry() {{{2 */ +*** ../vim-7.3.399/src/getchar.c 2011-12-23 14:54:01.000000000 +0100 +--- src/getchar.c 2012-01-10 22:02:30.000000000 +0100 +*************** +*** 418,429 **** + + /* + * Remove the contents of the stuff buffer and the mapped characters in the +! * typeahead buffer (used in case of an error). If 'typeahead' is true, + * flush all typeahead characters (used when interrupted by a CTRL-C). + */ + void +! flush_buffers(typeahead) +! int typeahead; + { + init_typebuf(); + +--- 418,429 ---- + + /* + * Remove the contents of the stuff buffer and the mapped characters in the +! * typeahead buffer (used in case of an error). If "flush_typeahead" is true, + * flush all typeahead characters (used when interrupted by a CTRL-C). + */ + void +! flush_buffers(flush_typeahead) +! int flush_typeahead; + { + init_typebuf(); + +*************** +*** 431,437 **** + while (read_stuff(TRUE) != NUL) + ; + +! if (typeahead) /* remove all typeahead */ + { + /* + * We have to get all characters, because we may delete the first part +--- 431,437 ---- + while (read_stuff(TRUE) != NUL) + ; + +! if (flush_typeahead) /* remove all typeahead */ + { + /* + * We have to get all characters, because we may delete the first part +*** ../vim-7.3.399/src/message.c 2011-12-30 14:14:16.000000000 +0100 +--- src/message.c 2012-01-10 22:03:56.000000000 +0100 +*************** +*** 2487,2493 **** + #ifdef FEAT_CON_DIALOG + int retval = FALSE; + #endif +! int scroll; + msgchunk_T *mp_last = NULL; + msgchunk_T *mp; + int i; +--- 2487,2493 ---- + #ifdef FEAT_CON_DIALOG + int retval = FALSE; + #endif +! int toscroll; + msgchunk_T *mp_last = NULL; + msgchunk_T *mp; + int i; +*************** +*** 2538,2586 **** + } + #endif + +! scroll = 0; + switch (c) + { + case BS: /* scroll one line back */ + case K_BS: + case 'k': + case K_UP: +! scroll = -1; + break; + + case CAR: /* one extra line */ + case NL: + case 'j': + case K_DOWN: +! scroll = 1; + break; + + case 'u': /* Up half a page */ +! scroll = -(Rows / 2); + break; + + case 'd': /* Down half a page */ +! scroll = Rows / 2; + break; + + case 'b': /* one page back */ + case K_PAGEUP: +! scroll = -(Rows - 1); + break; + + case ' ': /* one extra page */ + case 'f': + case K_PAGEDOWN: + case K_LEFTMOUSE: +! scroll = Rows - 1; + break; + + case 'g': /* all the way back to the start */ +! scroll = -999999; + break; + + case 'G': /* all the way to the end */ +! scroll = 999999; + lines_left = 999999; + break; + +--- 2538,2586 ---- + } + #endif + +! toscroll = 0; + switch (c) + { + case BS: /* scroll one line back */ + case K_BS: + case 'k': + case K_UP: +! toscroll = -1; + break; + + case CAR: /* one extra line */ + case NL: + case 'j': + case K_DOWN: +! toscroll = 1; + break; + + case 'u': /* Up half a page */ +! toscroll = -(Rows / 2); + break; + + case 'd': /* Down half a page */ +! toscroll = Rows / 2; + break; + + case 'b': /* one page back */ + case K_PAGEUP: +! toscroll = -(Rows - 1); + break; + + case ' ': /* one extra page */ + case 'f': + case K_PAGEDOWN: + case K_LEFTMOUSE: +! toscroll = Rows - 1; + break; + + case 'g': /* all the way back to the start */ +! toscroll = -999999; + break; + + case 'G': /* all the way to the end */ +! toscroll = 999999; + lines_left = 999999; + break; + +*************** +*** 2633,2641 **** + continue; + } + +! if (scroll != 0) + { +! if (scroll < 0) + { + /* go to start of last line */ + if (mp_last == NULL) +--- 2633,2641 ---- + continue; + } + +! if (toscroll != 0) + { +! if (toscroll < 0) + { + /* go to start of last line */ + if (mp_last == NULL) +*************** +*** 2653,2659 **** + if (mp != NULL && mp->sb_prev != NULL) + { + /* Find line to be displayed at top. */ +! for (i = 0; i > scroll; --i) + { + if (mp == NULL || mp->sb_prev == NULL) + break; +--- 2653,2659 ---- + if (mp != NULL && mp->sb_prev != NULL) + { + /* Find line to be displayed at top. */ +! for (i = 0; i > toscroll; --i) + { + if (mp == NULL || mp->sb_prev == NULL) + break; +*************** +*** 2664,2670 **** + mp_last = msg_sb_start(mp_last->sb_prev); + } + +! if (scroll == -1 && screen_ins_lines(0, 0, 1, + (int)Rows, NULL) == OK) + { + /* display line at top */ +--- 2664,2670 ---- + mp_last = msg_sb_start(mp_last->sb_prev); + } + +! if (toscroll == -1 && screen_ins_lines(0, 0, 1, + (int)Rows, NULL) == OK) + { + /* display line at top */ +*************** +*** 2680,2692 **** + ++msg_scrolled; + } + } +! scroll = 0; + } + } + else + { + /* First display any text that we scrolled back. */ +! while (scroll > 0 && mp_last != NULL) + { + /* scroll up, display line at bottom */ + msg_scroll_up(); +--- 2680,2692 ---- + ++msg_scrolled; + } + } +! toscroll = 0; + } + } + else + { + /* First display any text that we scrolled back. */ +! while (toscroll > 0 && mp_last != NULL) + { + /* scroll up, display line at bottom */ + msg_scroll_up(); +*************** +*** 2694,2704 **** + screen_fill((int)Rows - 2, (int)Rows - 1, 0, + (int)Columns, ' ', ' ', 0); + mp_last = disp_sb_line((int)Rows - 2, mp_last); +! --scroll; + } + } + +! if (scroll <= 0) + { + /* displayed the requested text, more prompt again */ + screen_fill((int)Rows - 1, (int)Rows, 0, +--- 2694,2704 ---- + screen_fill((int)Rows - 2, (int)Rows - 1, 0, + (int)Columns, ' ', ' ', 0); + mp_last = disp_sb_line((int)Rows - 2, mp_last); +! --toscroll; + } + } + +! if (toscroll <= 0) + { + /* displayed the requested text, more prompt again */ + screen_fill((int)Rows - 1, (int)Rows, 0, +*************** +*** 2708,2714 **** + } + + /* display more text, return to caller */ +! lines_left = scroll; + } + + break; +--- 2708,2714 ---- + } + + /* display more text, return to caller */ +! lines_left = toscroll; + } + + break; +*** ../vim-7.3.399/src/misc2.c 2012-01-10 16:28:41.000000000 +0100 +--- src/misc2.c 2012-01-10 22:04:25.000000000 +0100 +*************** +*** 1559,1565 **** + if (enc_utf8) + { + int c, uc; +! int nl; + char_u *s; + + c = utf_ptr2char(p); +--- 1559,1565 ---- + if (enc_utf8) + { + int c, uc; +! int newl; + char_u *s; + + c = utf_ptr2char(p); +*************** +*** 1568,1588 **** + /* Reallocate string when byte count changes. This is rare, + * thus it's OK to do another malloc()/free(). */ + l = utf_ptr2len(p); +! nl = utf_char2len(uc); +! if (nl != l) + { +! s = alloc((unsigned)STRLEN(res) + 1 + nl - l); + if (s == NULL) + break; + mch_memmove(s, res, p - res); +! STRCPY(s + (p - res) + nl, p + l); + p = s + (p - res); + vim_free(res); + res = s; + } + + utf_char2bytes(uc, p); +! p += nl; + } + else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1) + p += l; /* skip multi-byte character */ +--- 1568,1588 ---- + /* Reallocate string when byte count changes. This is rare, + * thus it's OK to do another malloc()/free(). */ + l = utf_ptr2len(p); +! newl = utf_char2len(uc); +! if (newl != l) + { +! s = alloc((unsigned)STRLEN(res) + 1 + newl - l); + if (s == NULL) + break; + mch_memmove(s, res, p - res); +! STRCPY(s + (p - res) + newl, p + l); + p = s + (p - res); + vim_free(res); + res = s; + } + + utf_char2bytes(uc, p); +! p += newl; + } + else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1) + p += l; /* skip multi-byte character */ +*** ../vim-7.3.399/src/move.c 2011-02-01 18:01:06.000000000 +0100 +--- src/move.c 2012-01-10 22:05:22.000000000 +0100 +*************** +*** 926,933 **** + * Also updates curwin->w_leftcol. + */ + void +! curs_columns(scroll) +! int scroll; /* when TRUE, may scroll horizontally */ + { + int diff; + int extra; /* offset for first screen line */ +--- 926,933 ---- + * Also updates curwin->w_leftcol. + */ + void +! curs_columns(may_scroll) +! int may_scroll; /* when TRUE, may scroll horizontally */ + { + int diff; + int extra; /* offset for first screen line */ +*************** +*** 1014,1020 **** + /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line + * is not folded. + * If scrolling is off, curwin->w_leftcol is assumed to be 0 */ +! else if (scroll + #ifdef FEAT_FOLDING + && !curwin->w_cline_folded + #endif +--- 1014,1020 ---- + /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line + * is not folded. + * If scrolling is off, curwin->w_leftcol is assumed to be 0 */ +! else if (may_scroll + #ifdef FEAT_FOLDING + && !curwin->w_cline_folded + #endif +*** ../vim-7.3.399/src/netbeans.c 2011-10-20 21:58:20.000000000 +0200 +--- src/netbeans.c 2012-01-10 22:16:26.000000000 +0100 +*************** +*** 1395,1401 **** + int cmdno, + char_u *args) /* points to space before arguments or NUL */ + { +! int doupdate = 0; + long off = 0; + nbbuf_T *buf = nb_get_buf(bufno); + static int skip = 0; +--- 1395,1401 ---- + int cmdno, + char_u *args) /* points to space before arguments or NUL */ + { +! int do_update = 0; + long off = 0; + nbbuf_T *buf = nb_get_buf(bufno); + static int skip = 0; +*************** +*** 1600,1606 **** + last.lnum, last.col)); + del_from_lnum = first.lnum; + del_to_lnum = last.lnum; +! doupdate = 1; + + /* Get the position of the first byte after the deleted + * section. "next" is NULL when deleting to the end of the +--- 1600,1606 ---- + last.lnum, last.col)); + del_from_lnum = first.lnum; + del_to_lnum = last.lnum; +! do_update = 1; + + /* Get the position of the first byte after the deleted + * section. "next" is NULL when deleting to the end of the +*************** +*** 1777,1783 **** + lnum = lnum_start; + + /* Loop over the "\n" separated lines of the argument. */ +! doupdate = 1; + while (*args != NUL) + { + nl = vim_strchr(args, '\n'); +--- 1777,1783 ---- + lnum = lnum_start; + + /* Loop over the "\n" separated lines of the argument. */ +! do_update = 1; + while (*args != NUL) + { + nl = vim_strchr(args, '\n'); +*************** +*** 1992,1998 **** + EMSG("E640: invalid buffer identifier in initDone"); + return FAIL; + } +! doupdate = 1; + buf->initDone = TRUE; + nb_set_curbuf(buf->bufp); + #if defined(FEAT_AUTOCMD) +--- 1992,1998 ---- + EMSG("E640: invalid buffer identifier in initDone"); + return FAIL; + } +! do_update = 1; + buf->initDone = TRUE; + nb_set_curbuf(buf->bufp); + #if defined(FEAT_AUTOCMD) +*************** +*** 2081,2087 **** + ECMD_HIDE + ECMD_OLDBUF, curwin); + buf->bufp = curbuf; + buf->initDone = TRUE; +! doupdate = 1; + #if defined(FEAT_TITLE) + maketitle(); + #endif +--- 2081,2087 ---- + ECMD_HIDE + ECMD_OLDBUF, curwin); + buf->bufp = curbuf; + buf->initDone = TRUE; +! do_update = 1; + #if defined(FEAT_TITLE) + maketitle(); + #endif +*************** +*** 2109,2115 **** + exarg.forceit = FALSE; + dosetvisible = TRUE; + goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum); +! doupdate = 1; + dosetvisible = FALSE; + + #ifdef FEAT_GUI +--- 2109,2115 ---- + exarg.forceit = FALSE; + dosetvisible = TRUE; + goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum); +! do_update = 1; + dosetvisible = FALSE; + + #ifdef FEAT_GUI +*************** +*** 2309,2315 **** + buf->bufp->b_fnum, TRUE); + buf->bufp = NULL; + buf->initDone = FALSE; +! doupdate = 1; + /* =====================================================================*/ + } + else if (streq((char *)cmd, "setStyle")) /* obsolete... */ +--- 2309,2315 ---- + buf->bufp->b_fnum, TRUE); + buf->bufp = NULL; + buf->initDone = FALSE; +! do_update = 1; + /* =====================================================================*/ + } + else if (streq((char *)cmd, "setStyle")) /* obsolete... */ +*************** +*** 2400,2406 **** + return FAIL; + } + +! doupdate = 1; + + cp = (char *)args; + serNum = strtol(cp, &cp, 10); +--- 2400,2406 ---- + return FAIL; + } + +! do_update = 1; + + cp = (char *)args; + serNum = strtol(cp, &cp, 10); +*************** +*** 2448,2454 **** + nbdebug((" invalid buffer identifier in removeAnno\n")); + return FAIL; + } +! doupdate = 1; + cp = (char *)args; + serNum = strtol(cp, &cp, 10); + args = (char_u *)cp; +--- 2448,2454 ---- + nbdebug((" invalid buffer identifier in removeAnno\n")); + return FAIL; + } +! do_update = 1; + cp = (char *)args; + serNum = strtol(cp, &cp, 10); + args = (char_u *)cp; +*************** +*** 2493,2499 **** + len = strtol(cp, NULL, 10); + args = (char_u *)cp; + pos = off2pos(buf->bufp, off); +! doupdate = 1; + if (!pos) + nbdebug((" no such start pos in %s, %ld\n", cmd, off)); + else +--- 2493,2499 ---- + len = strtol(cp, NULL, 10); + args = (char_u *)cp; + pos = off2pos(buf->bufp, off); +! do_update = 1; + if (!pos) + nbdebug((" no such start pos in %s, %ld\n", cmd, off)); + else +*************** +*** 2555,2561 **** + inAtomic = 0; + if (needupdate) + { +! doupdate = 1; + needupdate = 0; + } + /* =====================================================================*/ +--- 2555,2561 ---- + inAtomic = 0; + if (needupdate) + { +! do_update = 1; + needupdate = 0; + } + /* =====================================================================*/ +*************** +*** 2636,2653 **** + * Unrecognized command is ignored. + */ + } +! if (inAtomic && doupdate) + { + needupdate = 1; +! doupdate = 0; + } + + /* + * Is this needed? I moved the netbeans_Xt_connect() later during startup + * and it may no longer be necessary. If its not needed then needupdate +! * and doupdate can also be removed. + */ +! if (buf != NULL && buf->initDone && doupdate) + { + update_screen(NOT_VALID); + setcursor(); +--- 2636,2653 ---- + * Unrecognized command is ignored. + */ + } +! if (inAtomic && do_update) + { + needupdate = 1; +! do_update = 0; + } + + /* + * Is this needed? I moved the netbeans_Xt_connect() later during startup + * and it may no longer be necessary. If its not needed then needupdate +! * and do_update can also be removed. + */ +! if (buf != NULL && buf->initDone && do_update) + { + update_screen(NOT_VALID); + setcursor(); +*** ../vim-7.3.399/src/option.c 2012-01-04 19:34:32.000000000 +0100 +--- src/option.c 2012-01-10 22:06:03.000000000 +0100 +*************** +*** 8584,8591 **** + long_u flags; + { + /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */ +! int clear = (flags & P_RCLR) == P_RCLR; +! int all = ((flags & P_RALL) == P_RALL || clear); + + #ifdef FEAT_WINDOWS + if ((flags & P_RSTAT) || all) /* mark all status lines dirty */ +--- 8584,8591 ---- + long_u flags; + { + /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */ +! int doclear = (flags & P_RCLR) == P_RCLR; +! int all = ((flags & P_RALL) == P_RALL || doclear); + + #ifdef FEAT_WINDOWS + if ((flags & P_RSTAT) || all) /* mark all status lines dirty */ +*************** +*** 8596,8602 **** + changed_window_setting(); + if (flags & P_RBUF) + redraw_curbuf_later(NOT_VALID); +! if (clear) + redraw_all_later(CLEAR); + else if (all) + redraw_all_later(NOT_VALID); +--- 8596,8602 ---- + changed_window_setting(); + if (flags & P_RBUF) + redraw_curbuf_later(NOT_VALID); +! if (doclear) + redraw_all_later(CLEAR); + else if (all) + redraw_all_later(NOT_VALID); +*** ../vim-7.3.399/src/os_unix.c 2011-10-20 21:09:25.000000000 +0200 +--- src/os_unix.c 2012-01-10 21:48:49.000000000 +0100 +*************** +*** 3884,3890 **** + char_u *p_shcf_copy = NULL; + int i; + char_u *p; +- char_u *s; + int inquote; + int pty_master_fd = -1; /* for pty's */ + # ifdef FEAT_GUI +--- 3884,3889 ---- +*************** +*** 3963,3968 **** +--- 3962,3969 ---- + } + if (cmd != NULL) + { ++ char_u *s; ++ + if (extra_shell_arg != NULL) + argv[argc++] = (char *)extra_shell_arg; + +*************** +*** 4325,4331 **** + linenr_T lnum = curbuf->b_op_start.lnum; + int written = 0; + char_u *lp = ml_get(lnum); +- char_u *s; + size_t l; + + close(fromshell_fd); +--- 4326,4331 ---- +*************** +*** 4339,4345 **** + len = write(toshell_fd, "", (size_t)1); + else + { +! s = vim_strchr(lp + written, NL); + len = write(toshell_fd, (char *)lp + written, + s == NULL ? l + : (size_t)(s - (lp + written))); +--- 4339,4346 ---- + len = write(toshell_fd, "", (size_t)1); + else + { +! char_u *s = vim_strchr(lp + written, NL); +! + len = write(toshell_fd, (char *)lp + written, + s == NULL ? l + : (size_t)(s - (lp + written))); +*** ../vim-7.3.399/src/screen.c 2012-01-10 12:42:05.000000000 +0100 +--- src/screen.c 2012-01-10 22:06:51.000000000 +0100 +*************** +*** 7849,7863 **** + + /* + * screen_valid - allocate screen buffers if size changed +! * If "clear" is TRUE: clear screen if it has been resized. + * Returns TRUE if there is a valid screen to write to. + * Returns FALSE when starting up and screen not initialized yet. + */ + int +! screen_valid(clear) +! int clear; + { +! screenalloc(clear); /* allocate screen buffers if size changed */ + return (ScreenLines != NULL); + } + +--- 7849,7863 ---- + + /* + * screen_valid - allocate screen buffers if size changed +! * If "doclear" is TRUE: clear screen if it has been resized. + * Returns TRUE if there is a valid screen to write to. + * Returns FALSE when starting up and screen not initialized yet. + */ + int +! screen_valid(doclear) +! int doclear; + { +! screenalloc(doclear); /* allocate screen buffers if size changed */ + return (ScreenLines != NULL); + } + +*************** +*** 7872,7879 **** + * final size of the shell is needed. + */ + void +! screenalloc(clear) +! int clear; + { + int new_row, old_row; + #ifdef FEAT_GUI +--- 7872,7879 ---- + * final size of the shell is needed. + */ + void +! screenalloc(doclear) +! int doclear; + { + int new_row, old_row; + #ifdef FEAT_GUI +*************** +*** 8069,8075 **** + * (used when resizing the window at the "--more--" prompt or when + * executing an external command, for the GUI). + */ +! if (!clear) + { + (void)vim_memset(new_ScreenLines + new_row * Columns, + ' ', (size_t)Columns * sizeof(schar_T)); +--- 8069,8075 ---- + * (used when resizing the window at the "--more--" prompt or when + * executing an external command, for the GUI). + */ +! if (!doclear) + { + (void)vim_memset(new_ScreenLines + new_row * Columns, + ' ', (size_t)Columns * sizeof(schar_T)); +*************** +*** 8159,8165 **** + screen_Columns = Columns; + + must_redraw = CLEAR; /* need to clear the screen later */ +! if (clear) + screenclear2(); + + #ifdef FEAT_GUI +--- 8159,8165 ---- + screen_Columns = Columns; + + must_redraw = CLEAR; /* need to clear the screen later */ +! if (doclear) + screenclear2(); + + #ifdef FEAT_GUI +*** ../vim-7.3.399/src/search.c 2011-10-04 17:00:13.000000000 +0200 +--- src/search.c 2012-01-10 22:07:16.000000000 +0100 +*************** +*** 2402,2425 **** + { + if (vim_strchr(p, ';') != NULL) /* there may be comments */ + { +! int instr = FALSE; /* inside of string */ + + p = line; /* scan from start */ + while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL) + { + if (*p == '"') + { +! if (instr) + { + if (*(p - 1) != '\\') /* skip escaped quote */ +! instr = FALSE; + } + else if (p == line || ((p - line) >= 2 + /* skip #\" form */ + && *(p - 1) != '\\' && *(p - 2) != '#')) +! instr = TRUE; + } +! else if (!instr && ((p - line) < 2 + || (*(p - 1) != '\\' && *(p - 2) != '#'))) + break; /* found! */ + ++p; +--- 2402,2425 ---- + { + if (vim_strchr(p, ';') != NULL) /* there may be comments */ + { +! int in_str = FALSE; /* inside of string */ + + p = line; /* scan from start */ + while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL) + { + if (*p == '"') + { +! if (in_str) + { + if (*(p - 1) != '\\') /* skip escaped quote */ +! in_str = FALSE; + } + else if (p == line || ((p - line) >= 2 + /* skip #\" form */ + && *(p - 1) != '\\' && *(p - 2) != '#')) +! in_str = TRUE; + } +! else if (!in_str && ((p - line) < 2 + || (*(p - 1) != '\\' && *(p - 2) != '#'))) + break; /* found! */ + ++p; +*** ../vim-7.3.399/src/spell.c 2012-01-10 16:28:41.000000000 +0100 +--- src/spell.c 2012-01-10 22:09:23.000000000 +0100 +*************** +*** 5049,5055 **** + static int offset2bytes __ARGS((int nr, char_u *buf)); + static int bytes2offset __ARGS((char_u **pp)); + static void sug_write __ARGS((spellinfo_T *spin, char_u *fname)); +! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int overwrite, int added_word)); + static void spell_message __ARGS((spellinfo_T *spin, char_u *str)); + static void init_spellfile __ARGS((void)); + +--- 5049,5055 ---- + static int offset2bytes __ARGS((int nr, char_u *buf)); + static int bytes2offset __ARGS((char_u **pp)); + static void sug_write __ARGS((spellinfo_T *spin, char_u *fname)); +! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int over_write, int added_word)); + static void spell_message __ARGS((spellinfo_T *spin, char_u *str)); + static void init_spellfile __ARGS((void)); + +*************** +*** 9085,9095 **** + * and ".spl" is appended to make the output file name. + */ + static void +! mkspell(fcount, fnames, ascii, overwrite, added_word) + int fcount; + char_u **fnames; + int ascii; /* -ascii argument given */ +! int overwrite; /* overwrite existing output file */ + int added_word; /* invoked through "zg" */ + { + char_u *fname = NULL; +--- 9085,9095 ---- + * and ".spl" is appended to make the output file name. + */ + static void +! mkspell(fcount, fnames, ascii, over_write, added_word) + int fcount; + char_u **fnames; + int ascii; /* -ascii argument given */ +! int over_write; /* overwrite existing output file */ + int added_word; /* invoked through "zg" */ + { + char_u *fname = NULL; +*************** +*** 9173,9179 **** + { + /* Check for overwriting before doing things that may take a lot of + * time. */ +! if (!overwrite && mch_stat((char *)wfname, &st) >= 0) + { + EMSG(_(e_exists)); + goto theend; +--- 9173,9179 ---- + { + /* Check for overwriting before doing things that may take a lot of + * time. */ +! if (!over_write && mch_stat((char *)wfname, &st) >= 0) + { + EMSG(_(e_exists)); + goto theend; +*** ../vim-7.3.399/src/syntax.c 2011-06-19 04:54:17.000000000 +0200 +--- src/syntax.c 2012-01-10 22:10:23.000000000 +0100 +*************** +*** 4006,4022 **** + } + + static void +! syn_list_flags(nl, flags, attr) +! struct name_list *nl; + int flags; + int attr; + { + int i; + +! for (i = 0; nl[i].flag != 0; ++i) +! if (flags & nl[i].flag) + { +! msg_puts_attr((char_u *)nl[i].name, attr); + msg_putchar(' '); + } + } +--- 4006,4022 ---- + } + + static void +! syn_list_flags(nlist, flags, attr) +! struct name_list *nlist; + int flags; + int attr; + { + int i; + +! for (i = 0; nlist[i].flag != 0; ++i) +! if (flags & nlist[i].flag) + { +! msg_puts_attr((char_u *)nlist[i].name, attr); + msg_putchar(' '); + } + } +*** ../vim-7.3.399/src/tag.c 2011-12-14 14:15:12.000000000 +0100 +--- src/tag.c 2012-01-10 21:51:05.000000000 +0100 +*************** +*** 1353,1359 **** + int match_count = 0; /* number of matches found */ + char_u **matches; + int mtt; +- int len; + int help_save; + #ifdef FEAT_MULTI_LANG + int help_pri = 0; +--- 1353,1358 ---- +*************** +*** 2235,2240 **** +--- 2234,2241 ---- + */ + if (ga_grow(&ga_match[mtt], 1) == OK) + { ++ int len; ++ + if (help_only) + { + #ifdef FEAT_MULTI_LANG +*** ../vim-7.3.399/src/window.c 2011-12-30 15:01:55.000000000 +0100 +--- src/window.c 2012-01-10 22:11:41.000000000 +0100 +*************** +*** 683,701 **** + } + + /* +! * When "newwin" is NULL: split the current window in two. +! * When "newwin" is not NULL: insert this window at the far + * top/left/right/bottom. + * return FAIL for failure, OK otherwise + */ + int +! win_split_ins(size, flags, newwin, dir) + int size; + int flags; +! win_T *newwin; + int dir; + { +! win_T *wp = newwin; + win_T *oldwin; + int new_size = size; + int i; +--- 683,701 ---- + } + + /* +! * When "new_wp" is NULL: split the current window in two. +! * When "new_wp" is not NULL: insert this window at the far + * top/left/right/bottom. + * return FAIL for failure, OK otherwise + */ + int +! win_split_ins(size, flags, new_wp, dir) + int size; + int flags; +! win_T *new_wp; + int dir; + { +! win_T *wp = new_wp; + win_T *oldwin; + int new_size = size; + int i; +*************** +*** 718,724 **** + /* add a status line when p_ls == 1 and splitting the first window */ + if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0) + { +! if (oldwin->w_height <= p_wmh && newwin == NULL) + { + EMSG(_(e_noroom)); + return FAIL; +--- 718,724 ---- + /* add a status line when p_ls == 1 and splitting the first window */ + if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0) + { +! if (oldwin->w_height <= p_wmh && new_wp == NULL) + { + EMSG(_(e_noroom)); + return FAIL; +*************** +*** 751,757 **** + } + else + available = oldwin->w_width; +! if (available < needed && newwin == NULL) + { + EMSG(_(e_noroom)); + return FAIL; +--- 751,757 ---- + } + else + available = oldwin->w_width; +! if (available < needed && new_wp == NULL) + { + EMSG(_(e_noroom)); + return FAIL; +*************** +*** 815,821 **** + available = oldwin->w_height; + needed += p_wmh; + } +! if (available < needed && newwin == NULL) + { + EMSG(_(e_noroom)); + return FAIL; +--- 815,821 ---- + available = oldwin->w_height; + needed += p_wmh; + } +! if (available < needed && new_wp == NULL) + { + EMSG(_(e_noroom)); + return FAIL; +*************** +*** 888,907 **** + p_sb)))) + { + /* new window below/right of current one */ +! if (newwin == NULL) + wp = win_alloc(oldwin, FALSE); + else + win_append(oldwin, wp); + } + else + { +! if (newwin == NULL) + wp = win_alloc(oldwin->w_prev, FALSE); + else + win_append(oldwin->w_prev, wp); + } + +! if (newwin == NULL) + { + if (wp == NULL) + return FAIL; +--- 888,907 ---- + p_sb)))) + { + /* new window below/right of current one */ +! if (new_wp == NULL) + wp = win_alloc(oldwin, FALSE); + else + win_append(oldwin, wp); + } + else + { +! if (new_wp == NULL) + wp = win_alloc(oldwin->w_prev, FALSE); + else + win_append(oldwin->w_prev, wp); + } + +! if (new_wp == NULL) + { + if (wp == NULL) + return FAIL; +*************** +*** 972,981 **** + frp->fr_parent = curfrp; + } + +! if (newwin == NULL) + frp = wp->w_frame; + else +! frp = newwin->w_frame; + frp->fr_parent = curfrp->fr_parent; + + /* Insert the new frame at the right place in the frame list. */ +--- 972,981 ---- + frp->fr_parent = curfrp; + } + +! if (new_wp == NULL) + frp = wp->w_frame; + else +! frp = new_wp->w_frame; + frp->fr_parent = curfrp->fr_parent; + + /* Insert the new frame at the right place in the frame list. */ +*************** +*** 4284,4302 **** + win_T *after UNUSED; + int hidden UNUSED; + { +! win_T *newwin; + + /* + * allocate window structure and linesizes arrays + */ +! newwin = (win_T *)alloc_clear((unsigned)sizeof(win_T)); +! if (newwin != NULL && win_alloc_lines(newwin) == FAIL) + { +! vim_free(newwin); +! newwin = NULL; + } + +! if (newwin != NULL) + { + #ifdef FEAT_AUTOCMD + /* Don't execute autocommands while the window is not properly +--- 4284,4302 ---- + win_T *after UNUSED; + int hidden UNUSED; + { +! win_T *new_wp; + + /* + * allocate window structure and linesizes arrays + */ +! new_wp = (win_T *)alloc_clear((unsigned)sizeof(win_T)); +! if (new_wp != NULL && win_alloc_lines(new_wp) == FAIL) + { +! vim_free(new_wp); +! new_wp = NULL; + } + +! if (new_wp != NULL) + { + #ifdef FEAT_AUTOCMD + /* Don't execute autocommands while the window is not properly +*************** +*** 4309,4361 **** + */ + #ifdef FEAT_WINDOWS + if (!hidden) +! win_append(after, newwin); + #endif + #ifdef FEAT_VERTSPLIT +! newwin->w_wincol = 0; +! newwin->w_width = Columns; + #endif + + /* position the display and the cursor at the top of the file. */ +! newwin->w_topline = 1; + #ifdef FEAT_DIFF +! newwin->w_topfill = 0; + #endif +! newwin->w_botline = 2; +! newwin->w_cursor.lnum = 1; + #ifdef FEAT_SCROLLBIND +! newwin->w_scbind_pos = 1; + #endif + + /* We won't calculate w_fraction until resizing the window */ +! newwin->w_fraction = 0; +! newwin->w_prev_fraction_row = -1; + + #ifdef FEAT_GUI + if (gui.in_use) + { +! gui_create_scrollbar(&newwin->w_scrollbars[SBAR_LEFT], +! SBAR_LEFT, newwin); +! gui_create_scrollbar(&newwin->w_scrollbars[SBAR_RIGHT], +! SBAR_RIGHT, newwin); + } + #endif + #ifdef FEAT_EVAL + /* init w: variables */ +! init_var_dict(&newwin->w_vars, &newwin->w_winvar); + #endif + #ifdef FEAT_FOLDING +! foldInitWin(newwin); + #endif + #ifdef FEAT_AUTOCMD + unblock_autocmds(); + #endif + #ifdef FEAT_SEARCH_EXTRA +! newwin->w_match_head = NULL; +! newwin->w_next_match_id = 4; + #endif + } +! return newwin; + } + + #if defined(FEAT_WINDOWS) || defined(PROTO) +--- 4309,4361 ---- + */ + #ifdef FEAT_WINDOWS + if (!hidden) +! win_append(after, new_wp); + #endif + #ifdef FEAT_VERTSPLIT +! new_wp->w_wincol = 0; +! new_wp->w_width = Columns; + #endif + + /* position the display and the cursor at the top of the file. */ +! new_wp->w_topline = 1; + #ifdef FEAT_DIFF +! new_wp->w_topfill = 0; + #endif +! new_wp->w_botline = 2; +! new_wp->w_cursor.lnum = 1; + #ifdef FEAT_SCROLLBIND +! new_wp->w_scbind_pos = 1; + #endif + + /* We won't calculate w_fraction until resizing the window */ +! new_wp->w_fraction = 0; +! new_wp->w_prev_fraction_row = -1; + + #ifdef FEAT_GUI + if (gui.in_use) + { +! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_LEFT], +! SBAR_LEFT, new_wp); +! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_RIGHT], +! SBAR_RIGHT, new_wp); + } + #endif + #ifdef FEAT_EVAL + /* init w: variables */ +! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar); + #endif + #ifdef FEAT_FOLDING +! foldInitWin(new_wp); + #endif + #ifdef FEAT_AUTOCMD + unblock_autocmds(); + #endif + #ifdef FEAT_SEARCH_EXTRA +! new_wp->w_match_head = NULL; +! new_wp->w_next_match_id = 4; + #endif + } +! return new_wp; + } + + #if defined(FEAT_WINDOWS) || defined(PROTO) +*** ../vim-7.3.399/src/version.c 2012-01-10 18:37:53.000000000 +0100 +--- src/version.c 2012-01-10 22:23:10.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 400, + /**/ + +-- +A parent can be arrested if his child cannot hold back a burp during a church +service. + [real standing law in Nebraska, 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 /// diff --git a/source/ap/vim/patches/7.3.401 b/source/ap/vim/patches/7.3.401 new file mode 100644 index 00000000..6a473c57 --- /dev/null +++ b/source/ap/vim/patches/7.3.401 @@ -0,0 +1,191 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.401 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.401 +Problem: A couple more shadowed variables. +Solution: Rename the variables. +Files: src/netbeans.c + + +*** ../vim-7.3.400/src/netbeans.c 2012-01-10 22:26:12.000000000 +0100 +--- src/netbeans.c 2012-01-10 22:30:17.000000000 +0100 +*************** +*** 443,449 **** + FILE *fp; + char_u buf[BUFSIZ]; + char_u *lp; +! char_u *nl; + #ifdef UNIX + struct stat st; + +--- 443,449 ---- + FILE *fp; + char_u buf[BUFSIZ]; + char_u *lp; +! char_u *nlp; + #ifdef UNIX + struct stat st; + +*************** +*** 472,479 **** + /* Read the file. There should be one of each parameter */ + while ((lp = (char_u *)fgets((char *)buf, BUFSIZ, fp)) != NULL) + { +! if ((nl = vim_strchr(lp, '\n')) != NULL) +! *nl = 0; /* strip off the trailing newline */ + + if (STRNCMP(lp, "host=", 5) == 0) + { +--- 472,479 ---- + /* Read the file. There should be one of each parameter */ + while ((lp = (char_u *)fgets((char *)buf, BUFSIZ, fp)) != NULL) + { +! if ((nlp = vim_strchr(lp, '\n')) != NULL) +! *nlp = 0; /* strip off the trailing newline */ + + if (STRNCMP(lp, "host=", 5) == 0) + { +*************** +*** 1740,1746 **** + int added = 0; + int oldFire = netbeansFireChanges; + int old_b_changed; +! char_u *nl; + linenr_T lnum; + linenr_T lnum_start; + pos_T *pos; +--- 1740,1746 ---- + int added = 0; + int oldFire = netbeansFireChanges; + int old_b_changed; +! char_u *nlp; + linenr_T lnum; + linenr_T lnum_start; + pos_T *pos; +*************** +*** 1780,1787 **** + do_update = 1; + while (*args != NUL) + { +! nl = vim_strchr(args, '\n'); +! if (nl == NULL) + { + /* Incomplete line, probably truncated. Next "insert" + * command should append to this one. */ +--- 1780,1787 ---- + do_update = 1; + while (*args != NUL) + { +! nlp = vim_strchr(args, '\n'); +! if (nlp == NULL) + { + /* Incomplete line, probably truncated. Next "insert" + * command should append to this one. */ +*************** +*** 1789,1801 **** + } + else + { +! len = nl - args; + + /* + * We need to detect EOL style, because the commands + * use a character offset. + */ +! if (nl > args && nl[-1] == '\r') + { + ff_detected = EOL_DOS; + --len; +--- 1789,1801 ---- + } + else + { +! len = nlp - args; + + /* + * We need to detect EOL style, because the commands + * use a character offset. + */ +! if (nlp > args && nlp[-1] == '\r') + { + ff_detected = EOL_DOS; + --len; +*************** +*** 1814,1820 **** + + /* Insert halfway a line. For simplicity we assume we + * need to append to the line. */ +! newline = alloc_check((unsigned)(STRLEN(oldline) + len + 1)); + if (newline != NULL) + { + STRCPY(newline, oldline); +--- 1814,1821 ---- + + /* Insert halfway a line. For simplicity we assume we + * need to append to the line. */ +! newline = alloc_check( +! (unsigned)(STRLEN(oldline) + len + 1)); + if (newline != NULL) + { + STRCPY(newline, oldline); +*************** +*** 1826,1839 **** + { + /* Append a new line. Not that we always do this, + * also when the text doesn't end in a "\n". */ +! ml_append((linenr_T)(lnum - 1), args, (colnr_T)(len + 1), FALSE); + ++added; + } + +! if (nl == NULL) + break; + ++lnum; +! args = nl + 1; + } + + /* Adjust the marks below the inserted lines. */ +--- 1827,1841 ---- + { + /* Append a new line. Not that we always do this, + * also when the text doesn't end in a "\n". */ +! ml_append((linenr_T)(lnum - 1), args, +! (colnr_T)(len + 1), FALSE); + ++added; + } + +! if (nlp == NULL) + break; + ++lnum; +! args = nlp + 1; + } + + /* Adjust the marks below the inserted lines. */ +*** ../vim-7.3.400/src/version.c 2012-01-10 22:26:12.000000000 +0100 +--- src/version.c 2012-01-10 22:30:47.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 401, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.402 b/source/ap/vim/patches/7.3.402 new file mode 100644 index 00000000..a5501f8c --- /dev/null +++ b/source/ap/vim/patches/7.3.402 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.402 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.402 +Problem: When jumping to the first error a line of the buffer is sometimes + redrawn on top of the list of errors. +Solution: Do not call update_topline_redraw() if the display was scrolled + up. +Files: src/quickfix.c + + +*** ../vim-7.3.401/src/quickfix.c 2012-01-10 17:13:48.000000000 +0100 +--- src/quickfix.c 2012-01-20 13:13:25.000000000 +0100 +*************** +*** 1842,1849 **** + #endif + if (print_message) + { +! /* Update the screen before showing the message */ +! update_topline_redraw(); + sprintf((char *)IObuff, _("(%d of %d)%s%s: "), qf_index, + qi->qf_lists[qi->qf_curlist].qf_count, + qf_ptr->qf_cleared ? _(" (line deleted)") : "", +--- 1842,1851 ---- + #endif + if (print_message) + { +! /* Update the screen before showing the message, unless the screen +! * scrolled up. */ +! if (!msg_scrolled) +! update_topline_redraw(); + sprintf((char *)IObuff, _("(%d of %d)%s%s: "), qf_index, + qi->qf_lists[qi->qf_curlist].qf_count, + qf_ptr->qf_cleared ? _(" (line deleted)") : "", +*** ../vim-7.3.401/src/version.c 2012-01-10 22:31:26.000000000 +0100 +--- src/version.c 2012-01-20 13:17:50.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 402, + /**/ + +-- +If all you have is a hammer, everything looks like a nail. +When your hammer is C++, everything begins to look like a thumb. + -- Steve Hoflich, comp.lang.c++ + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.403 b/source/ap/vim/patches/7.3.403 new file mode 100644 index 00000000..bc3bf549 --- /dev/null +++ b/source/ap/vim/patches/7.3.403 @@ -0,0 +1,108 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.403 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.403 +Problem: ":helpgrep" does not trigger QuickFixCmd* autocommands. +Solution: Trigger the autocommands. (Christian Brabandt) +Files: src/quickfix.c + + +*** ../vim-7.3.402/src/quickfix.c 2012-01-20 13:28:28.000000000 +0100 +--- src/quickfix.c 2012-01-20 13:37:10.000000000 +0100 +*************** +*** 3878,3893 **** + qf_info_T *qi = &ql_info; + int new_qi = FALSE; + win_T *wp; +! +! /* Make 'cpoptions' empty, the 'l' flag should not be used here. */ +! save_cpo = p_cpo; +! p_cpo = empty_option; + + #ifdef FEAT_MULTI_LANG + /* Check for a specified language */ + lang = check_help_lang(eap->arg); + #endif + + if (eap->cmdidx == CMD_lhelpgrep) + { + /* Find an existing help window */ +--- 3878,3912 ---- + qf_info_T *qi = &ql_info; + int new_qi = FALSE; + win_T *wp; +! #ifdef FEAT_AUTOCMD +! char_u *au_name = NULL; +! #endif + + #ifdef FEAT_MULTI_LANG + /* Check for a specified language */ + lang = check_help_lang(eap->arg); + #endif + ++ #ifdef FEAT_AUTOCMD ++ switch (eap->cmdidx) ++ { ++ case CMD_helpgrep: au_name = (char_u *)"helpgrep"; break; ++ case CMD_lhelpgrep: au_name = (char_u *)"lhelpgrep"; break; ++ default: break; ++ } ++ if (au_name != NULL) ++ { ++ apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, ++ curbuf->b_fname, TRUE, curbuf); ++ if (did_throw || force_abort) ++ return; ++ } ++ #endif ++ ++ /* Make 'cpoptions' empty, the 'l' flag should not be used here. */ ++ save_cpo = p_cpo; ++ p_cpo = empty_option; ++ + if (eap->cmdidx == CMD_lhelpgrep) + { + /* Find an existing help window */ +*************** +*** 4036,4041 **** +--- 4055,4071 ---- + qf_update_buffer(qi); + #endif + ++ #ifdef FEAT_AUTOCMD ++ if (au_name != NULL) ++ { ++ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, ++ curbuf->b_fname, TRUE, curbuf); ++ if (!new_qi && qi != &ql_info && qf_find_buf(qi) == NULL) ++ /* autocommands made "qi" invalid */ ++ return; ++ } ++ #endif ++ + /* Jump to first match. */ + if (qi->qf_lists[qi->qf_curlist].qf_count > 0) + qf_jump(qi, 0, 0, FALSE); +*** ../vim-7.3.402/src/version.c 2012-01-20 13:28:28.000000000 +0100 +--- src/version.c 2012-01-20 13:30:37.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 403, + /**/ + +-- +Looking at Perl through Lisp glasses, Perl looks atrocious. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.404 b/source/ap/vim/patches/7.3.404 new file mode 100644 index 00000000..445d7051 --- /dev/null +++ b/source/ap/vim/patches/7.3.404 @@ -0,0 +1,85 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.404 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.404 +Problem: When a complete function uses refresh "always" redo will not work + properly. +Solution: Do not reset compl_leader when compl_opt_refresh_always is set. + (Yasuhiro Matsumoto) +Files: src/edit.c + + +*** ../vim-7.3.403/src/edit.c 2012-01-10 22:26:12.000000000 +0100 +--- src/edit.c 2012-01-20 14:26:06.000000000 +0100 +*************** +*** 3465,3475 **** + if (ins_compl_need_restart()) + ins_compl_restart(); + +! vim_free(compl_leader); +! compl_leader = vim_strnsave(ml_get_curline() + compl_col, + (int)(curwin->w_cursor.col - compl_col)); +! if (compl_leader != NULL) +! ins_compl_new_leader(); + } + + /* +--- 3465,3481 ---- + if (ins_compl_need_restart()) + ins_compl_restart(); + +! /* When 'always' is set, don't reset compl_leader. While completing, +! * cursor don't point original position, changing compl_leader would +! * break redo. */ +! if (!compl_opt_refresh_always) +! { +! vim_free(compl_leader); +! compl_leader = vim_strnsave(ml_get_curline() + compl_col, + (int)(curwin->w_cursor.col - compl_col)); +! if (compl_leader != NULL) +! ins_compl_new_leader(); +! } + } + + /* +*************** +*** 4554,4559 **** +--- 4560,4570 ---- + int found_end = FALSE; + int advance; + ++ /* When user complete function return -1 for findstart which is next ++ * time of 'always', compl_shown_match become NULL. */ ++ if (compl_shown_match == NULL) ++ return -1; ++ + if (compl_leader != NULL + && (compl_shown_match->cp_flags & ORIGINAL_TEXT) == 0) + { +*** ../vim-7.3.403/src/version.c 2012-01-20 13:39:03.000000000 +0100 +--- src/version.c 2012-01-20 14:31:26.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 404, + /**/ + +-- +ARTHUR: I've said I'm sorry about the old woman, but from the behind you + looked ... +DENNIS: What I object to is that you automatically treat me like an inferior... +ARTHUR: Well ... I AM king. + "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 /// diff --git a/source/ap/vim/patches/7.3.405 b/source/ap/vim/patches/7.3.405 new file mode 100644 index 00000000..087aecc4 --- /dev/null +++ b/source/ap/vim/patches/7.3.405 @@ -0,0 +1,101 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.405 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.405 +Problem: When xterm gets back the function keys it may delete the urxvt + mouse termcap code. +Solution: Check for the whole code, not just the start. (Egmont Koblinger) +Files: src/keymap.h, src/misc2.c, src/term.c + + +*** ../vim-7.3.404/src/keymap.h 2011-10-20 21:09:25.000000000 +0200 +--- src/keymap.h 2012-01-20 16:35:43.000000000 +0100 +*************** +*** 411,416 **** +--- 411,417 ---- + #define K_DEC_MOUSE TERMCAP2KEY(KS_DEC_MOUSE, KE_FILLER) + #define K_JSBTERM_MOUSE TERMCAP2KEY(KS_JSBTERM_MOUSE, KE_FILLER) + #define K_PTERM_MOUSE TERMCAP2KEY(KS_PTERM_MOUSE, KE_FILLER) ++ #define K_URXVT_MOUSE TERMCAP2KEY(KS_URXVT_MOUSE, KE_FILLER) + + #define K_SELECT TERMCAP2KEY(KS_SELECT, KE_FILLER) + #define K_TEAROFF TERMCAP2KEY(KS_TEAROFF, KE_FILLER) +*** ../vim-7.3.404/src/misc2.c 2012-01-10 22:26:12.000000000 +0100 +--- src/misc2.c 2012-01-20 16:38:27.000000000 +0100 +*************** +*** 2416,2425 **** +--- 2416,2436 ---- + {'<', (char_u *)"lt"}, + + {K_MOUSE, (char_u *)"Mouse"}, ++ #ifdef FEAT_MOUSE_NET + {K_NETTERM_MOUSE, (char_u *)"NetMouse"}, ++ #endif ++ #ifdef FEAT_MOUSE_DEC + {K_DEC_MOUSE, (char_u *)"DecMouse"}, ++ #endif ++ #ifdef FEAT_MOUSE_JSB + {K_JSBTERM_MOUSE, (char_u *)"JsbMouse"}, ++ #endif ++ #ifdef FEAT_MOUSE_PTERM + {K_PTERM_MOUSE, (char_u *)"PtermMouse"}, ++ #endif ++ #ifdef FEAT_MOUSE_URXVT ++ {K_URXVT_MOUSE, (char_u *)"UrxvtMouse"}, ++ #endif + {K_LEFTMOUSE, (char_u *)"LeftMouse"}, + {K_LEFTMOUSE_NM, (char_u *)"LeftMouseNM"}, + {K_LEFTDRAG, (char_u *)"LeftDrag"}, +*** ../vim-7.3.404/src/term.c 2011-12-01 20:59:16.000000000 +0100 +--- src/term.c 2012-01-20 16:50:41.000000000 +0100 +*************** +*** 5252,5263 **** + char_u *src; + { + int i; +! int slen; + + for (i = 0; i < tc_len; ++i) + { +! slen = termcodes[i].len; +! if (slen > 1 && STRNCMP(termcodes[i].code, src, (size_t)slen) == 0) + return i; + } + return -1; +--- 5252,5263 ---- + char_u *src; + { + int i; +! int slen = STRLEN(src); + + for (i = 0; i < tc_len; ++i) + { +! if (slen == termcodes[i].len +! && STRNCMP(termcodes[i].code, src, (size_t)slen) == 0) + return i; + } + return -1; +*** ../vim-7.3.404/src/version.c 2012-01-20 14:32:22.000000000 +0100 +--- src/version.c 2012-01-20 16:59:47.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 405, + /**/ + +-- +"The future's already arrived - it's just not evenly distributed yet." + -- William Gibson + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.406 b/source/ap/vim/patches/7.3.406 new file mode 100644 index 00000000..dceca0ed --- /dev/null +++ b/source/ap/vim/patches/7.3.406 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.406 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.406 +Problem: Multi-byte characters in b:browsefilter are not handled correctly. +Solution: First use convert_filter() normally and then convert to wide + characters. (Taro Muraoka) +Files: src/gui_w48.c + + +*** ../vim-7.3.405/src/gui_w48.c 2011-09-07 18:58:24.000000000 +0200 +--- src/gui_w48.c 2012-01-20 17:54:19.000000000 +0100 +*************** +*** 328,333 **** +--- 328,337 ---- + static LRESULT _OnImeNotify(HWND hWnd, DWORD dwCommand, DWORD dwData); + #endif + ++ #if defined(FEAT_MBYTE) && defined(WIN3264) ++ static char_u *convert_filter(char_u *s); ++ #endif ++ + #ifdef DEBUG_PRINT_ERROR + /* + * Print out the last Windows error message +*************** +*** 3275,3302 **** + + # if defined(FEAT_MBYTE) && defined(WIN3264) + /* +! * Wide version of convert_filter(). Keep in sync! + */ + static WCHAR * + convert_filterW(char_u *s) + { +! WCHAR *res; +! unsigned s_len = (unsigned)STRLEN(s); +! unsigned i; + +! res = (WCHAR *)alloc((s_len + 3) * sizeof(WCHAR)); +! if (res != NULL) +! { +! for (i = 0; i < s_len; ++i) +! if (s[i] == '\t' || s[i] == '\n') +! res[i] = '\0'; +! else +! res[i] = s[i]; +! res[s_len] = NUL; +! /* Add two extra NULs to make sure it's properly terminated. */ +! res[s_len + 1] = NUL; +! res[s_len + 2] = NUL; +! } + return res; + } + +--- 3279,3298 ---- + + # if defined(FEAT_MBYTE) && defined(WIN3264) + /* +! * Wide version of convert_filter(). + */ + static WCHAR * + convert_filterW(char_u *s) + { +! char_u *tmp; +! int len; + +! tmp = convert_filter(s); +! if (tmp == NULL) +! return NULL; +! len = (int)STRLEN(s) + 3; +! res = enc_to_utf16(tmp, &len); +! vim_free(tmp); + return res; + } + +*** ../vim-7.3.405/src/version.c 2012-01-20 17:15:47.000000000 +0100 +--- src/version.c 2012-01-20 17:57:09.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 406, + /**/ + +-- +DENNIS: Look, strange women lying on their backs in ponds handing out + swords ... that's no basis for a system of government. Supreme + executive power derives from a mandate from the masses, not from some + farcical aquatic ceremony. + "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 /// diff --git a/source/ap/vim/patches/7.3.407 b/source/ap/vim/patches/7.3.407 new file mode 100644 index 00000000..d5ac1330 --- /dev/null +++ b/source/ap/vim/patches/7.3.407 @@ -0,0 +1,270 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.407 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.407 +Problem: ":12verbose call F()" may duplicate text while trying to truncate. + (Thinca) +Solution: Only truncate when there is not enough room. Also check the byte + length of the buffer. +Files: src/buffer.c, src/eval.c, src/ex_getln.c, src/message.c, + src/proto/message.pro + + +*** ../vim-7.3.406/src/buffer.c 2011-12-30 13:39:04.000000000 +0100 +--- src/buffer.c 2012-01-20 18:37:43.000000000 +0100 +*************** +*** 3258,3266 **** + if (maxlen > 0) + { + /* make it shorter by removing a bit in the middle */ +! len = vim_strsize(buf); +! if (len > maxlen) +! trunc_string(buf, buf, maxlen); + } + } + } +--- 3258,3265 ---- + if (maxlen > 0) + { + /* make it shorter by removing a bit in the middle */ +! if (vim_strsize(buf) > maxlen) +! trunc_string(buf, buf, maxlen, IOSIZE); + } + } + } +*** ../vim-7.3.406/src/eval.c 2012-01-10 22:26:12.000000000 +0100 +--- src/eval.c 2012-01-20 20:43:32.000000000 +0100 +*************** +*** 22163,22170 **** + s = tv2string(&argvars[i], &tofree, numbuf2, 0); + if (s != NULL) + { +! trunc_string(s, buf, MSG_BUF_CLEN); +! msg_puts(buf); + vim_free(tofree); + } + } +--- 22163,22174 ---- + s = tv2string(&argvars[i], &tofree, numbuf2, 0); + if (s != NULL) + { +! if (vim_strsize(s) > MSG_BUF_CLEN) +! { +! trunc_string(s, buf, MSG_BUF_CLEN, MSG_BUF_LEN); +! s = buf; +! } +! msg_puts(s); + vim_free(tofree); + } + } +*************** +*** 22252,22259 **** + s = tv2string(fc->rettv, &tofree, numbuf2, 0); + if (s != NULL) + { +! trunc_string(s, buf, MSG_BUF_CLEN); +! smsg((char_u *)_("%s returning %s"), sourcing_name, buf); + vim_free(tofree); + } + } +--- 22256,22267 ---- + s = tv2string(fc->rettv, &tofree, numbuf2, 0); + if (s != NULL) + { +! if (vim_strsize(s) > MSG_BUF_CLEN) +! { +! trunc_string(s, buf, MSG_BUF_CLEN, MSG_BUF_LEN); +! s = buf; +! } +! smsg((char_u *)_("%s returning %s"), sourcing_name, s); + vim_free(tofree); + } + } +*** ../vim-7.3.406/src/ex_getln.c 2011-12-08 18:44:47.000000000 +0100 +--- src/ex_getln.c 2012-01-20 18:40:46.000000000 +0100 +*************** +*** 5923,5929 **** + hist[i].hisnum); + if (vim_strsize(hist[i].hisstr) > (int)Columns - 10) + trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff), +! (int)Columns - 10); + else + STRCAT(IObuff, hist[i].hisstr); + msg_outtrans(IObuff); +--- 5923,5929 ---- + hist[i].hisnum); + if (vim_strsize(hist[i].hisstr) > (int)Columns - 10) + trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff), +! (int)Columns - 10, IOSIZE - STRLEN(IObuff)); + else + STRCAT(IObuff, hist[i].hisstr); + msg_outtrans(IObuff); +*** ../vim-7.3.406/src/message.c 2012-01-10 22:26:12.000000000 +0100 +--- src/message.c 2012-01-20 20:38:29.000000000 +0100 +*************** +*** 222,236 **** + if (enc_utf8) + /* may have up to 18 bytes per cell (6 per char, up to two + * composing chars) */ +! buf = alloc((room + 2) * 18); + else if (enc_dbcs == DBCS_JPNU) + /* may have up to 2 bytes per cell for euc-jp */ +! buf = alloc((room + 2) * 2); + else + #endif +! buf = alloc(room + 2); + if (buf != NULL) +! trunc_string(s, buf, room); + } + } + return buf; +--- 222,237 ---- + if (enc_utf8) + /* may have up to 18 bytes per cell (6 per char, up to two + * composing chars) */ +! len = (room + 2) * 18; + else if (enc_dbcs == DBCS_JPNU) + /* may have up to 2 bytes per cell for euc-jp */ +! len = (room + 2) * 2; + else + #endif +! len = room + 2; +! buf = alloc(len); + if (buf != NULL) +! trunc_string(s, buf, room, len); + } + } + return buf; +*************** +*** 241,250 **** + * "s" and "buf" may be equal. + */ + void +! trunc_string(s, buf, room) + char_u *s; + char_u *buf; + int room; + { + int half; + int len; +--- 242,252 ---- + * "s" and "buf" may be equal. + */ + void +! trunc_string(s, buf, room, buflen) + char_u *s; + char_u *buf; + int room; ++ int buflen; + { + int half; + int len; +*************** +*** 257,263 **** + len = 0; + + /* First part: Start of the string. */ +! for (e = 0; len < half; ++e) + { + if (s[e] == NUL) + { +--- 259,265 ---- + len = 0; + + /* First part: Start of the string. */ +! for (e = 0; len < half && e < buflen; ++e) + { + if (s[e] == NUL) + { +*************** +*** 274,280 **** + if (has_mbyte) + for (n = (*mb_ptr2len)(s + e); --n > 0; ) + { +! ++e; + buf[e] = s[e]; + } + #endif +--- 276,283 ---- + if (has_mbyte) + for (n = (*mb_ptr2len)(s + e); --n > 0; ) + { +! if (++e == buflen) +! break; + buf[e] = s[e]; + } + #endif +*************** +*** 319,326 **** + } + + /* Set the middle and copy the last part. */ +! mch_memmove(buf + e, "...", (size_t)3); +! STRMOVE(buf + e + 3, s + i); + } + + /* +--- 322,340 ---- + } + + /* Set the middle and copy the last part. */ +! if (e + 3 < buflen) +! { +! mch_memmove(buf + e, "...", (size_t)3); +! len = STRLEN(s + i) + 1; +! if (len >= buflen - e - 3) +! len = buflen - e - 3 - 1; +! mch_memmove(buf + e + 3, s + i, len); +! buf[e + 3 + len - 1] = NUL; +! } +! else +! { +! buf[e - 1] = NUL; // make sure it is truncated +! } + } + + /* +*** ../vim-7.3.406/src/proto/message.pro 2011-01-17 20:08:03.000000000 +0100 +--- src/proto/message.pro 2012-01-20 18:51:19.000000000 +0100 +*************** +*** 4,10 **** + int msg_attr __ARGS((char_u *s, int attr)); + int msg_attr_keep __ARGS((char_u *s, int attr, int keep)); + char_u *msg_strtrunc __ARGS((char_u *s, int force)); +! void trunc_string __ARGS((char_u *s, char_u *buf, int room)); + void reset_last_sourcing __ARGS((void)); + void msg_source __ARGS((int attr)); + int emsg_not_now __ARGS((void)); +--- 4,10 ---- + int msg_attr __ARGS((char_u *s, int attr)); + int msg_attr_keep __ARGS((char_u *s, int attr, int keep)); + char_u *msg_strtrunc __ARGS((char_u *s, int force)); +! void trunc_string __ARGS((char_u *s, char_u *buf, int room, int buflen)); + void reset_last_sourcing __ARGS((void)); + void msg_source __ARGS((int attr)); + int emsg_not_now __ARGS((void)); +*** ../vim-7.3.406/src/version.c 2012-01-20 17:57:47.000000000 +0100 +--- src/version.c 2012-01-20 20:42:23.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 407, + /**/ + +-- +Hanson's Treatment of Time: + There are never enough hours in a day, but always too + many days before Saturday. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.408 b/source/ap/vim/patches/7.3.408 new file mode 100644 index 00000000..02276085 --- /dev/null +++ b/source/ap/vim/patches/7.3.408 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.408 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.408 (after 7.3.406) +Problem: Missing declaration. +Solution: Add the declaration. (John Marriott) +Files: src/gui_w48.c + + +*** ../vim-7.3.407/src/gui_w48.c 2012-01-20 17:57:47.000000000 +0100 +--- src/gui_w48.c 2012-01-20 20:51:57.000000000 +0100 +*************** +*** 3286,3291 **** +--- 3286,3292 ---- + { + char_u *tmp; + int len; ++ WCHAR *res; + + tmp = convert_filter(s); + if (tmp == NULL) +*** ../vim-7.3.407/src/version.c 2012-01-20 20:44:38.000000000 +0100 +--- src/version.c 2012-01-20 20:52:56.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 408, + /**/ + +-- +BLACK KNIGHT: None shall pass. +ARTHUR: I have no quarrel with you, brave Sir knight, but I must cross + this bridge. +BLACK KNIGHT: Then you shall die. + "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 /// diff --git a/source/ap/vim/patches/7.3.409 b/source/ap/vim/patches/7.3.409 new file mode 100644 index 00000000..a00fdcb8 --- /dev/null +++ b/source/ap/vim/patches/7.3.409 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.409 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.409 +Problem: The license in pty.c is unclear. +Solution: Add a comment about the license. +Files: src/pty.c + + +*** ../vim-7.3.408/src/pty.c 2011-05-19 13:40:47.000000000 +0200 +--- src/pty.c 2012-01-20 21:07:56.000000000 +0100 +*************** +*** 14,19 **** +--- 14,23 ---- + * It has been modified to work better with Vim. + * The parts that are not used in Vim have been deleted. + * See the "screen" sources for the complete stuff. ++ * ++ * This specific version is distibuted under the Vim license (attribution by ++ * Juergen Weigert), the GPL applies to the original version, see the ++ * copyright notice below. + */ + + /* Copyright (c) 1993 +*** ../vim-7.3.408/src/version.c 2012-01-20 20:54:15.000000000 +0100 +--- src/version.c 2012-01-20 21:13:11.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 409, + /**/ + +-- +ARTHUR: What are you going to do. bleed on me? + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.410 b/source/ap/vim/patches/7.3.410 new file mode 100644 index 00000000..f40e06fa --- /dev/null +++ b/source/ap/vim/patches/7.3.410 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.410 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.410 +Problem: Compiler error for // comment. (Joachim Schmitz) +Solution: Turn into /* comment */. +Files: src/message.c + + +*** ../vim-7.3.409/src/message.c 2012-01-20 20:44:38.000000000 +0100 +--- src/message.c 2012-01-23 20:46:36.000000000 +0100 +*************** +*** 333,339 **** + } + else + { +! buf[e - 1] = NUL; // make sure it is truncated + } + } + +--- 333,339 ---- + } + else + { +! buf[e - 1] = NUL; /* make sure it is truncated */ + } + } + +*** ../vim-7.3.409/src/version.c 2012-01-20 21:13:55.000000000 +0100 +--- src/version.c 2012-01-23 20:47:30.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 410, + /**/ + + +-- +Are leaders born or made? And if they're made, can we return them under +warranty? + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.411 b/source/ap/vim/patches/7.3.411 new file mode 100644 index 00000000..fe759952 --- /dev/null +++ b/source/ap/vim/patches/7.3.411 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.411 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.411 +Problem: Pasting in Visual mode using the "" register does not work. (John + Beckett) +Solution: Detect that the write is overwriting the pasted register. + (Christian Brabandt) +Files: src/normal.c + + +*** ../vim-7.3.410/src/normal.c 2011-10-04 21:22:40.000000000 +0200 +--- src/normal.c 2012-01-23 22:13:44.000000000 +0100 +*************** +*** 9329,9335 **** + # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); + # endif +! if (regname == 0 || VIM_ISDIGIT(regname) + # ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) + # endif +--- 9329,9335 ---- + # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); + # endif +! if (regname == 0 || regname == '"' || VIM_ISDIGIT(regname) + # ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) + # endif +*** ../vim-7.3.410/src/version.c 2012-01-23 20:48:34.000000000 +0100 +--- src/version.c 2012-01-26 11:42:33.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 411, + /**/ + +-- +Engineers understand that their appearance only bothers other people and +therefore it is not worth optimizing. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.412 b/source/ap/vim/patches/7.3.412 new file mode 100644 index 00000000..3b181883 --- /dev/null +++ b/source/ap/vim/patches/7.3.412 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.412 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.412 +Problem: Storing a float in a session file has an additional '&'. +Solution: Remove the '&'. (Yasuhiro Matsumoto) +Files: src/eval.c + + +*** ../vim-7.3.411/src/eval.c 2012-01-20 20:44:38.000000000 +0100 +--- src/eval.c 2012-01-26 11:39:39.000000000 +0100 +*************** +*** 22929,22935 **** + f = -f; + sign = '-'; + } +! if ((fprintf(fd, "let %s = %c&%f", + this_var->di_key, sign, f) < 0) + || put_eol(fd) == FAIL) + return FAIL; +--- 22929,22935 ---- + f = -f; + sign = '-'; + } +! if ((fprintf(fd, "let %s = %c%f", + this_var->di_key, sign, f) < 0) + || put_eol(fd) == FAIL) + return FAIL; +*** ../vim-7.3.411/src/version.c 2012-01-26 11:43:04.000000000 +0100 +--- src/version.c 2012-01-26 11:44:56.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 412, + /**/ + +-- +Imagine a world without hypothetical situations. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.413 b/source/ap/vim/patches/7.3.413 new file mode 100644 index 00000000..c32c9b1d --- /dev/null +++ b/source/ap/vim/patches/7.3.413 @@ -0,0 +1,90 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.413 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.413 +Problem: Build warnings on MS-Windows. +Solution: Add type casts. (Mike Williams) +Files: src/ex_getln.c, src/message.c, src/term.c + + +*** ../vim-7.3.412/src/ex_getln.c 2012-01-20 20:44:38.000000000 +0100 +--- src/ex_getln.c 2012-01-26 12:58:54.000000000 +0100 +*************** +*** 5923,5929 **** + hist[i].hisnum); + if (vim_strsize(hist[i].hisstr) > (int)Columns - 10) + trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff), +! (int)Columns - 10, IOSIZE - STRLEN(IObuff)); + else + STRCAT(IObuff, hist[i].hisstr); + msg_outtrans(IObuff); +--- 5923,5929 ---- + hist[i].hisnum); + if (vim_strsize(hist[i].hisstr) > (int)Columns - 10) + trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff), +! (int)Columns - 10, IOSIZE - (int)STRLEN(IObuff)); + else + STRCAT(IObuff, hist[i].hisstr); + msg_outtrans(IObuff); +*** ../vim-7.3.412/src/message.c 2012-01-23 20:48:34.000000000 +0100 +--- src/message.c 2012-01-26 12:58:54.000000000 +0100 +*************** +*** 325,331 **** + if (e + 3 < buflen) + { + mch_memmove(buf + e, "...", (size_t)3); +! len = STRLEN(s + i) + 1; + if (len >= buflen - e - 3) + len = buflen - e - 3 - 1; + mch_memmove(buf + e + 3, s + i, len); +--- 325,331 ---- + if (e + 3 < buflen) + { + mch_memmove(buf + e, "...", (size_t)3); +! len = (int)STRLEN(s + i) + 1; + if (len >= buflen - e - 3) + len = buflen - e - 3 - 1; + mch_memmove(buf + e + 3, s + i, len); +*** ../vim-7.3.412/src/term.c 2012-01-20 17:15:47.000000000 +0100 +--- src/term.c 2012-01-26 12:58:54.000000000 +0100 +*************** +*** 5252,5258 **** + char_u *src; + { + int i; +! int slen = STRLEN(src); + + for (i = 0; i < tc_len; ++i) + { +--- 5252,5258 ---- + char_u *src; + { + int i; +! int slen = (int)STRLEN(src); + + for (i = 0; i < tc_len; ++i) + { +*** ../vim-7.3.412/src/version.c 2012-01-26 11:45:25.000000000 +0100 +--- src/version.c 2012-01-26 12:59:14.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 413, + /**/ + +-- +It doesn't really matter what you are able to do if you don't do it. + (Bram Moolenaar) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.414 b/source/ap/vim/patches/7.3.414 new file mode 100644 index 00000000..6f6c3075 --- /dev/null +++ b/source/ap/vim/patches/7.3.414 @@ -0,0 +1,90 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.414 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.414 +Problem: Using CTRL-A on "000" drops the leading zero, while on "001" it + doesn't. +Solution: Detect "000" as an octal number. (James McCoy) +Files: src/charset.c + + +*** ../vim-7.3.413/src/charset.c 2012-01-10 22:26:12.000000000 +0100 +--- src/charset.c 2012-01-26 13:33:45.000000000 +0100 +*************** +*** 764,770 **** + } + + /* +! * Return the number of characters string "s" will take on the screen, + * counting TABs as two characters: "^I". + */ + int +--- 764,770 ---- + } + + /* +! * Return the number of character cells string "s" will take on the screen, + * counting TABs as two characters: "^I". + */ + int +*************** +*** 775,782 **** + } + + /* +! * Return the number of characters string "s[len]" will take on the screen, +! * counting TABs as two characters: "^I". + */ + int + vim_strnsize(s, len) +--- 775,782 ---- + } + + /* +! * Return the number of character cells string "s[len]" will take on the +! * screen, counting TABs as two characters: "^I". + */ + int + vim_strnsize(s, len) +*************** +*** 1830,1836 **** + hex = 0; /* can't be octal */ + break; + } +! if (ptr[n] > '0') + hex = '0'; /* assume octal */ + } + } +--- 1830,1836 ---- + hex = 0; /* can't be octal */ + break; + } +! if (ptr[n] >= '0') + hex = '0'; /* assume octal */ + } + } +*** ../vim-7.3.413/src/version.c 2012-01-26 13:01:54.000000000 +0100 +--- src/version.c 2012-01-26 13:38:04.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 414, + /**/ + +-- +No engineer can take a shower without wondering if some sort of Teflon coating +would make showering unnecessary. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.415 b/source/ap/vim/patches/7.3.415 new file mode 100644 index 00000000..74e757b2 --- /dev/null +++ b/source/ap/vim/patches/7.3.415 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.415 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.415 (after 7.3.359) +Problem: Completion of functions stops once a dictionary is encountered. + (James McCoy) +Solution: Return an empty string instead of NULL. +Files: src/eval.c + + +*** ../vim-7.3.414/src/eval.c 2012-01-26 11:45:25.000000000 +0100 +--- src/eval.c 2012-01-26 13:45:52.000000000 +0100 +*************** +*** 21802,21808 **** + fp = HI2UF(hi); + + if (fp->uf_flags & FC_DICT) +! return NULL; /* don't show dict functions */ + + if (STRLEN(fp->uf_name) + 4 >= IOSIZE) + return fp->uf_name; /* prevents overflow */ +--- 21802,21808 ---- + fp = HI2UF(hi); + + if (fp->uf_flags & FC_DICT) +! return ""; /* don't show dict functions */ + + if (STRLEN(fp->uf_name) + 4 >= IOSIZE) + return fp->uf_name; /* prevents overflow */ +*** ../vim-7.3.414/src/version.c 2012-01-26 13:40:04.000000000 +0100 +--- src/version.c 2012-01-26 14:32:16.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 415, + /**/ + +-- +Normal people believe that if it ain't broke, don't fix it. Engineers believe +that if it ain't broke, it doesn't have enough features yet. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.416 b/source/ap/vim/patches/7.3.416 new file mode 100644 index 00000000..f65bb0d2 --- /dev/null +++ b/source/ap/vim/patches/7.3.416 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.416 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.416 (after 7.3.415) +Problem: Compiler warning for wrong pointer. +Solution: Add type cast. +Files: src/eval.c + + +*** ../vim-7.3.415/src/eval.c 2012-01-26 14:32:26.000000000 +0100 +--- src/eval.c 2012-01-26 15:42:56.000000000 +0100 +*************** +*** 21802,21808 **** + fp = HI2UF(hi); + + if (fp->uf_flags & FC_DICT) +! return ""; /* don't show dict functions */ + + if (STRLEN(fp->uf_name) + 4 >= IOSIZE) + return fp->uf_name; /* prevents overflow */ +--- 21802,21808 ---- + fp = HI2UF(hi); + + if (fp->uf_flags & FC_DICT) +! return (char_u *)""; /* don't show dict functions */ + + if (STRLEN(fp->uf_name) + 4 >= IOSIZE) + return fp->uf_name; /* prevents overflow */ +*** ../vim-7.3.415/src/version.c 2012-01-26 14:32:26.000000000 +0100 +--- src/version.c 2012-01-26 15:43:31.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 416, + /**/ + +-- +It's totally unfair to suggest - as many have - that engineers are socially +inept. Engineers simply have different objectives when it comes to social +interaction. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.417 b/source/ap/vim/patches/7.3.417 new file mode 100644 index 00000000..489d27eb --- /dev/null +++ b/source/ap/vim/patches/7.3.417 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.417 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.417 (after 7.3.395) +Problem: Test 43 fails with a tiny build. +Solution: Only run test 43 with at least a small build. +Files: src/testdir/test43.in + + +*** ../vim-7.3.415/src/testdir/test43.in 2012-01-10 13:44:23.000000000 +0100 +--- src/testdir/test43.in 2012-01-26 18:00:06.000000000 +0100 +*************** +*** 1,6 **** +--- 1,7 ---- + Tests for regexp with various magic settings. + + STARTTEST ++ :so small.vim + :set nocompatible viminfo+=nviminfo + /^1 + /a*b\{2}c\+/e +*** ../vim-7.3.415/src/version.c 2012-01-26 14:32:26.000000000 +0100 +--- src/version.c 2012-01-26 18:02:30.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 417, + /**/ + +-- +I learned the customs and mannerisms of engineers by observing them, much the +way Jane Goodall learned about the great apes, but without the hassle of +grooming. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.418 b/source/ap/vim/patches/7.3.418 new file mode 100644 index 00000000..6ff486b6 --- /dev/null +++ b/source/ap/vim/patches/7.3.418 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.418 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.418 +Problem: When a user complete function returns -1 an error message is + given. +Solution: When -2 is returned stop completion silently. (Yasuhiro Matsumoto) +Files: src/edit.c + + +*** ../vim-7.3.417/src/edit.c 2012-01-20 14:32:22.000000000 +0100 +--- src/edit.c 2012-01-26 18:32:23.000000000 +0100 +*************** +*** 5189,5194 **** +--- 5189,5199 ---- + return FAIL; + } + ++ /* Return value -2 means the user complete function wants to ++ * cancel the complete without an error. */ ++ if (col == -2) ++ return FAIL; ++ + /* + * Reset extended parameters of completion, when start new + * completion. +*** ../vim-7.3.417/src/version.c 2012-01-26 18:58:13.000000000 +0100 +--- src/version.c 2012-01-26 18:42:14.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 418, + /**/ + +-- +If someone questions your market projections, simply point out that your +target market is "People who are nuts" and "People who will buy any damn +thing". Nobody is going to tell you there aren't enough of those people +to go around. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.419 b/source/ap/vim/patches/7.3.419 new file mode 100644 index 00000000..865a47c7 --- /dev/null +++ b/source/ap/vim/patches/7.3.419 @@ -0,0 +1,85 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.419 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.419 +Problem: DBCS encoding in a user command does not always work. +Solution: Skip over DBCS characters. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + + +*** ../vim-7.3.418/src/ex_docmd.c 2011-12-14 14:49:41.000000000 +0100 +--- src/ex_docmd.c 2012-01-26 20:04:01.000000000 +0100 +*************** +*** 5967,5973 **** + result = STRLEN(eap->arg) + 2; + for (p = eap->arg; *p; ++p) + { +! if (*p == '\\' || *p == '"') + ++result; + } + +--- 5967,5980 ---- + result = STRLEN(eap->arg) + 2; + for (p = eap->arg; *p; ++p) + { +! #ifdef FEAT_MBYTE +! if (enc_dbcs != 0 && (*mb_ptr2len)(p) == 2) +! /* DBCS can contain \ in a trail byte, skip the +! * double-byte character. */ +! ++p; +! else +! #endif +! if (*p == '\\' || *p == '"') + ++result; + } + +*************** +*** 5976,5982 **** + *buf++ = '"'; + for (p = eap->arg; *p; ++p) + { +! if (*p == '\\' || *p == '"') + *buf++ = '\\'; + *buf++ = *p; + } +--- 5983,5996 ---- + *buf++ = '"'; + for (p = eap->arg; *p; ++p) + { +! #ifdef FEAT_MBYTE +! if (enc_dbcs != 0 && (*mb_ptr2len)(p) == 2) +! /* DBCS can contain \ in a trail byte, copy the +! * double-byte character to avoid escaping. */ +! *buf++ = *p++; +! else +! #endif +! if (*p == '\\' || *p == '"') + *buf++ = '\\'; + *buf++ = *p; + } +*** ../vim-7.3.418/src/version.c 2012-01-26 18:58:25.000000000 +0100 +--- src/version.c 2012-01-26 20:40:34.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 419, + /**/ + +-- +You have heard the saying that if you put a thousand monkeys in a room with a +thousand typewriters and waited long enough, eventually you would have a room +full of dead monkeys. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.420 b/source/ap/vim/patches/7.3.420 new file mode 100644 index 00000000..d698d0b4 --- /dev/null +++ b/source/ap/vim/patches/7.3.420 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.420 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.420 +Problem: "it" and "at" don't work properly with a dash in the tag name. +Solution: Require a space to match the tag name. (Christian Brabandt) +Files: src/search.c + + +*** ../vim-7.3.419/src/search.c 2012-01-10 22:26:12.000000000 +0100 +--- src/search.c 2012-01-26 20:51:43.000000000 +0100 +*************** +*** 3918,3924 **** + curwin->w_cursor = old_pos; + goto theend; + } +! spat = alloc(len + 29); + epat = alloc(len + 9); + if (spat == NULL || epat == NULL) + { +--- 3918,3924 ---- + curwin->w_cursor = old_pos; + goto theend; + } +! spat = alloc(len + 31); + epat = alloc(len + 9); + if (spat == NULL || epat == NULL) + { +*************** +*** 3927,3933 **** + curwin->w_cursor = old_pos; + goto theend; + } +! sprintf((char *)spat, "<%.*s\\>\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p); + sprintf((char *)epat, "</%.*s>\\c", len, p); + + r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"", +--- 3927,3933 ---- + curwin->w_cursor = old_pos; + goto theend; + } +! sprintf((char *)spat, "<%.*s\\>\\%%(\\s\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p); + sprintf((char *)epat, "</%.*s>\\c", len, p); + + r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"", +*** ../vim-7.3.419/src/version.c 2012-01-26 20:41:22.000000000 +0100 +--- src/version.c 2012-01-26 20:51:16.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 420, + /**/ + +-- +All good vision statements are created by groups of people with bloated +bladders who would rather be doing anything else. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.421 b/source/ap/vim/patches/7.3.421 new file mode 100644 index 00000000..eadc29df --- /dev/null +++ b/source/ap/vim/patches/7.3.421 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.421 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.421 +Problem: Get E832 when setting 'undofile' in vimrc and there is a file to + be edited on the command line. (Toothpik) +Solution: Do not try reading the undo file for a file that wasn't loaded. +Files: src/option.c + + +*** ../vim-7.3.420/src/option.c 2012-01-10 22:26:12.000000000 +0100 +--- src/option.c 2012-01-28 17:55:24.000000000 +0100 +*************** +*** 7527,7536 **** + { + /* When 'undofile' is set globally: for every buffer, otherwise + * only for the current buffer: Try to read in the undofile, if +! * one exists and the buffer wasn't changed. */ + if ((curbuf == save_curbuf + || (opt_flags & OPT_GLOBAL) || opt_flags == 0) +! && !curbufIsChanged()) + { + u_compute_hash(hash); + u_read_undo(NULL, hash, curbuf->b_fname); +--- 7527,7537 ---- + { + /* When 'undofile' is set globally: for every buffer, otherwise + * only for the current buffer: Try to read in the undofile, if +! * one exists and the buffer wasn't changed and the buffer was +! * loaded. */ + if ((curbuf == save_curbuf + || (opt_flags & OPT_GLOBAL) || opt_flags == 0) +! && !curbufIsChanged() && curbuf->b_ml.ml_mfp != NULL) + { + u_compute_hash(hash); + u_read_undo(NULL, hash, curbuf->b_fname); +*** ../vim-7.3.420/src/version.c 2012-01-26 20:58:21.000000000 +0100 +--- src/version.c 2012-01-28 18:03:09.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 421, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +4. Your eyeglasses have a web site burned in on them. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.422 b/source/ap/vim/patches/7.3.422 new file mode 100644 index 00000000..7be4aebd --- /dev/null +++ b/source/ap/vim/patches/7.3.422 @@ -0,0 +1,94 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.422 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.422 +Problem: Python 3 does not have __members__. +Solution: Add "name" and "number" in another way. (lilydjwg) +Files: src/if_py_both.h, src/if_python3.c + + +*** ../vim-7.3.421/src/if_py_both.h 2011-09-07 19:30:17.000000000 +0200 +--- src/if_py_both.h 2012-02-04 19:59:43.000000000 +0100 +*************** +*** 1479,1484 **** +--- 1479,1487 ---- + {"append", BufferAppend, 1, "Append data to Vim buffer" }, + {"mark", BufferMark, 1, "Return (row,col) representing position of named mark" }, + {"range", BufferRange, 1, "Return a range object which represents the part of the given buffer between line numbers s and e" }, ++ #if PY_VERSION_HEX >= 0x03000000 ++ {"__dir__", BufferDir, 4, "List its attributes" }, ++ #endif + { NULL, NULL, 0, NULL } + }; + +*** ../vim-7.3.421/src/if_python3.c 2011-09-14 18:59:35.000000000 +0200 +--- src/if_python3.c 2012-02-04 20:13:00.000000000 +0100 +*************** +*** 468,473 **** +--- 468,474 ---- + static PyObject *BufferNew (buf_T *); + static PyObject *WindowNew(win_T *); + static PyObject *LineToString(const char *); ++ static PyObject *BufferDir(PyObject *, PyObject *); + + static PyTypeObject RangeType; + +*************** +*** 961,973 **** + return Py_BuildValue("s", this->buf->b_ffname); + else if (strcmp(name, "number") == 0) + return Py_BuildValue("n", this->buf->b_fnum); +- else if (strcmp(name,"__members__") == 0) +- return Py_BuildValue("[ss]", "name", "number"); + else + return PyObject_GenericGetAttr(self, nameobj); + } + + static PyObject * + BufferRepr(PyObject *self) + { + static char repr[100]; +--- 962,979 ---- + return Py_BuildValue("s", this->buf->b_ffname); + else if (strcmp(name, "number") == 0) + return Py_BuildValue("n", this->buf->b_fnum); + else + return PyObject_GenericGetAttr(self, nameobj); + } + + static PyObject * ++ BufferDir(PyObject *self UNUSED, PyObject *args UNUSED) ++ { ++ return Py_BuildValue("[sssss]", "name", "number", ++ "append", "mark", "range"); ++ } ++ ++ static PyObject * + BufferRepr(PyObject *self) + { + static char repr[100]; +*** ../vim-7.3.421/src/version.c 2012-01-28 18:03:30.000000000 +0100 +--- src/version.c 2012-02-04 20:14:58.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 422, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +15. Five days in advance, tell your friends you can't attend their + party because you're not in the mood. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.423 b/source/ap/vim/patches/7.3.423 new file mode 100644 index 00000000..74bf62d2 --- /dev/null +++ b/source/ap/vim/patches/7.3.423 @@ -0,0 +1,130 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.423 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.423 +Problem: Small mistakes in comments, proto and indent. +Solution: Fix the mistakes. +Files: src/ex_cmds2.c, src/structs.h, src/ui.c, src/proto/ex_docmd.pro + + +*** ../vim-7.3.422/src/ex_cmds2.c 2011-10-20 21:38:37.000000000 +0200 +--- src/ex_cmds2.c 2011-11-30 11:02:20.000000000 +0100 +*************** +*** 1939,1945 **** + } + + /* +! * Return TRUE if window "win" is editing then file at the current argument + * index. + */ + static int +--- 1939,1945 ---- + } + + /* +! * Return TRUE if window "win" is editing the file at the current argument + * index. + */ + static int +*** ../vim-7.3.422/src/structs.h 2011-05-19 13:40:47.000000000 +0200 +--- src/structs.h 2011-09-10 13:48:53.000000000 +0200 +*************** +*** 1846,1852 **** + often, keep it the first item!) */ + + #if defined(FEAT_SYN_HL) || defined(FEAT_SPELL) +! synblock_T *w_s; + #endif + + #ifdef FEAT_WINDOWS +--- 1846,1852 ---- + often, keep it the first item!) */ + + #if defined(FEAT_SYN_HL) || defined(FEAT_SPELL) +! synblock_T *w_s; /* for :ownsyntax */ + #endif + + #ifdef FEAT_WINDOWS +*** ../vim-7.3.422/src/ui.c 2011-07-07 16:20:45.000000000 +0200 +--- src/ui.c 2012-01-21 14:03:42.000000000 +0100 +*************** +*** 2363,2376 **** + XtLastTimestampProcessed(XtDisplay(myShell)), + clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb, + NULL) == False) +! return FAIL; + } + else + #endif + { + if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell), + cbd->sel_atom, timestamp_atom, 32, PropModeAppend, NULL, 0)) +! return FAIL; + } + /* Flush is required in a terminal as nothing else is doing it. */ + XFlush(XtDisplay(myShell)); +--- 2363,2376 ---- + XtLastTimestampProcessed(XtDisplay(myShell)), + clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb, + NULL) == False) +! return FAIL; + } + else + #endif + { + if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell), + cbd->sel_atom, timestamp_atom, 32, PropModeAppend, NULL, 0)) +! return FAIL; + } + /* Flush is required in a terminal as nothing else is doing it. */ + XFlush(XtDisplay(myShell)); +*** ../vim-7.3.422/src/proto/ex_docmd.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/ex_docmd.pro 2011-01-16 00:22:21.000000000 +0100 +*************** +*** 1,7 **** + /* ex_docmd.c */ + void do_exmode __ARGS((int improved)); + int do_cmdline_cmd __ARGS((char_u *cmd)); +! int do_cmdline __ARGS((char_u *cmdline, char_u *(*getline)(int, void *, int), void *cookie, int flags)); + int getline_equal __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int))); + void *getline_cookie __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie)); + int checkforcmd __ARGS((char_u **pp, char *cmd, int len)); +--- 1,7 ---- + /* ex_docmd.c */ + void do_exmode __ARGS((int improved)); + int do_cmdline_cmd __ARGS((char_u *cmd)); +! int do_cmdline __ARGS((char_u *cmdline, char_u *(*fgetline)(int, void *, int), void *cookie, int flags)); + int getline_equal __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int))); + void *getline_cookie __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie)); + int checkforcmd __ARGS((char_u **pp, char *cmd, int len)); +*** ../vim-7.3.422/src/version.c 2012-02-04 20:17:21.000000000 +0100 +--- src/version.c 2012-02-04 21:56:43.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 423, + /**/ + +-- +In many of the more relaxed civilizations on the Outer Eastern Rim of the +Galaxy, "The Hitchhiker's Guide to the Galaxy" has already supplanted the +great "Encyclopedia Galactica" as the standard repository of all knowledge +and wisdom, for though it has many omissions and contains much that is +apocryphal, or at least wildly inaccurate, it scores over the older, more +pedestrian work in two important respects. +First, it is slightly cheaper; and second, it has the words "DON'T PANIC" +inscribed in large friendly letters on its cover. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.424 b/source/ap/vim/patches/7.3.424 new file mode 100644 index 00000000..61786ed8 --- /dev/null +++ b/source/ap/vim/patches/7.3.424 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.424 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.424 +Problem: Win16 version missing some functions. +Solution: Add #defines for the functions. +Files: src/gui_w16.c + + +*** ../vim-7.3.423/src/gui_w16.c 2011-01-17 20:08:03.000000000 +0100 +--- src/gui_w16.c 2011-08-10 16:50:21.000000000 +0200 +*************** +*** 21,26 **** +--- 21,32 ---- + * + */ + ++ /* Win16 doesn't use the "W" methods. */ ++ #define pDispatchMessage DispatchMessage ++ #define pGetMessage GetMessage ++ #define pIsDialogMessage IsDialogMessage ++ #define pPeekMessage PeekMessage ++ + /* + * Include the common stuff for MS-Windows GUI. + */ +*** ../vim-7.3.423/src/version.c 2012-02-04 21:57:44.000000000 +0100 +--- src/version.c 2012-02-04 22:01:13.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 424, + /**/ + +-- +Now it is such a bizarrely improbable coincidence that anything as +mind-bogglingly useful as the Babel fish could have evolved purely by chance +that some thinkers have chosen to see it as a final and clinching proof of the +NON-existence of God. +The argument goes something like this: 'I refuse to prove that I exist,' says +God, 'for proof denies faith, and without faith I am nothing.' +'But,' says Man, 'the Babel fish is a dead giveaway, isn't it? It could not +have evolved by chance. It proves you exist, and so therefore, by your own +arguments, you don't. QED.' +'Oh dear,' says God, 'I hadn't thought of that,' and promptly vanishes in a +puff of logic. +'Oh, that was easy,' says Man, and for an encore goes on to prove that black +is white and gets himself killed on the next pedestrian crossing. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.425 b/source/ap/vim/patches/7.3.425 new file mode 100644 index 00000000..aeadf3a3 --- /dev/null +++ b/source/ap/vim/patches/7.3.425 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.425 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.425 (after 7.3.265) +Problem: Search history lines are duplicated. (Edwin Steiner) +Solution: Convert separator character from space to NUL. +Files: src/ex_getln.c + + +*** ../vim-7.3.424/src/ex_getln.c 2012-01-26 13:01:54.000000000 +0100 +--- src/ex_getln.c 2012-02-04 22:27:43.000000000 +0100 +*************** +*** 6027,6034 **** + val = viminfo_readstring(virp, 1, TRUE); + if (val != NULL && *val != NUL) + { + if (!in_history(type, val + (type == HIST_SEARCH), +! viminfo_add_at_front, *val)) + { + /* Need to re-allocate to append the separator byte. */ + len = STRLEN(val); +--- 6027,6036 ---- + val = viminfo_readstring(virp, 1, TRUE); + if (val != NULL && *val != NUL) + { ++ int sep = (*val == ' ' ? NUL : *val); ++ + if (!in_history(type, val + (type == HIST_SEARCH), +! viminfo_add_at_front, sep)) + { + /* Need to re-allocate to append the separator byte. */ + len = STRLEN(val); +*************** +*** 6040,6046 **** + /* Search entry: Move the separator from the first + * column to after the NUL. */ + mch_memmove(p, val + 1, (size_t)len); +! p[len] = (*val == ' ' ? NUL : *val); + } + else + { +--- 6042,6048 ---- + /* Search entry: Move the separator from the first + * column to after the NUL. */ + mch_memmove(p, val + 1, (size_t)len); +! p[len] = sep; + } + else + { +*** ../vim-7.3.424/src/version.c 2012-02-04 22:01:44.000000000 +0100 +--- src/version.c 2012-02-04 22:30:36.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 425, + /**/ + +-- +"So this is it," said Arthur, "we are going to die." +"Yes," said Ford, "except...no! Wait a minute!" He suddenly lunged across +the chamber at something behind Arthur's line of vision. "What's this +switch?" he cried. +"What? Where?" cried Arthur, twisting around. +"No, I was only fooling," said Ford, "we are going to die after all." + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.426 b/source/ap/vim/patches/7.3.426 new file mode 100644 index 00000000..76380af1 --- /dev/null +++ b/source/ap/vim/patches/7.3.426 @@ -0,0 +1,279 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.426 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.426 +Problem: With '$' in 'cpoptions' the $ is not displayed in the first + column. +Solution: Use -1 instead of 0 as a special value. (Hideki Eiraku and + Hirohito Higashi) +Files: src/edit.c, src/globals.h, src/move.c, src/screen.c, src/search.c + + +*** ../vim-7.3.425/src/edit.c 2012-01-26 18:58:25.000000000 +0100 +--- src/edit.c 2012-02-04 23:23:45.000000000 +0100 +*************** +*** 1763,1771 **** + static void + undisplay_dollar() + { +! if (dollar_vcol) + { +! dollar_vcol = 0; + redrawWinline(curwin->w_cursor.lnum, FALSE); + } + } +--- 1763,1771 ---- + static void + undisplay_dollar() + { +! if (dollar_vcol >= 0) + { +! dollar_vcol = -1; + redrawWinline(curwin->w_cursor.lnum, FALSE); + } + } +*************** +*** 5441,5447 **** + compl_curr_match->cp_number); + edit_submode_extra = match_ref; + edit_submode_highl = HLF_R; +! if (dollar_vcol) + curs_columns(FALSE); + } + } +--- 5441,5447 ---- + compl_curr_match->cp_number); + edit_submode_extra = match_ref; + edit_submode_highl = HLF_R; +! if (dollar_vcol >= 0) + curs_columns(FALSE); + } + } +*************** +*** 8961,8967 **** + * We can emulate the vi behaviour by pretending there is a dollar + * displayed even when there isn't. + * --pkv Sun Jan 19 01:56:40 EST 2003 */ +! if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == 0) + dollar_vcol = curwin->w_virtcol; + + #ifdef FEAT_FOLDING +--- 8961,8967 ---- + * We can emulate the vi behaviour by pretending there is a dollar + * displayed even when there isn't. + * --pkv Sun Jan 19 01:56:40 EST 2003 */ +! if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == -1) + dollar_vcol = curwin->w_virtcol; + + #ifdef FEAT_FOLDING +*** ../vim-7.3.425/src/globals.h 2011-05-10 16:41:13.000000000 +0200 +--- src/globals.h 2012-02-04 23:24:07.000000000 +0100 +*************** +*** 113,121 **** + * When '$' is included in 'cpoptions' option set: + * When a change command is given that deletes only part of a line, a dollar + * is put at the end of the changed text. dollar_vcol is set to the virtual +! * column of this '$'. + */ +! EXTERN colnr_T dollar_vcol INIT(= 0); + + #ifdef FEAT_INS_EXPAND + /* +--- 113,121 ---- + * When '$' is included in 'cpoptions' option set: + * When a change command is given that deletes only part of a line, a dollar + * is put at the end of the changed text. dollar_vcol is set to the virtual +! * column of this '$'. -1 is used to indicate no $ is being displayed. + */ +! EXTERN colnr_T dollar_vcol INIT(= -1); + + #ifdef FEAT_INS_EXPAND + /* +*** ../vim-7.3.425/src/move.c 2012-01-10 22:26:12.000000000 +0100 +--- src/move.c 2012-02-04 23:21:08.000000000 +0100 +*************** +*** 362,368 **** + #endif + ) + { +! dollar_vcol = 0; + if (curwin->w_skipcol != 0) + { + curwin->w_skipcol = 0; +--- 362,368 ---- + #endif + ) + { +! dollar_vcol = -1; + if (curwin->w_skipcol != 0) + { + curwin->w_skipcol = 0; +*************** +*** 966,972 **** + + /* remove '$' from change command when cursor moves onto it */ + if (startcol > dollar_vcol) +! dollar_vcol = 0; + + extra = curwin_col_off(); + curwin->w_wcol = curwin->w_virtcol + extra; +--- 966,972 ---- + + /* remove '$' from change command when cursor moves onto it */ + if (startcol > dollar_vcol) +! dollar_vcol = -1; + + extra = curwin_col_off(); + curwin->w_wcol = curwin->w_virtcol + extra; +*** ../vim-7.3.425/src/screen.c 2012-01-10 22:26:12.000000000 +0100 +--- src/screen.c 2012-02-04 23:22:44.000000000 +0100 +*************** +*** 1637,1647 **** + * When at start of changed lines: May scroll following lines + * up or down to minimize redrawing. + * Don't do this when the change continues until the end. +! * Don't scroll when dollar_vcol is non-zero, keep the "$". + */ + if (lnum == mod_top + && mod_bot != MAXLNUM +! && !(dollar_vcol != 0 && mod_bot == mod_top + 1)) + { + int old_rows = 0; + int new_rows = 0; +--- 1637,1647 ---- + * When at start of changed lines: May scroll following lines + * up or down to minimize redrawing. + * Don't do this when the change continues until the end. +! * Don't scroll when dollar_vcol >= 0, keep the "$". + */ + if (lnum == mod_top + && mod_bot != MAXLNUM +! && !(dollar_vcol >= 0 && mod_bot == mod_top + 1)) + { + int old_rows = 0; + int new_rows = 0; +*************** +*** 1868,1879 **** + if (row > wp->w_height) /* past end of screen */ + { + /* we may need the size of that too long line later on */ +! if (dollar_vcol == 0) + wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE); + ++idx; + break; + } +! if (dollar_vcol == 0) + wp->w_lines[idx].wl_size = row - srow; + ++idx; + #ifdef FEAT_FOLDING +--- 1868,1879 ---- + if (row > wp->w_height) /* past end of screen */ + { + /* we may need the size of that too long line later on */ +! if (dollar_vcol == -1) + wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE); + ++idx; + break; + } +! if (dollar_vcol == -1) + wp->w_lines[idx].wl_size = row - srow; + ++idx; + #ifdef FEAT_FOLDING +*************** +*** 1990,1996 **** + } + #endif + } +! else if (dollar_vcol == 0) + wp->w_botline = lnum; + + /* make sure the rest of the screen is blank */ +--- 1990,1996 ---- + } + #endif + } +! else if (dollar_vcol == -1) + wp->w_botline = lnum; + + /* make sure the rest of the screen is blank */ +*************** +*** 2005,2011 **** + wp->w_old_botfill = wp->w_botfill; + #endif + +! if (dollar_vcol == 0) + { + /* + * There is a trick with w_botline. If we invalidate it on each +--- 2005,2011 ---- + wp->w_old_botfill = wp->w_botfill; + #endif + +! if (dollar_vcol == -1) + { + /* + * There is a trick with w_botline. If we invalidate it on each +*************** +*** 3564,3570 **** + } + + /* When still displaying '$' of change command, stop at cursor */ +! if (dollar_vcol != 0 && wp == curwin + && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol + #ifdef FEAT_DIFF + && filler_todo <= 0 +--- 3564,3570 ---- + } + + /* When still displaying '$' of change command, stop at cursor */ +! if (dollar_vcol >= 0 && wp == curwin + && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol + #ifdef FEAT_DIFF + && filler_todo <= 0 +*** ../vim-7.3.425/src/search.c 2012-01-26 20:58:21.000000000 +0100 +--- src/search.c 2012-02-04 23:23:10.000000000 +0100 +*************** +*** 2501,2508 **** + save_siso = p_siso; + /* Handle "$" in 'cpo': If the ')' is typed on top of the "$", + * stop displaying the "$". */ +! if (dollar_vcol > 0 && dollar_vcol == curwin->w_virtcol) +! dollar_vcol = 0; + ++curwin->w_virtcol; /* do display ')' just before "$" */ + update_screen(VALID); /* show the new char first */ + +--- 2501,2508 ---- + save_siso = p_siso; + /* Handle "$" in 'cpo': If the ')' is typed on top of the "$", + * stop displaying the "$". */ +! if (dollar_vcol >= 0 && dollar_vcol == curwin->w_virtcol) +! dollar_vcol = -1; + ++curwin->w_virtcol; /* do display ')' just before "$" */ + update_screen(VALID); /* show the new char first */ + +*** ../vim-7.3.425/src/version.c 2012-02-04 22:44:27.000000000 +0100 +--- src/version.c 2012-02-04 23:32:55.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 426, + /**/ + + +-- +I am also told that there is a logical proof out there somewhere +that demonstrates that there is no task which duct tape cannot handle. + -- Paul Brannan + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.427 b/source/ap/vim/patches/7.3.427 new file mode 100644 index 00000000..61df8812 --- /dev/null +++ b/source/ap/vim/patches/7.3.427 @@ -0,0 +1,378 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.427 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.427 +Problem: readfile() can be slow with long lines. +Solution: Use realloc() instead of alloc(). (John Little) +Files: src/eval.c + + +*** ../vim-7.3.426/src/eval.c 2012-01-26 14:32:26.000000000 +0100 +--- src/eval.c 2012-02-05 00:25:39.000000000 +0100 +*************** +*** 14325,14346 **** + typval_T *rettv; + { + int binary = FALSE; + char_u *fname; + FILE *fd; +! listitem_T *li; +! #define FREAD_SIZE 200 /* optimized for text lines */ +! char_u buf[FREAD_SIZE]; +! int readlen; /* size of last fread() */ +! int buflen; /* nr of valid chars in buf[] */ +! int filtd; /* how much in buf[] was NUL -> '\n' filtered */ +! int tolist; /* first byte in buf[] still to be put in list */ +! int chop; /* how many CR to chop off */ +! char_u *prev = NULL; /* previously read bytes, if any */ +! int prevlen = 0; /* length of "prev" if not NULL */ +! char_u *s; +! int len; +! long maxline = MAXLNUM; +! long cnt = 0; + + if (argvars[1].v_type != VAR_UNKNOWN) + { +--- 14325,14343 ---- + typval_T *rettv; + { + int binary = FALSE; ++ int failed = FALSE; + char_u *fname; + FILE *fd; +! char_u buf[(IOSIZE/256)*256]; /* rounded to avoid odd + 1 */ +! int io_size = sizeof(buf); +! int readlen; /* size of last fread() */ +! char_u *prev = NULL; /* previously read bytes, if any */ +! long prevlen = 0; /* length of data in prev */ +! long prevsize = 0; /* size of prev buffer */ +! long maxline = MAXLNUM; +! long cnt = 0; +! char_u *p; /* position in buf */ +! char_u *start; /* start of current line */ + + if (argvars[1].v_type != VAR_UNKNOWN) + { +*************** +*** 14362,14410 **** + return; + } + +- filtd = 0; + while (cnt < maxline || maxline < 0) + { +! readlen = (int)fread(buf + filtd, 1, FREAD_SIZE - filtd, fd); +! buflen = filtd + readlen; +! tolist = 0; +! for ( ; filtd < buflen || readlen <= 0; ++filtd) +! { +! if (readlen <= 0 || buf[filtd] == '\n') +! { +! /* In binary mode add an empty list item when the last +! * non-empty line ends in a '\n'. */ +! if (!binary && readlen == 0 && filtd == 0 && prev == NULL) +! break; + +! /* Found end-of-line or end-of-file: add a text line to the +! * list. */ +! chop = 0; +! if (!binary) +! while (filtd - chop - 1 >= tolist +! && buf[filtd - chop - 1] == '\r') +! ++chop; +! len = filtd - tolist - chop; +! if (prev == NULL) +! s = vim_strnsave(buf + tolist, len); + else + { +! s = alloc((unsigned)(prevlen + len + 1)); +! if (s != NULL) + { +! mch_memmove(s, prev, prevlen); +! vim_free(prev); +! prev = NULL; +! mch_memmove(s + prevlen, buf + tolist, len); + s[prevlen + len] = NUL; + } + } +! tolist = filtd + 1; + +! li = listitem_alloc(); +! if (li == NULL) + { + vim_free(s); + break; + } + li->li_tv.v_type = VAR_STRING; +--- 14359,14419 ---- + return; + } + + while (cnt < maxline || maxline < 0) + { +! readlen = (int)fread(buf, 1, io_size, fd); +! +! /* This for loop processes what was read, but is also entered at end +! * of file so that either: +! * - an incomplete line gets written +! * - a "binary" file gets an empty line at the end if it ends in a +! * newline. */ +! for (p = buf, start = buf; +! p < buf + readlen || (readlen <= 0 && (prevlen > 0 || binary)); +! ++p) +! { +! if (*p == '\n' || readlen <= 0) +! { +! listitem_T *li; +! char_u *s = NULL; +! long_u len = p - start; + +! /* Finished a line. Remove CRs before NL. */ +! if (readlen > 0 && !binary) +! { +! while (len > 0 && start[len - 1] == '\r') +! --len; +! /* removal may cross back to the "prev" string */ +! if (len == 0) +! while (prevlen > 0 && prev[prevlen - 1] == '\r') +! --prevlen; +! } +! if (prevlen == 0) +! s = vim_strnsave(start, len); + else + { +! /* Change "prev" buffer to be the right size. This way +! * the bytes are only copied once, and very long lines are +! * allocated only once. */ +! if ((s = vim_realloc(prev, prevlen + len + 1)) != NULL) + { +! mch_memmove(s + prevlen, start, len); + s[prevlen + len] = NUL; ++ prev = NULL; /* the list will own the string */ ++ prevlen = prevsize = 0; + } + } +! if (s == NULL) +! { +! do_outofmem_msg((long_u) prevlen + len + 1); +! failed = TRUE; +! break; +! } + +! if ((li = listitem_alloc()) == NULL) + { + vim_free(s); ++ failed = TRUE; + break; + } + li->li_tv.v_type = VAR_STRING; +*************** +*** 14412,14485 **** + li->li_tv.vval.v_string = s; + list_append(rettv->vval.v_list, li); + +! if (++cnt >= maxline && maxline >= 0) +! break; +! if (readlen <= 0) + break; + } +! else if (buf[filtd] == NUL) +! buf[filtd] = '\n'; + #ifdef FEAT_MBYTE +! else if (buf[filtd] == 0xef +! && enc_utf8 +! && filtd + 2 < buflen +! && !binary +! && buf[filtd + 1] == 0xbb +! && buf[filtd + 2] == 0xbf) +! { +! /* remove utf-8 byte order mark */ +! mch_memmove(buf + filtd, buf + filtd + 3, buflen - filtd - 3); +! --filtd; +! buflen -= 3; + } + #endif +! } +! if (readlen <= 0) +! break; + +! if (tolist == 0) + { +! if (buflen >= FREAD_SIZE / 2) + { +! /* "buf" is full, need to move text to an allocated buffer */ +! if (prev == NULL) + { +! prev = vim_strnsave(buf, buflen); +! prevlen = buflen; + } +! else + { +! s = alloc((unsigned)(prevlen + buflen)); +! if (s != NULL) +! { +! mch_memmove(s, prev, prevlen); +! mch_memmove(s + prevlen, buf, buflen); +! vim_free(prev); +! prev = s; +! prevlen += buflen; +! } + } +! filtd = 0; + } + } +! else +! { +! mch_memmove(buf, buf + tolist, buflen - tolist); +! filtd -= tolist; +! } +! } + + /* + * For a negative line count use only the lines at the end of the file, + * free the rest. + */ +! if (maxline < 0) + while (cnt > -maxline) + { + listitem_remove(rettv->vval.v_list, rettv->vval.v_list->lv_first); + --cnt; + } + + vim_free(prev); + fclose(fd); + } +--- 14421,14529 ---- + li->li_tv.vval.v_string = s; + list_append(rettv->vval.v_list, li); + +! start = p + 1; /* step over newline */ +! if ((++cnt >= maxline && maxline >= 0) || readlen <= 0) + break; + } +! else if (*p == NUL) +! *p = '\n'; + #ifdef FEAT_MBYTE +! /* Check for utf8 "bom"; U+FEFF is encoded as EF BB BF. Do this +! * when finding the BF and check the previous two bytes. */ +! else if (*p == 0xbf && enc_utf8 && !binary) +! { +! /* Find the two bytes before the 0xbf. If p is at buf, or buf +! * + 1, these may be in the "prev" string. */ +! char_u back1 = p >= buf + 1 ? p[-1] +! : prevlen >= 1 ? prev[prevlen - 1] : NUL; +! char_u back2 = p >= buf + 2 ? p[-2] +! : p == buf + 1 && prevlen >= 1 ? prev[prevlen - 1] +! : prevlen >= 2 ? prev[prevlen - 2] : NUL; +! +! if (back2 == 0xef && back1 == 0xbb) +! { +! char_u *dest = p - 2; +! +! /* Usually a BOM is at the beginning of a file, and so at +! * the beginning of a line; then we can just step over it. +! */ +! if (start == dest) +! start = p + 1; +! else +! { +! /* have to shuffle buf to close gap */ +! int adjust_prevlen = 0; +! +! if (dest < buf) +! { +! adjust_prevlen = buf - dest; /* must be 1 or 2 */ +! dest = buf; +! } +! if (readlen > p - buf + 1) +! mch_memmove(dest, p + 1, readlen - (p - buf) - 1); +! readlen -= 3 - adjust_prevlen; +! prevlen -= adjust_prevlen; +! p = dest - 1; +! } +! } + } + #endif +! } /* for */ + +! if (failed || (cnt >= maxline && maxline >= 0) || readlen <= 0) +! break; +! if (start < p) + { +! /* There's part of a line in buf, store it in "prev". */ +! if (p - start + prevlen >= prevsize) + { +! /* need bigger "prev" buffer */ +! char_u *newprev; +! +! /* A common use case is ordinary text files and "prev" gets a +! * fragment of a line, so the first allocation is made +! * small, to avoid repeatedly 'allocing' large and +! * 'reallocing' small. */ +! if (prevsize == 0) +! prevsize = p - start; +! else + { +! long grow50pc = (prevsize * 3) / 2; +! long growmin = (p - start) * 2 + prevlen; +! prevsize = grow50pc > growmin ? grow50pc : growmin; + } +! if ((newprev = vim_realloc(prev, prevsize)) == NULL) + { +! do_outofmem_msg((long_u)prevsize); +! failed = TRUE; +! break; + } +! prev = newprev; + } ++ /* Add the line part to end of "prev". */ ++ mch_memmove(prev + prevlen, start, p - start); ++ prevlen += p - start; + } +! } /* while */ + + /* + * For a negative line count use only the lines at the end of the file, + * free the rest. + */ +! if (!failed && maxline < 0) + while (cnt > -maxline) + { + listitem_remove(rettv->vval.v_list, rettv->vval.v_list->lv_first); + --cnt; + } + ++ if (failed) ++ { ++ list_free(rettv->vval.v_list, TRUE); ++ /* readfile doc says an empty list is returned on error */ ++ rettv->vval.v_list = list_alloc(); ++ } ++ + vim_free(prev); + fclose(fd); + } +*** ../vim-7.3.426/src/version.c 2012-02-04 23:34:57.000000000 +0100 +--- src/version.c 2012-02-05 00:38:34.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 427, + /**/ + +-- +One difference between a man and a machine is that a machine is quiet +when well oiled. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.428 b/source/ap/vim/patches/7.3.428 new file mode 100644 index 00000000..89567ed8 --- /dev/null +++ b/source/ap/vim/patches/7.3.428 @@ -0,0 +1,113 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.428 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.428 +Problem: Win32: an xpm file without a mask crashes Vim. +Solution: Fail when the mask is missing. (Dave Bodenstab) +Files: src/xpm_w32.c + + +*** ../vim-7.3.427/src/xpm_w32.c 2010-08-15 21:57:25.000000000 +0200 +--- src/xpm_w32.c 2012-02-05 00:46:13.000000000 +0100 +*************** +*** 1,4 **** +! /* + * Load XPM image. + * + * This function is placed in separate file because Xpm headers conflict with +--- 1,5 ---- +! /* vi:set ts=8 sts=4 sw=4: +! * + * Load XPM image. + * + * This function is placed in separate file because Xpm headers conflict with +*************** +*** 30,38 **** + #include "xpm.h" + + /* +! * Tries to load Xpm image from file 'filename'. +! * If fails return -1. +! * success - 0 and image and mask BITMAPS + */ + int + LoadXpmImage(filename, hImage, hShape) +--- 31,40 ---- + #include "xpm.h" + + /* +! * Tries to load an Xpm image from the file "filename". +! * Returns -1 on failure. +! * Returns 0 on success and stores image and mask BITMAPS in "hImage" and +! * "hShape". + */ + int + LoadXpmImage(filename, hImage, hShape) +*************** +*** 40,46 **** + HBITMAP *hImage; + HBITMAP *hShape; + { +! XImage *img; /* loaded image */ + XImage *shp; /* shapeimage */ + XpmAttributes attr; + int res; +--- 42,48 ---- + HBITMAP *hImage; + HBITMAP *hShape; + { +! XImage *img; /* loaded image */ + XImage *shp; /* shapeimage */ + XpmAttributes attr; + int res; +*************** +*** 51,60 **** + DeleteDC(hdc); + if (res < 0) + return -1; +! else + { +! *hImage = img->bitmap; +! *hShape = shp->bitmap; +! return 0; + } + } +--- 53,65 ---- + DeleteDC(hdc); + if (res < 0) + return -1; +! if (shp == NULL) + { +! if (img) +! XDestroyImage(img); +! return -1; + } ++ *hImage = img->bitmap; ++ *hShape = shp->bitmap; ++ return 0; + } +*** ../vim-7.3.427/src/version.c 2012-02-05 00:39:14.000000000 +0100 +--- src/version.c 2012-02-05 00:47:08.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 428, + /**/ + +-- +I'm not familiar with this proof, but I'm aware of a significant +following of toddlers who believe that peanut butter is the solution +to all of life's problems... -- Tim Hammerquist + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.429 b/source/ap/vim/patches/7.3.429 new file mode 100644 index 00000000..801e25f9 --- /dev/null +++ b/source/ap/vim/patches/7.3.429 @@ -0,0 +1,192 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.429 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.429 +Problem: When 'cpoptions' includes "E" "c0" in the first column is an + error. The redo register is then set to the errornous command. +Solution: Do not set the redo register if the command fails because of an + empty region. (Hideki Eiraku) +Files: src/getchar.c, src/normal.c, src/proto/getchar.pro + + +*** ../vim-7.3.428/src/getchar.c 2012-01-10 22:26:12.000000000 +0100 +--- src/getchar.c 2012-02-05 01:05:09.000000000 +0100 +*************** +*** 470,475 **** +--- 470,493 ---- + } + } + ++ /* ++ * Discard the contents of the redo buffer and restore the previous redo ++ * buffer. ++ */ ++ void ++ CancelRedo() ++ { ++ if (!block_redo) ++ { ++ free_buff(&redobuff); ++ redobuff = old_redobuff; ++ old_redobuff.bh_first.b_next = NULL; ++ start_stuff(); ++ while (read_stuff(TRUE) != NUL) ++ ; ++ } ++ } ++ + #if defined(FEAT_AUTOCMD) || defined(FEAT_EVAL) || defined(PROTO) + /* + * Save redobuff and old_redobuff to save_redobuff and save_old_redobuff. +*************** +*** 691,699 **** + * Read a character from the redo buffer. Translates K_SPECIAL, CSI and + * multibyte characters. + * The redo buffer is left as it is. +! * if init is TRUE, prepare for redo, return FAIL if nothing to redo, OK +! * otherwise +! * if old is TRUE, use old_redobuff instead of redobuff + */ + static int + read_redo(init, old_redo) +--- 709,717 ---- + * Read a character from the redo buffer. Translates K_SPECIAL, CSI and + * multibyte characters. + * The redo buffer is left as it is. +! * If init is TRUE, prepare for redo, return FAIL if nothing to redo, OK +! * otherwise. +! * If old is TRUE, use old_redobuff instead of redobuff. + */ + static int + read_redo(init, old_redo) +*** ../vim-7.3.428/src/normal.c 2012-01-26 11:43:04.000000000 +0100 +--- src/normal.c 2012-02-05 01:06:01.000000000 +0100 +*************** +*** 1978,1984 **** +--- 1978,1987 ---- + VIsual_reselect = FALSE; /* don't reselect now */ + #endif + if (empty_region_error) ++ { + vim_beep(); ++ CancelRedo(); ++ } + else + { + (void)op_delete(oap); +*************** +*** 1992,1998 **** +--- 1995,2004 ---- + if (empty_region_error) + { + if (!gui_yank) ++ { + vim_beep(); ++ CancelRedo(); ++ } + } + else + (void)op_yank(oap, FALSE, !gui_yank); +*************** +*** 2004,2010 **** +--- 2010,2019 ---- + VIsual_reselect = FALSE; /* don't reselect now */ + #endif + if (empty_region_error) ++ { + vim_beep(); ++ CancelRedo(); ++ } + else + { + /* This is a new edit command, not a restart. Need to +*************** +*** 2066,2072 **** +--- 2075,2084 ---- + case OP_LOWER: + case OP_ROT13: + if (empty_region_error) ++ { + vim_beep(); ++ CancelRedo(); ++ } + else + op_tilde(oap); + check_cursor_col(); +*************** +*** 2099,2105 **** +--- 2111,2120 ---- + #endif + #ifdef FEAT_VISUALEXTRA + if (empty_region_error) ++ { + vim_beep(); ++ CancelRedo(); ++ } + else + { + /* This is a new edit command, not a restart. Need to +*************** +*** 2129,2135 **** +--- 2144,2153 ---- + #ifdef FEAT_VISUALEXTRA + if (empty_region_error) + #endif ++ { + vim_beep(); ++ CancelRedo(); ++ } + #ifdef FEAT_VISUALEXTRA + else + op_replace(oap, cap->nchar); +*** ../vim-7.3.428/src/proto/getchar.pro 2010-10-20 21:22:17.000000000 +0200 +--- src/proto/getchar.pro 2012-02-05 01:05:20.000000000 +0100 +*************** +*** 4,11 **** + char_u *get_inserted __ARGS((void)); + int stuff_empty __ARGS((void)); + void typeahead_noflush __ARGS((int c)); +! void flush_buffers __ARGS((int typeahead)); + void ResetRedobuff __ARGS((void)); + void saveRedobuff __ARGS((void)); + void restoreRedobuff __ARGS((void)); + void AppendToRedobuff __ARGS((char_u *s)); +--- 4,12 ---- + char_u *get_inserted __ARGS((void)); + int stuff_empty __ARGS((void)); + void typeahead_noflush __ARGS((int c)); +! void flush_buffers __ARGS((int flush_typeahead)); + void ResetRedobuff __ARGS((void)); ++ void CancelRedo __ARGS((void)); + void saveRedobuff __ARGS((void)); + void restoreRedobuff __ARGS((void)); + void AppendToRedobuff __ARGS((char_u *s)); +*** ../vim-7.3.428/src/version.c 2012-02-05 00:47:56.000000000 +0100 +--- src/version.c 2012-02-05 01:09:23.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 429, + /**/ + +-- +The History of every major Galactic Civilization tends to pass through +three distinct and recognizable phases, those of Survival, Inquiry and +Sophistication, otherwise known as the How, Why and Where phases. +For instance, the first phase is characterized by the question 'How can +we eat?' the second by the question 'Why do we eat?' and the third by +the question 'Where shall we have lunch?' + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.430 b/source/ap/vim/patches/7.3.430 new file mode 100644 index 00000000..c67e7fb0 --- /dev/null +++ b/source/ap/vim/patches/7.3.430 @@ -0,0 +1,80 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.430 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.430 +Problem: When a custom filetype detection uses "augroup END" the conf + fileytpe detection does not have the filetypedetect group. +Solution: Always end the group and include filetypedetect in the conf + autocommand. (Lech Lorens) +Files: runtime/filetype.vim + + +*** ../vim-7.3.429/runtime/filetype.vim 2012-02-05 20:08:08.000000000 +0100 +--- runtime/filetype.vim 2012-02-05 19:59:40.000000000 +0100 +*************** +*** 2545,2561 **** + " detected filetypes. + runtime! ftdetect/*.vim + + + " Generic configuration file (check this last, it's just guessing!) +! au BufNewFile,BufRead,StdinReadPost * + \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat + \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#' + \ || getline(4) =~ '^#' || getline(5) =~ '^#') | + \ setf conf | + \ endif + +- augroup END +- + + " If the GUI is already running, may still need to install the Syntax menu. + " Don't do it when the 'M' flag is included in 'guioptions'. +--- 2545,2563 ---- + " detected filetypes. + runtime! ftdetect/*.vim + ++ " NOTE: The above command could have ended the filetypedetect autocmd group ++ " and started another one. Let's make sure it has ended to get to a consistant ++ " state. ++ augroup END + + " Generic configuration file (check this last, it's just guessing!) +! au filetypedetect BufNewFile,BufRead,StdinReadPost * + \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat + \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#' + \ || getline(4) =~ '^#' || getline(5) =~ '^#') | + \ setf conf | + \ endif + + + " If the GUI is already running, may still need to install the Syntax menu. + " Don't do it when the 'M' flag is included in 'guioptions'. +*** ../vim-7.3.429/src/version.c 2012-02-05 01:18:41.000000000 +0100 +--- src/version.c 2012-02-05 20:02:18.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 430, + /**/ + +-- +The technology involved in making anything invisible is so infinitely +complex that nine hundred and ninety-nine billion, nine hundred and +ninety-nine million, nine hundred and ninety-nine thousand, nine hundred +and ninety-nine times out of a trillion it is much simpler and more +effective just to take the thing away and do without it. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.431 b/source/ap/vim/patches/7.3.431 new file mode 100644 index 00000000..2e4e62b3 --- /dev/null +++ b/source/ap/vim/patches/7.3.431 @@ -0,0 +1,280 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.431 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.431 +Problem: Fetching a key at a prompt may be confused by escape sequences. + Especially when getting a prompt at a VimEnter autocommand. + (Alex Efros) +Solution: Properly handle escape sequences deleted by check_termcode(). +Files: src/getchar.c, src/misc1.c, src/term.c, src/proto/term.pro + + +*** ../vim-7.3.430/src/getchar.c 2012-02-05 01:18:41.000000000 +0100 +--- src/getchar.c 2012-02-05 22:04:33.000000000 +0100 +*************** +*** 2282,2288 **** + typebuf.tb_off] == RM_YES)) + && !timedout) + { +! keylen = check_termcode(max_mlen + 1, NULL, 0); + + /* If no termcode matched but 'pastetoggle' + * matched partially it's like an incomplete key +--- 2282,2289 ---- + typebuf.tb_off] == RM_YES)) + && !timedout) + { +! keylen = check_termcode(max_mlen + 1, +! NULL, 0, NULL); + + /* If no termcode matched but 'pastetoggle' + * matched partially it's like an incomplete key +*** ../vim-7.3.430/src/misc1.c 2012-01-10 18:37:53.000000000 +0100 +--- src/misc1.c 2012-02-05 21:59:53.000000000 +0100 +*************** +*** 3105,3112 **** + int + get_keystroke() + { +! #define CBUFLEN 151 +! char_u buf[CBUFLEN]; + int len = 0; + int n; + int save_mapped_ctrl_c = mapped_ctrl_c; +--- 3105,3113 ---- + int + get_keystroke() + { +! char_u *buf = NULL; +! int buflen = 150; +! int maxlen; + int len = 0; + int n; + int save_mapped_ctrl_c = mapped_ctrl_c; +*************** +*** 3118,3129 **** + cursor_on(); + out_flush(); + + /* First time: blocking wait. Second time: wait up to 100ms for a +! * terminal code to complete. Leave some room for check_termcode() to +! * insert a key code into (max 5 chars plus NUL). And +! * fix_input_buffer() can triple the number of bytes. */ +! n = ui_inchar(buf + len, (CBUFLEN - 6 - len) / 3, +! len == 0 ? -1L : 100L, 0); + if (n > 0) + { + /* Replace zero and CSI by a special key code. */ +--- 3119,3147 ---- + cursor_on(); + out_flush(); + ++ /* Leave some room for check_termcode() to insert a key code into (max ++ * 5 chars plus NUL). And fix_input_buffer() can triple the number of ++ * bytes. */ ++ maxlen = (buflen - 6 - len) / 3; ++ if (buf == NULL) ++ buf = alloc(buflen); ++ else if (maxlen < 10) ++ { ++ /* Need some more space. This migth happen when receiving a long ++ * escape sequence. */ ++ buflen += 100; ++ buf = vim_realloc(buf, buflen); ++ maxlen = (buflen - 6 - len) / 3; ++ } ++ if (buf == NULL) ++ { ++ do_outofmem_msg((long_u)buflen); ++ return ESC; /* panic! */ ++ } ++ + /* First time: blocking wait. Second time: wait up to 100ms for a +! * terminal code to complete. */ +! n = ui_inchar(buf + len, maxlen, len == 0 ? -1L : 100L, 0); + if (n > 0) + { + /* Replace zero and CSI by a special key code. */ +*************** +*** 3135,3141 **** + ++waited; /* keep track of the waiting time */ + + /* Incomplete termcode and not timed out yet: get more characters */ +! if ((n = check_termcode(1, buf, len)) < 0 + && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm))) + continue; + +--- 3153,3159 ---- + ++waited; /* keep track of the waiting time */ + + /* Incomplete termcode and not timed out yet: get more characters */ +! if ((n = check_termcode(1, buf, buflen, &len)) < 0 + && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm))) + continue; + +*************** +*** 3203,3209 **** + { + if (MB_BYTE2LEN(n) > len) + continue; /* more bytes to get */ +! buf[len >= CBUFLEN ? CBUFLEN - 1 : len] = NUL; + n = (*mb_ptr2char)(buf); + } + #endif +--- 3221,3227 ---- + { + if (MB_BYTE2LEN(n) > len) + continue; /* more bytes to get */ +! buf[len >= buflen ? buflen - 1 : len] = NUL; + n = (*mb_ptr2char)(buf); + } + #endif +*************** +*** 3213,3218 **** +--- 3231,3237 ---- + #endif + break; + } ++ vim_free(buf); + + mapped_ctrl_c = save_mapped_ctrl_c; + return n; +*** ../vim-7.3.430/src/term.c 2012-01-26 13:01:54.000000000 +0100 +--- src/term.c 2012-02-05 21:45:09.000000000 +0100 +*************** +*** 3785,3798 **** + * With a match, the match is removed, the replacement code is inserted in + * typebuf.tb_buf[] and the number of characters in typebuf.tb_buf[] is + * returned. +! * When "buf" is not NULL, it is used instead of typebuf.tb_buf[]. "buflen" is +! * then the length of the string in buf[]. + */ + int +! check_termcode(max_offset, buf, buflen) + int max_offset; + char_u *buf; +! int buflen; + { + char_u *tp; + char_u *p; +--- 3785,3800 ---- + * With a match, the match is removed, the replacement code is inserted in + * typebuf.tb_buf[] and the number of characters in typebuf.tb_buf[] is + * returned. +! * When "buf" is not NULL, buf[bufsize] is used instead of typebuf.tb_buf[]. +! * "buflen" is then the length of the string in buf[] and is updated for +! * inserts and deletes. + */ + int +! check_termcode(max_offset, buf, bufsize, buflen) + int max_offset; + char_u *buf; +! int bufsize; +! int *buflen; + { + char_u *tp; + char_u *p; +*************** +*** 3864,3873 **** + } + else + { +! if (offset >= buflen) + break; + tp = buf + offset; +! len = buflen - offset; + } + + /* +--- 3866,3875 ---- + } + else + { +! if (offset >= *buflen) + break; + tp = buf + offset; +! len = *buflen - offset; + } + + /* +*************** +*** 5002,5013 **** + if (extra < 0) + /* remove matched characters */ + mch_memmove(buf + offset, buf + offset - extra, +! (size_t)(buflen + offset + extra)); + else if (extra > 0) +! /* insert the extra space we need */ + mch_memmove(buf + offset + extra, buf + offset, +! (size_t)(buflen - offset)); + mch_memmove(buf + offset, string, (size_t)new_slen); + } + return retval == 0 ? (len + extra + offset) : retval; + } +--- 5004,5021 ---- + if (extra < 0) + /* remove matched characters */ + mch_memmove(buf + offset, buf + offset - extra, +! (size_t)(*buflen + offset + extra)); + else if (extra > 0) +! { +! /* Insert the extra space we need. If there is insufficient +! * space return -1. */ +! if (*buflen + extra + new_slen >= bufsize) +! return -1; + mch_memmove(buf + offset + extra, buf + offset, +! (size_t)(*buflen - offset)); +! } + mch_memmove(buf + offset, string, (size_t)new_slen); ++ *buflen = *buflen + extra + new_slen; + } + return retval == 0 ? (len + extra + offset) : retval; + } +*** ../vim-7.3.430/src/proto/term.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/term.pro 2012-02-05 21:45:16.000000000 +0100 +*************** +*** 50,56 **** + char_u *get_termcode __ARGS((int i)); + void del_termcode __ARGS((char_u *name)); + void set_mouse_topline __ARGS((win_T *wp)); +! int check_termcode __ARGS((int max_offset, char_u *buf, int buflen)); + char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special)); + int find_term_bykeys __ARGS((char_u *src)); + void show_termcodes __ARGS((void)); +--- 50,56 ---- + char_u *get_termcode __ARGS((int i)); + void del_termcode __ARGS((char_u *name)); + void set_mouse_topline __ARGS((win_T *wp)); +! int check_termcode __ARGS((int max_offset, char_u *buf, int bufsize, int *buflen)); + char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special)); + int find_term_bykeys __ARGS((char_u *src)); + void show_termcodes __ARGS((void)); +*** ../vim-7.3.430/src/version.c 2012-02-05 20:08:30.000000000 +0100 +--- src/version.c 2012-02-05 22:03:43.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 431, + /**/ + +-- +"You know, it's at times like this when I'm trapped in a Vogon airlock with +a man from Betelgeuse and about to die of asphyxiation in deep space that I +really wish I'd listened to what my mother told me when I was young!" +"Why, what did she tell you?" +"I don't know, I didn't listen!" + -- Arthur Dent and Ford Prefect in Douglas Adams' + "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.432 b/source/ap/vim/patches/7.3.432 new file mode 100644 index 00000000..c01dd59a --- /dev/null +++ b/source/ap/vim/patches/7.3.432 @@ -0,0 +1,228 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.432 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.432 +Problem: ACLs are not supported for ZFS or NFSv4 on Solaris. +Solution: Add configure check and code. (Danek Duvall) +Files: src/configure.in, src/auto/configure, src/config.h.in, + src/os_unix.c + + +*** ../vim-7.3.431/src/configure.in 2011-12-14 20:51:19.000000000 +0100 +--- src/configure.in 2012-02-05 22:40:22.000000000 +0100 +*************** +*** 3106,3111 **** +--- 3106,3112 ---- + + dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI + dnl when -lacl works, also try to use -lattr (required for Debian). ++ dnl On Solaris, use the acl_get/set functions in libsec, if present. + AC_MSG_CHECKING(--disable-acl argument) + AC_ARG_ENABLE(acl, + [ --disable-acl Don't check for ACL support.], +*************** +*** 3128,3133 **** +--- 3129,3135 ---- + AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL), + AC_MSG_RESULT(no)) + ++ AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)], + AC_MSG_CHECKING(for Solaris ACL support) + AC_TRY_LINK([ + #ifdef HAVE_SYS_ACL_H +*************** +*** 3135,3141 **** + #endif], [acl("foo", GETACLCNT, 0, NULL); + ], + AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL), +! AC_MSG_RESULT(no)) + + AC_MSG_CHECKING(for AIX ACL support) + AC_TRY_LINK([ +--- 3137,3143 ---- + #endif], [acl("foo", GETACLCNT, 0, NULL); + ], + AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL), +! AC_MSG_RESULT(no))) + + AC_MSG_CHECKING(for AIX ACL support) + AC_TRY_LINK([ +*** ../vim-7.3.431/src/auto/configure 2011-12-14 20:51:19.000000000 +0100 +--- src/auto/configure 2012-02-05 22:41:01.000000000 +0100 +*************** +*** 11328,11334 **** + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5 + $as_echo_n "checking for Solaris ACL support... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +--- 11328,11374 ---- + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get in -lsec" >&5 +! $as_echo_n "checking for acl_get in -lsec... " >&6; } +! if test "${ac_cv_lib_sec_acl_get+set}" = set; then : +! $as_echo_n "(cached) " >&6 +! else +! ac_check_lib_save_LIBS=$LIBS +! LIBS="-lsec $LIBS" +! cat confdefs.h - <<_ACEOF >conftest.$ac_ext +! /* end confdefs.h. */ +! +! /* Override any GCC internal prototype to avoid an error. +! Use char because int might match the return type of a GCC +! builtin and then its argument prototype would still apply. */ +! #ifdef __cplusplus +! extern "C" +! #endif +! char acl_get (); +! int +! main () +! { +! return acl_get (); +! ; +! return 0; +! } +! _ACEOF +! if ac_fn_c_try_link "$LINENO"; then : +! ac_cv_lib_sec_acl_get=yes +! else +! ac_cv_lib_sec_acl_get=no +! fi +! rm -f core conftest.err conftest.$ac_objext \ +! conftest$ac_exeext conftest.$ac_ext +! LIBS=$ac_check_lib_save_LIBS +! fi +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_acl_get" >&5 +! $as_echo "$ac_cv_lib_sec_acl_get" >&6; } +! if test "x$ac_cv_lib_sec_acl_get" = x""yes; then : +! LIBS="$LIBS -lsec"; $as_echo "#define HAVE_SOLARIS_ZFS_ACL 1" >>confdefs.h +! +! else +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5 + $as_echo_n "checking for Solaris ACL support... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +*************** +*** 11355,11360 **** +--- 11395,11402 ---- + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext ++ fi ++ + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AIX ACL support" >&5 + $as_echo_n "checking for AIX ACL support... " >&6; } +*** ../vim-7.3.431/src/config.h.in 2011-09-02 12:27:20.000000000 +0200 +--- src/config.h.in 2012-02-05 22:40:22.000000000 +0100 +*************** +*** 363,368 **** +--- 363,369 ---- + + /* Define if you want to add support for ACL */ + #undef HAVE_POSIX_ACL ++ #undef HAVE_SOLARIS_ZFS_ACL + #undef HAVE_SOLARIS_ACL + #undef HAVE_AIX_ACL + +*** ../vim-7.3.431/src/os_unix.c 2012-01-10 22:26:12.000000000 +0100 +--- src/os_unix.c 2012-02-05 22:40:22.000000000 +0100 +*************** +*** 2746,2751 **** +--- 2746,2758 ---- + #ifdef HAVE_POSIX_ACL + ret = (vim_acl_T)acl_get_file((char *)fname, ACL_TYPE_ACCESS); + #else ++ #ifdef HAVE_SOLARIS_ZFS_ACL ++ acl_t *aclent; ++ ++ if (acl_get((char *)fname, 0, &aclent) < 0) ++ return NULL; ++ ret = (vim_acl_T)aclent; ++ #else + #ifdef HAVE_SOLARIS_ACL + vim_acl_solaris_T *aclent; + +*************** +*** 2791,2796 **** +--- 2798,2804 ---- + ret = (vim_acl_T)aclent; + #endif /* HAVE_AIX_ACL */ + #endif /* HAVE_SOLARIS_ACL */ ++ #endif /* HAVE_SOLARIS_ZFS_ACL */ + #endif /* HAVE_POSIX_ACL */ + return ret; + } +*************** +*** 2808,2813 **** +--- 2816,2824 ---- + #ifdef HAVE_POSIX_ACL + acl_set_file((char *)fname, ACL_TYPE_ACCESS, (acl_t)aclent); + #else ++ #ifdef HAVE_SOLARIS_ZFS_ACL ++ acl_set((char *)fname, (acl_t *)aclent); ++ #else + #ifdef HAVE_SOLARIS_ACL + acl((char *)fname, SETACL, ((vim_acl_solaris_T *)aclent)->acl_cnt, + ((vim_acl_solaris_T *)aclent)->acl_entry); +*************** +*** 2816,2821 **** +--- 2827,2833 ---- + chacl((char *)fname, aclent, ((struct acl *)aclent)->acl_len); + #endif /* HAVE_AIX_ACL */ + #endif /* HAVE_SOLARIS_ACL */ ++ #endif /* HAVE_SOLARIS_ZFS_ACL */ + #endif /* HAVE_POSIX_ACL */ + } + +*************** +*** 2828,2833 **** +--- 2840,2848 ---- + #ifdef HAVE_POSIX_ACL + acl_free((acl_t)aclent); + #else ++ #ifdef HAVE_SOLARIS_ZFS_ACL ++ acl_free((acl_t *)aclent); ++ #else + #ifdef HAVE_SOLARIS_ACL + free(((vim_acl_solaris_T *)aclent)->acl_entry); + free(aclent); +*************** +*** 2836,2841 **** +--- 2851,2857 ---- + free(aclent); + #endif /* HAVE_AIX_ACL */ + #endif /* HAVE_SOLARIS_ACL */ ++ #endif /* HAVE_SOLARIS_ZFS_ACL */ + #endif /* HAVE_POSIX_ACL */ + } + #endif +*** ../vim-7.3.431/src/version.c 2012-02-05 22:05:44.000000000 +0100 +--- src/version.c 2012-02-05 22:44:10.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 432, + /**/ + +-- +If you put 7 of the most talented OSS developers in a room for a week +and asked them to fix a bug in a spreadsheet program, in 1 week +you'd have 2 new mail readers and a text-based web browser. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.433 b/source/ap/vim/patches/7.3.433 new file mode 100644 index 00000000..bb83828f --- /dev/null +++ b/source/ap/vim/patches/7.3.433 @@ -0,0 +1,92 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.433 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.433 +Problem: Using continued lines in a Vim script can be slow. +Solution: Instead of reallocating for every line use a growarray. (Yasuhiro + Matsumoto) +Files: src/ex_cmds2.c + + +*** ../vim-7.3.432/src/ex_cmds2.c 2012-02-04 21:57:44.000000000 +0100 +--- src/ex_cmds2.c 2012-02-05 23:06:31.000000000 +0100 +*************** +*** 3439,3460 **** + { + /* compensate for the one line read-ahead */ + --sourcing_lnum; +! for (;;) + { +! sp->nextline = get_one_sourceline(sp); +! if (sp->nextline == NULL) +! break; +! p = skipwhite(sp->nextline); +! if (*p != '\\') +! break; +! s = alloc((unsigned)(STRLEN(line) + STRLEN(p))); +! if (s == NULL) /* out of memory */ +! break; +! STRCPY(s, line); +! STRCAT(s, p + 1); + vim_free(line); +! line = s; +! vim_free(sp->nextline); + } + } + +--- 3439,3470 ---- + { + /* compensate for the one line read-ahead */ + --sourcing_lnum; +! +! /* Get the next line and concatenate it when it starts with a +! * backslash. We always need to read the next line, keep it in +! * sp->nextline. */ +! sp->nextline = get_one_sourceline(sp); +! if (sp->nextline != NULL && *(p = skipwhite(sp->nextline)) == '\\') + { +! garray_T ga; +! +! ga_init2(&ga, (int)sizeof(char_u), 200); +! ga_concat(&ga, line); +! ga_concat(&ga, p + 1); +! for (;;) +! { +! vim_free(sp->nextline); +! sp->nextline = get_one_sourceline(sp); +! if (sp->nextline == NULL) +! break; +! p = skipwhite(sp->nextline); +! if (*p != '\\') +! break; +! ga_concat(&ga, p + 1); +! } +! ga_append(&ga, NUL); + vim_free(line); +! line = ga.ga_data; + } + } + +*** ../vim-7.3.432/src/version.c 2012-02-05 22:51:27.000000000 +0100 +--- src/version.c 2012-02-05 23:09:21.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 433, + /**/ + +-- +Due knot trussed yore spell chequer two fined awl miss steaks. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.434 b/source/ap/vim/patches/7.3.434 new file mode 100644 index 00000000..52c14b90 --- /dev/null +++ b/source/ap/vim/patches/7.3.434 @@ -0,0 +1,233 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.434 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.434 +Problem: Using join() can be slow. +Solution: Compute the size of the result before allocation to avoid a lot of + allocations and copies. (Taro Muraoka) +Files: src/eval.c + + +*** ../vim-7.3.433/src/eval.c 2012-02-05 00:39:14.000000000 +0100 +--- src/eval.c 2012-02-06 00:05:31.000000000 +0100 +*************** +*** 442,447 **** +--- 442,448 ---- + static list_T *list_copy __ARGS((list_T *orig, int deep, int copyID)); + static void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); + static char_u *list2string __ARGS((typval_T *tv, int copyID)); ++ static int list_join_inner __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo_style, int copyID, garray_T *join_gap)); + static int list_join __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo, int copyID)); + static int free_unref_items __ARGS((int copyID)); + static void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); +*************** +*** 6571,6617 **** + return (char_u *)ga.ga_data; + } + +! /* +! * Join list "l" into a string in "*gap", using separator "sep". +! * When "echo_style" is TRUE use String as echoed, otherwise as inside a List. +! * Return FAIL or OK. +! */ + static int +! list_join(gap, l, sep, echo_style, copyID) +! garray_T *gap; + list_T *l; + char_u *sep; + int echo_style; + int copyID; + { + int first = TRUE; + char_u *tofree; + char_u numbuf[NUMBUFLEN]; + listitem_T *item; + char_u *s; + + for (item = l->lv_first; item != NULL && !got_int; item = item->li_next) + { +- if (first) +- first = FALSE; +- else +- ga_concat(gap, sep); +- + if (echo_style) + s = echo_string(&item->li_tv, &tofree, numbuf, copyID); + else + s = tv2string(&item->li_tv, &tofree, numbuf, copyID); +- if (s != NULL) +- ga_concat(gap, s); +- vim_free(tofree); + if (s == NULL) + return FAIL; + line_breakcheck(); + } + return OK; + } + + /* + * Garbage collection for lists and dictionaries. + * + * We use reference counts to be able to free most items right away when they +--- 6572,6690 ---- + return (char_u *)ga.ga_data; + } + +! typedef struct join_S { +! char_u *s; +! char_u *tofree; +! } join_T; +! + static int +! list_join_inner(gap, l, sep, echo_style, copyID, join_gap) +! garray_T *gap; /* to store the result in */ + list_T *l; + char_u *sep; + int echo_style; + int copyID; ++ garray_T *join_gap; /* to keep each list item string */ + { ++ int i; ++ join_T *p; ++ int len; ++ int sumlen = 0; + int first = TRUE; + char_u *tofree; + char_u numbuf[NUMBUFLEN]; + listitem_T *item; + char_u *s; + ++ /* Stringify each item in the list. */ + for (item = l->lv_first; item != NULL && !got_int; item = item->li_next) + { + if (echo_style) + s = echo_string(&item->li_tv, &tofree, numbuf, copyID); + else + s = tv2string(&item->li_tv, &tofree, numbuf, copyID); + if (s == NULL) + return FAIL; ++ ++ len = (int)STRLEN(s); ++ sumlen += len; ++ ++ ga_grow(join_gap, 1); ++ p = ((join_T *)join_gap->ga_data) + (join_gap->ga_len++); ++ if (tofree != NULL || s != numbuf) ++ { ++ p->s = s; ++ p->tofree = tofree; ++ } ++ else ++ { ++ p->s = vim_strnsave(s, len); ++ p->tofree = p->s; ++ } ++ ++ line_breakcheck(); ++ } ++ ++ /* Allocate result buffer with its total size, avoid re-allocation and ++ * multiple copy operations. Add 2 for a tailing ']' and NUL. */ ++ if (join_gap->ga_len >= 2) ++ sumlen += (int)STRLEN(sep) * (join_gap->ga_len - 1); ++ if (ga_grow(gap, sumlen + 2) == FAIL) ++ return FAIL; ++ ++ for (i = 0; i < join_gap->ga_len && !got_int; ++i) ++ { ++ if (first) ++ first = FALSE; ++ else ++ ga_concat(gap, sep); ++ p = ((join_T *)join_gap->ga_data) + i; ++ ++ if (p->s != NULL) ++ ga_concat(gap, p->s); + line_breakcheck(); + } ++ + return OK; + } + + /* ++ * Join list "l" into a string in "*gap", using separator "sep". ++ * When "echo_style" is TRUE use String as echoed, otherwise as inside a List. ++ * Return FAIL or OK. ++ */ ++ static int ++ list_join(gap, l, sep, echo_style, copyID) ++ garray_T *gap; ++ list_T *l; ++ char_u *sep; ++ int echo_style; ++ int copyID; ++ { ++ garray_T join_ga; ++ int retval; ++ join_T *p; ++ int i; ++ ++ ga_init2(&join_ga, (int)sizeof(join_T), l->lv_len); ++ retval = list_join_inner(gap, l, sep, echo_style, copyID, &join_ga); ++ ++ /* Dispose each item in join_ga. */ ++ if (join_ga.ga_data != NULL) ++ { ++ p = (join_T *)join_ga.ga_data; ++ for (i = 0; i < join_ga.ga_len; ++i) ++ { ++ vim_free(p->tofree); ++ ++p; ++ } ++ ga_clear(&join_ga); ++ } ++ ++ return retval; ++ } ++ ++ /* + * Garbage collection for lists and dictionaries. + * + * We use reference counts to be able to free most items right away when they +*************** +*** 13406,13412 **** + char_u *rhs; + int mode; + int abbr = FALSE; +! int get_dict = FALSE; + mapblock_T *mp; + int buffer_local; + +--- 13479,13485 ---- + char_u *rhs; + int mode; + int abbr = FALSE; +! int get_dict = FALSE; + mapblock_T *mp; + int buffer_local; + +*** ../vim-7.3.433/src/version.c 2012-02-05 23:10:25.000000000 +0100 +--- src/version.c 2012-02-06 00:10:23.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 434, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +30. Even though you died last week, you've managed to retain OPS on your + favorite IRC channel. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.435 b/source/ap/vim/patches/7.3.435 new file mode 100644 index 00000000..e1b13709 --- /dev/null +++ b/source/ap/vim/patches/7.3.435 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.435 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.435 +Problem: Compiler warning for unused variable. +Solution: Move the variable inside #ifdef. +Files: src/ex_cmds2.c + + +*** ../vim-7.3.434/src/ex_cmds2.c 2012-02-05 23:10:25.000000000 +0100 +--- src/ex_cmds2.c 2012-02-06 06:16:28.000000000 +0100 +*************** +*** 3400,3406 **** + { + struct source_cookie *sp = (struct source_cookie *)cookie; + char_u *line; +! char_u *p, *s; + + #ifdef FEAT_EVAL + /* If breakpoints have been added/deleted need to check for it. */ +--- 3400,3406 ---- + { + struct source_cookie *sp = (struct source_cookie *)cookie; + char_u *line; +! char_u *p; + + #ifdef FEAT_EVAL + /* If breakpoints have been added/deleted need to check for it. */ +*************** +*** 3471,3476 **** +--- 3471,3478 ---- + #ifdef FEAT_MBYTE + if (line != NULL && sp->conv.vc_type != CONV_NONE) + { ++ char_u *s; ++ + /* Convert the encoding of the script line. */ + s = string_convert(&sp->conv, line, NULL); + if (s != NULL) +*** ../vim-7.3.434/src/version.c 2012-02-06 00:13:16.000000000 +0100 +--- src/version.c 2012-02-11 20:38:49.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 435, + /**/ + +-- +Light travels faster than sound. This is why some people +appear bright until you hear them speak + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.436 b/source/ap/vim/patches/7.3.436 new file mode 100644 index 00000000..777371ca --- /dev/null +++ b/source/ap/vim/patches/7.3.436 @@ -0,0 +1,111 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.436 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.436 +Problem: Compiler warnings for types on Windows. +Solution: Add type casts. (Mike Williams) +Files: src/eval.c + + +*** ../vim-7.3.435/src/eval.c 2012-02-06 00:13:16.000000000 +0100 +--- src/eval.c 2012-02-11 20:38:16.000000000 +0100 +*************** +*** 14462,14468 **** + --prevlen; + } + if (prevlen == 0) +! s = vim_strnsave(start, len); + else + { + /* Change "prev" buffer to be the right size. This way +--- 14462,14468 ---- + --prevlen; + } + if (prevlen == 0) +! s = vim_strnsave(start, (int)len); + else + { + /* Change "prev" buffer to be the right size. This way +*************** +*** 14529,14535 **** + + if (dest < buf) + { +! adjust_prevlen = buf - dest; /* must be 1 or 2 */ + dest = buf; + } + if (readlen > p - buf + 1) +--- 14529,14535 ---- + + if (dest < buf) + { +! adjust_prevlen = (int)(buf - dest); /* must be 1 or 2 */ + dest = buf; + } + if (readlen > p - buf + 1) +*************** +*** 14558,14568 **** + * small, to avoid repeatedly 'allocing' large and + * 'reallocing' small. */ + if (prevsize == 0) +! prevsize = p - start; + else + { + long grow50pc = (prevsize * 3) / 2; +! long growmin = (p - start) * 2 + prevlen; + prevsize = grow50pc > growmin ? grow50pc : growmin; + } + if ((newprev = vim_realloc(prev, prevsize)) == NULL) +--- 14558,14568 ---- + * small, to avoid repeatedly 'allocing' large and + * 'reallocing' small. */ + if (prevsize == 0) +! prevsize = (long)(p - start); + else + { + long grow50pc = (prevsize * 3) / 2; +! long growmin = (long)((p - start) * 2 + prevlen); + prevsize = grow50pc > growmin ? grow50pc : growmin; + } + if ((newprev = vim_realloc(prev, prevsize)) == NULL) +*************** +*** 14575,14581 **** + } + /* Add the line part to end of "prev". */ + mch_memmove(prev + prevlen, start, p - start); +! prevlen += p - start; + } + } /* while */ + +--- 14575,14581 ---- + } + /* Add the line part to end of "prev". */ + mch_memmove(prev + prevlen, start, p - start); +! prevlen += (long)(p - start); + } + } /* while */ + +*** ../vim-7.3.435/src/version.c 2012-02-11 20:40:49.000000000 +0100 +--- src/version.c 2012-02-11 20:43:18.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 436, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +39. You move into a new house and decide to Netscape before you landscape. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.437 b/source/ap/vim/patches/7.3.437 new file mode 100644 index 00000000..889efe74 --- /dev/null +++ b/source/ap/vim/patches/7.3.437 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.437 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.437 +Problem: Continue looping inside FOR_ALL_TAB_WINDOWS even when already done. +Solution: Use goto instead of break. (Hirohito Higashi) +Files: src/fileio.c, src/globals.h + + +*** ../vim-7.3.436/src/fileio.c 2011-09-02 11:56:15.000000000 +0200 +--- src/fileio.c 2012-02-11 23:40:23.000000000 +0100 +*************** +*** 8898,8907 **** + if (tp != curtab) + goto_tabpage_tp(tp); + win_goto(aucmd_win); +! break; + } + } + } + + /* Remove the window and frame from the tree of frames. */ + (void)winframe_remove(curwin, &dummy, NULL); +--- 8898,8908 ---- + if (tp != curtab) + goto_tabpage_tp(tp); + win_goto(aucmd_win); +! goto win_found; + } + } + } ++ win_found: + + /* Remove the window and frame from the tree of frames. */ + (void)winframe_remove(curwin, &dummy, NULL); +*** ../vim-7.3.436/src/globals.h 2012-02-04 23:34:57.000000000 +0100 +--- src/globals.h 2012-02-11 23:43:45.000000000 +0100 +*************** +*** 535,540 **** +--- 535,544 ---- + EXTERN win_T *prevwin INIT(= NULL); /* previous window */ + # define W_NEXT(wp) ((wp)->w_next) + # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next) ++ /* ++ * When using this macro "break" only breaks out of the inner loop. Use "goto" ++ * to break out of the tabpage loop. ++ */ + # define FOR_ALL_TAB_WINDOWS(tp, wp) \ + for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \ + for ((wp) = ((tp) == curtab) \ +*** ../vim-7.3.436/src/version.c 2012-02-11 20:44:01.000000000 +0100 +--- src/version.c 2012-02-11 23:40:47.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 437, + /**/ + +-- +The future isn't what it used to be. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.438 b/source/ap/vim/patches/7.3.438 new file mode 100644 index 00000000..94786d7c --- /dev/null +++ b/source/ap/vim/patches/7.3.438 @@ -0,0 +1,126 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.438 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.438 +Problem: There is no way to avoid ":doautoall" reading modelines. +Solution: Add the <nomodeline> argument. Adjust documentation. +Files: src/fileio.c, runtime/doc/autocmd.txt + + +*** ../vim-7.3.437/src/fileio.c 2012-02-11 23:45:30.000000000 +0100 +--- src/fileio.c 2012-02-12 00:08:17.000000000 +0100 +*************** +*** 8739,8744 **** +--- 8739,8752 ---- + int retval; + aco_save_T aco; + buf_T *buf; ++ char_u *arg = eap->arg; ++ int call_do_modelines = TRUE; ++ ++ if (STRNCMP(arg, "<nomodeline>", 12) == 0) ++ { ++ call_do_modelines = FALSE; ++ arg = skipwhite(arg + 12); ++ } + + /* + * This is a bit tricky: For some commands curwin->w_buffer needs to be +*************** +*** 8755,8765 **** + aucmd_prepbuf(&aco, buf); + + /* execute the autocommands for this buffer */ +! retval = do_doautocmd(eap->arg, FALSE); + +! /* Execute the modeline settings, but don't set window-local +! * options if we are using the current window for another buffer. */ +! do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0); + + /* restore the current window */ + aucmd_restbuf(&aco); +--- 8763,8777 ---- + aucmd_prepbuf(&aco, buf); + + /* execute the autocommands for this buffer */ +! retval = do_doautocmd(arg, FALSE); + +! if (call_do_modelines) +! { +! /* Execute the modeline settings, but don't set window-local +! * options if we are using the current window for another +! * buffer. */ +! do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0); +! } + + /* restore the current window */ + aucmd_restbuf(&aco); +*** ../vim-7.3.437/runtime/doc/autocmd.txt 2011-05-19 17:25:36.000000000 +0200 +--- runtime/doc/autocmd.txt 2012-02-12 00:03:45.000000000 +0100 +*************** +*** 1065,1077 **** + autocommands for that group. Note: if you use an + undefined group name, Vim gives you an error message. + +- After applying the autocommands the modelines are +- processed, so that their settings overrule the +- settings from autocommands, like what happens when +- editing a file. +- + *:doautoa* *:doautoall* +! :doautoa[ll] [group] {event} [fname] + Like ":doautocmd", but apply the autocommands to each + loaded buffer. Note that [fname] is used to select + the autocommands, not the buffers to which they are +--- 1073,1080 ---- + autocommands for that group. Note: if you use an + undefined group name, Vim gives you an error message. + + *:doautoa* *:doautoall* +! :doautoa[ll] [<nomodeline>] [group] {event} [fname] + Like ":doautocmd", but apply the autocommands to each + loaded buffer. Note that [fname] is used to select + the autocommands, not the buffers to which they are +*************** +*** 1082,1087 **** +--- 1085,1096 ---- + This command is intended for autocommands that set + options, change highlighting, and things like that. + ++ After applying the autocommands the modelines are ++ processed, so that their settings overrule the ++ settings from autocommands, like what happens when ++ editing a file. This is skipped when the <nomodeline> ++ argument is present. ++ + ============================================================================== + 10. Using autocommands *autocmd-use* + +*** ../vim-7.3.437/src/version.c 2012-02-11 23:45:30.000000000 +0100 +--- src/version.c 2012-02-12 00:16:04.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 438, + /**/ + +-- +"Oh, no! NOT the Spanish Inquisition!" +"NOBODY expects the Spanish Inquisition!!!" + -- Monty Python sketch -- +"Oh, no! NOT another option!" +"EVERYBODY expects another option!!!" + -- Discussion in vim-dev mailing list -- + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.439 b/source/ap/vim/patches/7.3.439 new file mode 100644 index 00000000..63d8f693 --- /dev/null +++ b/source/ap/vim/patches/7.3.439 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.439 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.439 +Problem: Compiler warnings to size casts in Perl interface. +Solution: Use XS macros. (James McCoy) +Files: src/if_perl.xs, src/typemap + + +*** ../vim-7.3.438/src/if_perl.xs 2011-09-07 18:47:19.000000000 +0200 +--- src/if_perl.xs 2012-02-12 00:28:52.000000000 +0100 +*************** +*** 611,617 **** + if (ptr->w_perl_private == NULL) + { + ptr->w_perl_private = newSV(0); +! sv_setiv(ptr->w_perl_private, (IV)ptr); + } + else + SvREFCNT_inc(ptr->w_perl_private); +--- 611,617 ---- + if (ptr->w_perl_private == NULL) + { + ptr->w_perl_private = newSV(0); +! sv_setiv(ptr->w_perl_private, PTR2IV(ptr)); + } + else + SvREFCNT_inc(ptr->w_perl_private); +*************** +*** 629,635 **** + if (ptr->b_perl_private == NULL) + { + ptr->b_perl_private = newSV(0); +! sv_setiv(ptr->b_perl_private, (IV)ptr); + } + else + SvREFCNT_inc(ptr->b_perl_private); +--- 629,635 ---- + if (ptr->b_perl_private == NULL) + { + ptr->b_perl_private = newSV(0); +! sv_setiv(ptr->b_perl_private, PTR2IV(ptr)); + } + else + SvREFCNT_inc(ptr->b_perl_private); +*** ../vim-7.3.438/src/typemap 2010-08-15 21:57:29.000000000 +0200 +--- src/typemap 2012-02-12 00:28:52.000000000 +0100 +*************** +*** 6,12 **** + T_VIOBJNOMUNGE + if (sv_isa($arg, \"${ntype}\")) { + IV tmp = SvIV((SV*)SvRV($arg)); +! $var = ($type) tmp; + if (!tmp) + croak(\"$ntype no longer exists\"); + } +--- 6,12 ---- + T_VIOBJNOMUNGE + if (sv_isa($arg, \"${ntype}\")) { + IV tmp = SvIV((SV*)SvRV($arg)); +! $var = INT2PTR($type, tmp); + if (!tmp) + croak(\"$ntype no longer exists\"); + } +*** ../vim-7.3.438/src/version.c 2012-02-12 00:18:54.000000000 +0100 +--- src/version.c 2012-02-12 00:31:18.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 439, + /**/ + +-- +Microsoft is to software what McDonalds is to gourmet cooking + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.440 b/source/ap/vim/patches/7.3.440 new file mode 100644 index 00000000..39313b0f --- /dev/null +++ b/source/ap/vim/patches/7.3.440 @@ -0,0 +1,211 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.440 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.440 +Problem: Vim does not support UTF8_STRING for the X selection. +Solution: Add UTF8_STRING atom support. (Alex Efros) Use it only when + 'encoding' is set to Unicode. +Files: src/ui.c + + +*** ../vim-7.3.439/src/ui.c 2012-02-04 21:57:44.000000000 +0100 +--- src/ui.c 2012-02-12 01:28:30.000000000 +0100 +*************** +*** 1917,1922 **** +--- 1917,1923 ---- + static Atom vim_atom; /* Vim's own special selection format */ + #ifdef FEAT_MBYTE + static Atom vimenc_atom; /* Vim's extended selection format */ ++ static Atom utf8_atom; + #endif + static Atom compound_text_atom; + static Atom text_atom; +*************** +*** 1930,1935 **** +--- 1931,1937 ---- + vim_atom = XInternAtom(dpy, VIM_ATOM_NAME, False); + #ifdef FEAT_MBYTE + vimenc_atom = XInternAtom(dpy, VIMENC_ATOM_NAME,False); ++ utf8_atom = XInternAtom(dpy, "UTF8_STRING", False); + #endif + compound_text_atom = XInternAtom(dpy, "COMPOUND_TEXT", False); + text_atom = XInternAtom(dpy, "TEXT", False); +*************** +*** 2074,2080 **** + } + #endif + +! else if (*type == compound_text_atom || ( + #ifdef FEAT_MBYTE + enc_dbcs != 0 && + #endif +--- 2076,2086 ---- + } + #endif + +! else if (*type == compound_text_atom +! #ifdef FEAT_MBYTE +! || *type == utf8_atom +! #endif +! || ( + #ifdef FEAT_MBYTE + enc_dbcs != 0 && + #endif +*************** +*** 2128,2134 **** + #else + 1 + #endif +! ; i < 5; i++) + { + switch (i) + { +--- 2134,2140 ---- + #else + 1 + #endif +! ; i < 6; i++) + { + switch (i) + { +*************** +*** 2136,2145 **** + case 0: type = vimenc_atom; break; + #endif + case 1: type = vim_atom; break; +! case 2: type = compound_text_atom; break; +! case 3: type = text_atom; break; + default: type = XA_STRING; + } + success = MAYBE; + XtGetSelectionValue(myShell, cbd->sel_atom, type, + clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime); +--- 2142,2159 ---- + case 0: type = vimenc_atom; break; + #endif + case 1: type = vim_atom; break; +! #ifdef FEAT_MBYTE +! case 2: type = utf8_atom; break; +! #endif +! case 3: type = compound_text_atom; break; +! case 4: type = text_atom; break; + default: type = XA_STRING; + } ++ #ifdef FEAT_MBYTE ++ if (type == utf8_atom && !enc_utf8) ++ /* Only request utf-8 when 'encoding' is utf8. */ ++ continue; ++ #endif + success = MAYBE; + XtGetSelectionValue(myShell, cbd->sel_atom, type, + clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime); +*************** +*** 2230,2247 **** + { + Atom *array; + +! if ((array = (Atom *)XtMalloc((unsigned)(sizeof(Atom) * 6))) == NULL) + return False; + *value = (XtPointer)array; + i = 0; +- array[i++] = XA_STRING; + array[i++] = targets_atom; + #ifdef FEAT_MBYTE + array[i++] = vimenc_atom; + #endif + array[i++] = vim_atom; + array[i++] = text_atom; + array[i++] = compound_text_atom; + *type = XA_ATOM; + /* This used to be: *format = sizeof(Atom) * 8; but that caused + * crashes on 64 bit machines. (Peter Derr) */ +--- 2244,2266 ---- + { + Atom *array; + +! if ((array = (Atom *)XtMalloc((unsigned)(sizeof(Atom) * 7))) == NULL) + return False; + *value = (XtPointer)array; + i = 0; + array[i++] = targets_atom; + #ifdef FEAT_MBYTE + array[i++] = vimenc_atom; + #endif + array[i++] = vim_atom; ++ #ifdef FEAT_MBYTE ++ if (enc_utf8) ++ array[i++] = utf8_atom; ++ #endif ++ array[i++] = XA_STRING; + array[i++] = text_atom; + array[i++] = compound_text_atom; ++ + *type = XA_ATOM; + /* This used to be: *format = sizeof(Atom) * 8; but that caused + * crashes on 64 bit machines. (Peter Derr) */ +*************** +*** 2253,2258 **** +--- 2272,2278 ---- + if ( *target != XA_STRING + #ifdef FEAT_MBYTE + && *target != vimenc_atom ++ && *target != utf8_atom + #endif + && *target != vim_atom + && *target != text_atom +*************** +*** 2282,2294 **** + return False; + } + +! if (*target == XA_STRING) + { + mch_memmove(result, string, (size_t)(*length)); +! *type = XA_STRING; + } +! else if (*target == compound_text_atom +! || *target == text_atom) + { + XTextProperty text_prop; + char *string_nt = (char *)alloc((unsigned)*length + 1); +--- 2302,2317 ---- + return False; + } + +! if (*target == XA_STRING +! #ifdef FEAT_MBYTE +! || (*target == utf8_atom && enc_utf8) +! #endif +! ) + { + mch_memmove(result, string, (size_t)(*length)); +! *type = *target; + } +! else if (*target == compound_text_atom || *target == text_atom) + { + XTextProperty text_prop; + char *string_nt = (char *)alloc((unsigned)*length + 1); +*** ../vim-7.3.439/src/version.c 2012-02-12 00:31:47.000000000 +0100 +--- src/version.c 2012-02-12 01:34:22.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 440, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +42. Your virtual girlfriend finds a new net sweetheart with a larger bandwidth. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.441 b/source/ap/vim/patches/7.3.441 new file mode 100644 index 00000000..9a7539b5 --- /dev/null +++ b/source/ap/vim/patches/7.3.441 @@ -0,0 +1,341 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.441 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.441 +Problem: Newer versions of MzScheme (Racket) require earlier (trampolined) + initialisation. +Solution: Call mzscheme_main() early in main(). (Sergey Khorev) +Files: src/Make_mvc.mak, src/if_mzsch.c, src/main.c, + src/proto/if_mzsch.pro + + +*** ../vim-7.3.440/src/Make_mvc.mak 2011-09-14 19:01:38.000000000 +0200 +--- src/Make_mvc.mak 2012-02-12 01:46:05.000000000 +0100 +*************** +*** 740,745 **** +--- 740,747 ---- + !endif + !endif + MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj ++ # increase stack size ++ MZSCHEME_LIB = $(MZSCHEME_LIB) /STACK:8388608 + !endif + + # Perl interface +*** ../vim-7.3.440/src/if_mzsch.c 2010-11-03 21:59:23.000000000 +0100 +--- src/if_mzsch.c 2012-02-12 01:47:31.000000000 +0100 +*************** +*** 31,38 **** + * depend". */ + #if defined(FEAT_MZSCHEME) || defined(PROTO) + +- #include <assert.h> +- + /* Base data structures */ + #define SCHEME_VIMBUFFERP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_buffer_type) + #define SCHEME_VIMWINDOWP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_window_type) +--- 31,36 ---- +*************** +*** 559,575 **** + hMzSch = vimLoadLib(sch_dll); + hMzGC = vimLoadLib(gc_dll); + +! if (!hMzSch) + { + if (verbose) +! EMSG2(_(e_loadlib), sch_dll); + return FAIL; + } + +! if (!hMzGC) + { + if (verbose) +! EMSG2(_(e_loadlib), gc_dll); + return FAIL; + } + +--- 557,573 ---- + hMzSch = vimLoadLib(sch_dll); + hMzGC = vimLoadLib(gc_dll); + +! if (!hMzGC) + { + if (verbose) +! EMSG2(_(e_loadlib), gc_dll); + return FAIL; + } + +! if (!hMzSch) + { + if (verbose) +! EMSG2(_(e_loadlib), sch_dll); + return FAIL; + } + +*************** +*** 798,862 **** + static __declspec(thread) void *tls_space; + #endif + +! void +! mzscheme_main(void) + { + #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL) + scheme_register_tls_space(&tls_space, 0); + #endif +! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400 +! /* use trampoline for precise GC in MzScheme >= 4.x */ +! scheme_main_setup(TRUE, mzscheme_env_main, 0, NULL); + #else +! mzscheme_env_main(NULL, 0, NULL); + #endif + } + + static int +! mzscheme_env_main(Scheme_Env *env, int argc UNUSED, char **argv UNUSED) + { +! /* neither argument nor return values are used */ +! #ifdef MZ_PRECISE_GC +! # if MZSCHEME_VERSION_MAJOR < 400 +! /* +! * Starting from version 4.x, embedding applications must use +! * scheme_main_setup/scheme_main_stack_setup trampolines +! * rather than setting stack base directly with scheme_set_stack_base +! */ + Scheme_Object *dummy = NULL; + MZ_GC_DECL_REG(1); + MZ_GC_VAR_IN_REG(0, dummy); + + stack_base = &__gc_var_stack__; + # else +- /* environment has been created by us by Scheme */ +- environment = env; +- # endif +- /* +- * In 4.x, all activities must be performed inside trampoline +- * so we are forced to initialise GC immediately +- * This can be postponed in 3.x but I see no point in implementing +- * a feature which will work in older versions only. +- * One would better use conservative GC if he needs dynamic MzScheme +- */ +- mzscheme_init(); +- #else + int dummy = 0; + stack_base = (void *)&dummy; + #endif +! main_loop(FALSE, FALSE); +! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR < 400 + /* releasing dummy */ + MZ_GC_REG(); + MZ_GC_UNREG(); + #endif +! return 0; + } + + static void + startup_mzscheme(void) + { +! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400 + scheme_set_stack_base(stack_base, 1); + #endif + +--- 796,863 ---- + static __declspec(thread) void *tls_space; + #endif + +! /* +! * Since version 4.x precise GC requires trampolined startup. +! * Futures and places in version 5.x need it too. +! */ +! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400 \ +! || MZSCHEME_VERSION_MAJOR >= 500 && (defined(MZ_USE_FUTURES) || defined(MZ_USE_PLACES)) +! # ifdef DYNAMIC_MZSCHEME +! # error Precise GC v.4+ or Racket with futures/places do not support dynamic MzScheme +! # endif +! # define TRAMPOLINED_MZVIM_STARTUP +! #endif +! +! int +! mzscheme_main(int argc, char** argv) + { + #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL) + scheme_register_tls_space(&tls_space, 0); + #endif +! #ifdef TRAMPOLINED_MZVIM_STARTUP +! return scheme_main_setup(TRUE, mzscheme_env_main, argc, argv); + #else +! return mzscheme_env_main(NULL, argc, argv); + #endif + } + + static int +! mzscheme_env_main(Scheme_Env *env, int argc, char **argv) + { +! int vim_main_result; +! #ifdef TRAMPOLINED_MZVIM_STARTUP +! /* Scheme has created the environment for us */ +! environment = env; +! #else +! # ifdef MZ_PRECISE_GC + Scheme_Object *dummy = NULL; + MZ_GC_DECL_REG(1); + MZ_GC_VAR_IN_REG(0, dummy); + + stack_base = &__gc_var_stack__; + # else + int dummy = 0; + stack_base = (void *)&dummy; ++ # endif + #endif +! +! /* mzscheme_main is called as a trampoline from main. +! * We trampoline into vim_main2 +! * Passing argc, argv through from mzscheme_main +! */ +! vim_main_result = vim_main2(argc, argv); +! #if !defined(TRAMPOLINED_MZVIM_STARTUP) && defined(MZ_PRECISE_GC) + /* releasing dummy */ + MZ_GC_REG(); + MZ_GC_UNREG(); + #endif +! return vim_main_result; + } + + static void + startup_mzscheme(void) + { +! #ifndef TRAMPOLINED_MZVIM_STARTUP + scheme_set_stack_base(stack_base, 1); + #endif + +*************** +*** 868,874 **** + MZ_REGISTER_STATIC(exn_message); + MZ_REGISTER_STATIC(vim_exn); + +! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400 + /* in newer versions of precise GC the initial env has been created */ + environment = scheme_basic_env(); + #endif +--- 869,875 ---- + MZ_REGISTER_STATIC(exn_message); + MZ_REGISTER_STATIC(vim_exn); + +! #ifndef TRAMPOLINED_MZVIM_STARTUP + /* in newer versions of precise GC the initial env has been created */ + environment = scheme_basic_env(); + #endif +*************** +*** 3013,3019 **** + MZ_GC_REG(); + + tmp = scheme_make_struct_names(exn_name, scheme_null, 0, &nc); +- assert(nc <= 5); + mch_memmove(exn_names, tmp, nc * sizeof(Scheme_Object *)); + MZ_GC_CHECK(); + +--- 3014,3019 ---- +*** ../vim-7.3.440/src/main.c 2011-12-08 15:57:54.000000000 +0100 +--- src/main.c 2012-02-12 01:49:50.000000000 +0100 +*************** +*** 554,559 **** +--- 554,584 ---- + debug_break_level = params.use_debug_break_level; + #endif + ++ #ifdef FEAT_MZSCHEME ++ /* ++ * Newer version of MzScheme (Racket) require earlier (trampolined) ++ * initialisation via scheme_main_setup. ++ * Implement this by initialising it as early as possible ++ * and splitting off remaining Vim main into vim_main2 ++ */ ++ { ++ /* Pack up preprocessed command line arguments. ++ * It is safe because Scheme does not access argc/argv. */ ++ char *args[2]; ++ args[0] = (char *)fname; ++ args[1] = (char *)¶ms; ++ return mzscheme_main(2, args); ++ } ++ } ++ ++ int vim_main2(int argc, char **argv) ++ { ++ char_u *fname = (char_u *)argv[0]; ++ mparm_T params; ++ ++ memcpy(¶ms, argv[1], sizeof(params)); ++ #endif ++ + /* Execute --cmd arguments. */ + exe_pre_commands(¶ms); + +*************** +*** 957,970 **** + + /* + * Call the main command loop. This never returns. +! * For embedded MzScheme the main_loop will be called by Scheme +! * for proper stack tracking +! */ +! #ifndef FEAT_MZSCHEME + main_loop(FALSE, FALSE); +- #else +- mzscheme_main(); +- #endif + + return 0; + } +--- 982,989 ---- + + /* + * Call the main command loop. This never returns. +! */ + main_loop(FALSE, FALSE); + + return 0; + } +*** ../vim-7.3.440/src/proto/if_mzsch.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/if_mzsch.pro 2012-02-12 01:50:57.000000000 +0100 +*************** +*** 14,19 **** + void mzvim_reset_timer __ARGS((void)); + void *mzvim_eval_string __ARGS((char_u *str)); + int mzthreads_allowed __ARGS((void)); +! void mzscheme_main __ARGS((void)); + void do_mzeval __ARGS((char_u *str, typval_T *rettv)); + /* vim: set ft=c : */ +--- 14,20 ---- + void mzvim_reset_timer __ARGS((void)); + void *mzvim_eval_string __ARGS((char_u *str)); + int mzthreads_allowed __ARGS((void)); +! int mzscheme_main __ARGS((int argc, char **argv)); + void do_mzeval __ARGS((char_u *str, typval_T *rettv)); ++ int vim_main2 __ARGS((int argc, char **argv)); + /* vim: set ft=c : */ +*** ../vim-7.3.440/src/version.c 2012-02-12 01:35:06.000000000 +0100 +--- src/version.c 2012-02-12 01:54:14.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 441, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +43. You tell the kids they can't use the computer because "Daddy's got work to + do" and you don't even have a job. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.442 b/source/ap/vim/patches/7.3.442 new file mode 100644 index 00000000..58b58b4e --- /dev/null +++ b/source/ap/vim/patches/7.3.442 @@ -0,0 +1,186 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.442 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.442 (after 7.3.438) +Problem: Still read modelines for ":doautocmd". +Solution: Move check for <nomodeline> to separate function. +Files: src/fileio.c, src/ex_docmd.c, src/proto/fileio.pro, + runtime/doc/autocmd.txt + + +*** ../vim-7.3.441/src/fileio.c 2012-02-12 00:18:54.000000000 +0100 +--- src/fileio.c 2012-02-12 20:05:35.000000000 +0100 +*************** +*** 8740,8752 **** + aco_save_T aco; + buf_T *buf; + char_u *arg = eap->arg; +! int call_do_modelines = TRUE; +! +! if (STRNCMP(arg, "<nomodeline>", 12) == 0) +! { +! call_do_modelines = FALSE; +! arg = skipwhite(arg + 12); +! } + + /* + * This is a bit tricky: For some commands curwin->w_buffer needs to be +--- 8740,8746 ---- + aco_save_T aco; + buf_T *buf; + char_u *arg = eap->arg; +! int call_do_modelines = check_nomodeline(&arg); + + /* + * This is a bit tricky: For some commands curwin->w_buffer needs to be +*************** +*** 8786,8791 **** +--- 8780,8802 ---- + } + + /* ++ * Check *argp for <nomodeline>. When it is present return FALSE, otherwise ++ * return TRUE and advance *argp to after it. ++ * Thus return TRUE when do_modelines() should be called. ++ */ ++ int ++ check_nomodeline(argp) ++ char_u **argp; ++ { ++ if (STRNCMP(*argp, "<nomodeline>", 12) == 0) ++ { ++ *argp = skipwhite(*argp + 12); ++ return FALSE; ++ } ++ return TRUE; ++ } ++ ++ /* + * Prepare for executing autocommands for (hidden) buffer "buf". + * Search for a visible window containing the current buffer. If there isn't + * one then use "aucmd_win". +*** ../vim-7.3.441/src/ex_docmd.c 2012-01-26 20:41:22.000000000 +0100 +--- src/ex_docmd.c 2012-02-12 20:05:18.000000000 +0100 +*************** +*** 4955,4961 **** + map_clear(eap->cmd, eap->arg, TRUE, TRUE); + } + +! #ifdef FEAT_AUTOCMD + static void + ex_autocmd(eap) + exarg_T *eap; +--- 4955,4961 ---- + map_clear(eap->cmd, eap->arg, TRUE, TRUE); + } + +! #if defined(FEAT_AUTOCMD) || defined(PROTO) + static void + ex_autocmd(eap) + exarg_T *eap; +*************** +*** 4982,4989 **** + ex_doautocmd(eap) + exarg_T *eap; + { +! (void)do_doautocmd(eap->arg, TRUE); +! do_modelines(0); + } + #endif + +--- 4982,4993 ---- + ex_doautocmd(eap) + exarg_T *eap; + { +! char_u *arg = eap->arg; +! int call_do_modelines = check_nomodeline(&arg); +! +! (void)do_doautocmd(arg, TRUE); +! if (call_do_modelines) /* Only when there is no <nomodeline>. */ +! do_modelines(0); + } + #endif + +*** ../vim-7.3.441/src/proto/fileio.pro 2010-12-17 16:27:10.000000000 +0100 +--- src/proto/fileio.pro 2012-02-12 20:05:26.000000000 +0100 +*************** +*** 35,40 **** +--- 35,41 ---- + void do_autocmd __ARGS((char_u *arg, int forceit)); + int do_doautocmd __ARGS((char_u *arg, int do_msg)); + void ex_doautoall __ARGS((exarg_T *eap)); ++ int check_nomodeline __ARGS((char_u **argp)); + void aucmd_prepbuf __ARGS((aco_save_T *aco, buf_T *buf)); + void aucmd_restbuf __ARGS((aco_save_T *aco)); + int apply_autocmds __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf)); +*** ../vim-7.3.441/runtime/doc/autocmd.txt 2012-02-12 00:18:54.000000000 +0100 +--- runtime/doc/autocmd.txt 2012-02-12 20:11:05.000000000 +0100 +*************** +*** 1064,1069 **** +--- 1072,1085 ---- + argument is included, Vim executes only the matching + autocommands for that group. Note: if you use an + undefined group name, Vim gives you an error message. ++ *<nomodeline>* ++ After applying the autocommands the modelines are ++ processed, so that their settings overrule the ++ settings from autocommands, like what happens when ++ editing a file. This is skipped when the <nomodeline> ++ argument is present. You probably want to use ++ <nomodeline> for events that are not used when loading ++ a buffer, such as |User|. + + *:doautoa* *:doautoall* + :doautoa[ll] [<nomodeline>] [group] {event} [fname] +*************** +*** 1077,1088 **** + This command is intended for autocommands that set + options, change highlighting, and things like that. + +- After applying the autocommands the modelines are +- processed, so that their settings overrule the +- settings from autocommands, like what happens when +- editing a file. This is skipped when the <nomodeline> +- argument is present. +- + ============================================================================== + 10. Using autocommands *autocmd-use* + +--- 1093,1098 ---- +*** ../vim-7.3.441/src/version.c 2012-02-12 01:55:50.000000000 +0100 +--- src/version.c 2012-02-12 20:11:34.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 442, + /**/ + +-- +The real +trick is +this: to +keep the +lines as +short as +possible +and keep +the size +the same +yet free +from the +need for +hyphena- +Dammit!! (Matthew Winn) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.443 b/source/ap/vim/patches/7.3.443 new file mode 100644 index 00000000..84b45baa --- /dev/null +++ b/source/ap/vim/patches/7.3.443 @@ -0,0 +1,206 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.443 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.443 +Problem: MS-Windows: 'shcf' and 'shellxquote' defaults are not very good. +Solution: Make a better guess when 'shell' is set to "cmd.exe". (Ben Fritz) +Files: src/option.c, runtime/doc/options.txt + + +*** ../vim-7.3.442/src/option.c 2012-01-28 18:03:30.000000000 +0100 +--- src/option.c 2012-02-12 23:17:55.000000000 +0100 +*************** +*** 3883,3889 **** + + #if defined(MSDOS) || defined(WIN3264) || defined(OS2) + /* +! * Set 'shellcmdflag and 'shellquote' depending on the 'shell' option. + * This is done after other initializations, where 'shell' might have been + * set, but only if they have not been set before. Default for p_shcf is + * "/c", for p_shq is "". For "sh" like shells it is changed here to +--- 3883,3890 ---- + + #if defined(MSDOS) || defined(WIN3264) || defined(OS2) + /* +! * Set 'shellcmdflag', 'shellxquote', and 'shellquote' depending on the +! * 'shell' option. + * This is done after other initializations, where 'shell' might have been + * set, but only if they have not been set before. Default for p_shcf is + * "/c", for p_shq is "". For "sh" like shells it is changed here to +*************** +*** 3920,3925 **** +--- 3921,3962 ---- + # endif + # endif + } ++ else if (strstr((char *)gettail(p_sh), "cmd.exe") != NULL) ++ { ++ int idx3; ++ ++ /* ++ * cmd.exe on Windows will strip the first and last double quote given ++ * on the command line, e.g. most of the time things like: ++ * cmd /c "my path/to/echo" "my args to echo" ++ * become: ++ * my path/to/echo" "my args to echo ++ * when executed. ++ * ++ * To avoid this, use the /s argument in addition to /c to force the ++ * stripping behavior, and also set shellxquote to automatically ++ * surround the entire command in quotes (which get stripped as ++ * noted). ++ */ ++ ++ /* Set shellxquote default to add the quotes to be stripped. */ ++ idx3 = findoption((char_u *)"sxq"); ++ if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) ++ { ++ p_sxq = (char_u *)"\""; ++ options[idx3].def_val[VI_DEFAULT] = p_sxq; ++ } ++ ++ /* Set shellcmdflag default to always strip the quotes, note the order ++ * between /s and /c is important or cmd.exe will treat the /s as part ++ * of the command to be executed. */ ++ idx3 = findoption((char_u *)"shcf"); ++ if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) ++ { ++ p_shcf = (char_u *)"/s /c"; ++ options[idx3].def_val[VI_DEFAULT] = p_shcf; ++ } ++ } + #endif + + #ifdef FEAT_TITLE +*** ../vim-7.3.442/runtime/doc/options.txt 2011-06-26 05:36:07.000000000 +0200 +--- runtime/doc/options.txt 2012-02-12 23:21:59.000000000 +0100 +*************** +*** 5880,5895 **** + security reasons. + + *'shellcmdflag'* *'shcf'* +! 'shellcmdflag' 'shcf' string (default: "-c", MS-DOS and Win32, when 'shell' +! does not contain "sh" somewhere: "/c") + global + {not in Vi} + Flag passed to the shell to execute "!" and ":!" commands; e.g., + "bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like + systems, the default is set according to the value of 'shell', to + reduce the need to set this option by the user. It's not used for +! OS/2 (EMX figures this out itself). See |option-backslash| about +! including spaces and backslashes. See |dos-shell|. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + +--- 5899,5919 ---- + security reasons. + + *'shellcmdflag'* *'shcf'* +! 'shellcmdflag' 'shcf' string (default: "-c"; +! Win32, when 'shell' is cmd.exe: "/s /c"; +! MS-DOS and Win32, when 'shell' neither is +! cmd.exe nor contains "sh" somewhere: "/c") + global + {not in Vi} + Flag passed to the shell to execute "!" and ":!" commands; e.g., + "bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like + systems, the default is set according to the value of 'shell', to + reduce the need to set this option by the user. It's not used for +! OS/2 (EMX figures this out itself). +! On Unix it can have more than one flag. Each white space separated +! part is passed as an argument to the shell command. +! See |option-backslash| about including spaces and backslashes. +! Also see |dos-shell| for MS-DOS and MS-Windows. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + +*************** +*** 5910,5918 **** + For Unix the default it "| tee". The stdout of the compiler is saved + in a file and echoed to the screen. If the 'shell' option is "csh" or + "tcsh" after initializations, the default becomes "|& tee". If the +! 'shell' option is "sh", "ksh", "zsh" or "bash" the default becomes +! "2>&1| tee". This means that stderr is also included. Before using +! the 'shell' option a path is removed, thus "/bin/sh" uses "sh". + The initialization of this option is done after reading the ".vimrc" + and the other initializations, so that when the 'shell' option is set + there, the 'shellpipe' option changes automatically, unless it was +--- 5934,5943 ---- + For Unix the default it "| tee". The stdout of the compiler is saved + in a file and echoed to the screen. If the 'shell' option is "csh" or + "tcsh" after initializations, the default becomes "|& tee". If the +! 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh" or "bash" the +! default becomes "2>&1| tee". This means that stderr is also included. +! Before using the 'shell' option a path is removed, thus "/bin/sh" uses +! "sh". + The initialization of this option is done after reading the ".vimrc" + and the other initializations, so that when the 'shell' option is set + there, the 'shellpipe' option changes automatically, unless it was +*************** +*** 6017,6024 **** + + *'shellxquote'* *'sxq'* + 'shellxquote' 'sxq' string (default: ""; +! for Win32, when 'shell' contains "sh" +! somewhere: "\"" + for Unix, when using system(): "\"") + global + {not in Vi} +--- 6043,6050 ---- + + *'shellxquote'* *'sxq'* + 'shellxquote' 'sxq' string (default: ""; +! for Win32, when 'shell' is cmd.exe or +! contains "sh" somewhere: "\"" + for Unix, when using system(): "\"") + global + {not in Vi} +*************** +*** 6026,6036 **** + the "!" and ":!" commands. Includes the redirection. See + 'shellquote' to exclude the redirection. It's probably not useful + to set both options. +! This is an empty string by default. Known to be useful for +! third-party shells when using the Win32 version, such as the MKS Korn +! Shell or bash, where it should be "\"". The default is adjusted +! according the value of 'shell', to reduce the need to set this option +! by the user. See |dos-shell|. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + +--- 6052,6063 ---- + the "!" and ":!" commands. Includes the redirection. See + 'shellquote' to exclude the redirection. It's probably not useful + to set both options. +! This is an empty string by default on most systems, but is known to be +! useful for on Win32 version, either for cmd.exe which automatically +! strips off the first and last quote on a command, or 3rd-party shells +! such as the MKS Korn Shell or bash, where it should be "\"". The +! default is adjusted according the value of 'shell', to reduce the need +! to set this option by the user. See |dos-shell|. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + +*** ../vim-7.3.442/src/version.c 2012-02-12 20:13:55.000000000 +0100 +--- src/version.c 2012-02-12 23:18:40.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 443, + /**/ + +-- +CVS sux, men don't like commitment + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.444 b/source/ap/vim/patches/7.3.444 new file mode 100644 index 00000000..64ed88bf --- /dev/null +++ b/source/ap/vim/patches/7.3.444 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.444 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.444 +Problem: ":all!" and ":sall!" give error E477, even though the + documentation says these are valid commands. +Solution: Support the exclamation mark. (Hirohito Higashi) +Files: src/ex_cmds.h, src/testdir/test31.in, src/testdir/test31.ok + + +*** ../vim-7.3.443/src/ex_cmds.h 2011-06-20 05:02:53.000000000 +0200 +--- src/ex_cmds.h 2012-02-12 23:53:31.000000000 +0100 +*************** +*** 102,108 **** + EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_all, "all", ex_all, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_amenu, "amenu", ex_menu, + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_anoremenu, "anoremenu", ex_menu, +--- 102,108 ---- + EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_all, "all", ex_all, +! BANG|RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_amenu, "amenu", ex_menu, + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_anoremenu, "anoremenu", ex_menu, +*************** +*** 798,804 **** + EX(CMD_sargument, "sargument", ex_argument, + BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_sall, "sall", ex_all, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_sandbox, "sandbox", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_saveas, "saveas", ex_write, +--- 798,804 ---- + EX(CMD_sargument, "sargument", ex_argument, + BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_sall, "sall", ex_all, +! BANG|RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_sandbox, "sandbox", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_saveas, "saveas", ex_write, +*** ../vim-7.3.443/src/testdir/test31.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test31.in 2012-02-12 23:57:42.000000000 +0100 +*************** +*** 63,68 **** +--- 63,74 ---- + :" write "testtext 1" + A 3:close! + :w >>test.out ++ :set nohidden ++ :" test ":all!" hides changed buffer; write "testtext 2 2 2" ++ :sp Xtest4 ++ GA 4:all! ++ :1wincmd w ++ :w >>test.out + :qa! + ENDTEST + +*** ../vim-7.3.443/src/testdir/test31.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test31.ok 2012-02-13 00:00:13.000000000 +0100 +*************** +*** 9,11 **** +--- 9,12 ---- + testtext 1 + testtext 3 3 3 + testtext 1 ++ testtext 2 2 2 +*** ../vim-7.3.443/src/version.c 2012-02-12 23:23:25.000000000 +0100 +--- src/version.c 2012-02-12 23:52:47.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 444, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +50. The last girl you picked up was only a jpeg. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.445 b/source/ap/vim/patches/7.3.445 new file mode 100644 index 00000000..8d7c337b --- /dev/null +++ b/source/ap/vim/patches/7.3.445 @@ -0,0 +1,199 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.445 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.445 (after 7.3.443) +Problem: Can't properly escape commands for cmd.exe. +Solution: Default 'shellxquote' to '('. Append ')' to make '(command)'. + No need to use "/s" for 'shellcmdflag'. +Files: src/misc2.c, src/option.c, src/os_win32.c + + +*** ../vim-7.3.444/src/misc2.c 2012-01-20 17:15:47.000000000 +0100 +--- src/misc2.c 2012-02-16 05:34:37.000000000 +0100 +*************** +*** 3230,3236 **** + { + STRCPY(ncmd, p_sxq); + STRCAT(ncmd, cmd); +! STRCAT(ncmd, p_sxq); + retval = mch_call_shell(ncmd, opt); + vim_free(ncmd); + } +--- 3230,3240 ---- + { + STRCPY(ncmd, p_sxq); + STRCAT(ncmd, cmd); +! /* When 'shellxquote' is ( append ). +! * When 'shellxquote' is "( append )". */ +! STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")" +! : STRCMP(p_sxq, "\"(") == 0 ? (char_u *)")\"" +! : p_sxq); + retval = mch_call_shell(ncmd, opt); + vim_free(ncmd); + } +*** ../vim-7.3.444/src/option.c 2012-02-12 23:23:25.000000000 +0100 +--- src/option.c 2012-02-19 18:08:48.000000000 +0100 +*************** +*** 3933,3959 **** + * my path/to/echo" "my args to echo + * when executed. + * +! * To avoid this, use the /s argument in addition to /c to force the +! * stripping behavior, and also set shellxquote to automatically +! * surround the entire command in quotes (which get stripped as +! * noted). + */ +- +- /* Set shellxquote default to add the quotes to be stripped. */ + idx3 = findoption((char_u *)"sxq"); + if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) + { +! p_sxq = (char_u *)"\""; + options[idx3].def_val[VI_DEFAULT] = p_sxq; + } + +- /* Set shellcmdflag default to always strip the quotes, note the order +- * between /s and /c is important or cmd.exe will treat the /s as part +- * of the command to be executed. */ + idx3 = findoption((char_u *)"shcf"); + if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) + { +! p_shcf = (char_u *)"/s /c"; + options[idx3].def_val[VI_DEFAULT] = p_shcf; + } + } +--- 3933,3954 ---- + * my path/to/echo" "my args to echo + * when executed. + * +! * To avoid this, set shellxquote to surround the command in +! * parenthesis. This appears to make most commands work, without +! * breaking commands that worked previously, such as +! * '"path with spaces/cmd" "a&b"'. + */ + idx3 = findoption((char_u *)"sxq"); + if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) + { +! p_sxq = (char_u *)"("; + options[idx3].def_val[VI_DEFAULT] = p_sxq; + } + + idx3 = findoption((char_u *)"shcf"); + if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) + { +! p_shcf = (char_u *)"/c"; + options[idx3].def_val[VI_DEFAULT] = p_shcf; + } + } +*** ../vim-7.3.444/src/os_win32.c 2011-08-27 15:10:00.000000000 +0200 +--- src/os_win32.c 2012-02-19 18:11:23.000000000 +0100 +*************** +*** 3908,3915 **** + newcmd = lalloc(cmdlen, TRUE); + if (newcmd != NULL) + { +! char_u *cmdbase = (*cmd == '"' ? cmd + 1 : cmd); + + if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5])) + { + STARTUPINFO si; +--- 3908,3920 ---- + newcmd = lalloc(cmdlen, TRUE); + if (newcmd != NULL) + { +! char_u *cmdbase = cmd; + ++ /* Skip a leading ", ( and "(. */ ++ if (*cmdbase == '"' ) ++ ++cmdbase; ++ if (*cmdbase == '(') ++ ++cmdbase; + if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5])) + { + STARTUPINFO si; +*************** +*** 3953,3968 **** + * empty, keep the double quotes around the command. + * Otherwise remove the double quotes, they aren't needed + * here, because we don't use a shell to run the command. */ +! if (*cmd == '"' && *p_sxq == NUL) + { +! newcmd[0] = '"'; +! STRCPY(newcmd + 1, cmdbase); +! } +! else +! { +! STRCPY(newcmd, cmdbase); +! if (*cmd == '"' && *newcmd != NUL) +! newcmd[STRLEN(newcmd) - 1] = NUL; + } + + /* +--- 3958,3983 ---- + * empty, keep the double quotes around the command. + * Otherwise remove the double quotes, they aren't needed + * here, because we don't use a shell to run the command. */ +! if (cmdbase > cmd) + { +! if (STRNCMP(cmd, p_sxq, cmd - cmdbase) != 0) +! { +! STRCPY(newcmd, cmd); +! } +! else +! { +! char_u *p; +! +! STRCPY(newcmd, cmdbase); +! /* Remove a trailing ", ) and )" if they have a match +! * at the start of the command. */ +! p = newcmd + STRLEN(newcmd); +! if (p > newcmd && p[-1] == '"' && *cmd == '"') +! *--p = NUL; +! if (p > newcmd && p[-1] == ')' +! && (*cmd =='(' || cmd[1] == '(')) +! *--p = NUL; +! } + } + + /* +*************** +*** 3970,3976 **** + * inherit our handles which causes unpleasant dangling swap + * files if we exit before the spawned process + */ +! if (CreateProcess (NULL, // Executable name + newcmd, // Command to execute + NULL, // Process security attributes + NULL, // Thread security attributes +--- 3985,3991 ---- + * inherit our handles which causes unpleasant dangling swap + * files if we exit before the spawned process + */ +! if (CreateProcess(NULL, // Executable name + newcmd, // Command to execute + NULL, // Process security attributes + NULL, // Thread security attributes +*** ../vim-7.3.444/src/version.c 2012-02-13 00:01:38.000000000 +0100 +--- src/version.c 2012-02-19 18:01:46.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 445, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +80. At parties, you introduce your spouse as your "service provider." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.446 b/source/ap/vim/patches/7.3.446 new file mode 100644 index 00000000..59a2b254 --- /dev/null +++ b/source/ap/vim/patches/7.3.446 @@ -0,0 +1,164 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.446 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.446 (after 7.3.445) +Problem: Win32: External commands with special characters don't work. +Solution: Add the 'shellxescape' option. +Files: src/misc2.c, src/option.c, src/option.h, runtime/doc/options.txt + + +*** ../vim-7.3.445/src/misc2.c 2012-02-19 18:19:24.000000000 +0100 +--- src/misc2.c 2012-02-20 22:05:22.000000000 +0100 +*************** +*** 3225,3235 **** + retval = mch_call_shell(cmd, opt); + else + { +! ncmd = alloc((unsigned)(STRLEN(cmd) + STRLEN(p_sxq) * 2 + 1)); + if (ncmd != NULL) + { + STRCPY(ncmd, p_sxq); +! STRCAT(ncmd, cmd); + /* When 'shellxquote' is ( append ). + * When 'shellxquote' is "( append )". */ + STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")" +--- 3225,3243 ---- + retval = mch_call_shell(cmd, opt); + else + { +! char_u *ecmd = cmd; +! +! if (*p_sxe != NUL && STRCMP(p_sxq, "(") == 0) +! { +! ecmd = vim_strsave_escaped_ext(cmd, p_sxe, '^', FALSE); +! if (ecmd == NULL) +! ecmd = cmd; +! } +! ncmd = alloc((unsigned)(STRLEN(ecmd) + STRLEN(p_sxq) * 2 + 1)); + if (ncmd != NULL) + { + STRCPY(ncmd, p_sxq); +! STRCAT(ncmd, ecmd); + /* When 'shellxquote' is ( append ). + * When 'shellxquote' is "( append )". */ + STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")" +*************** +*** 3240,3245 **** +--- 3248,3255 ---- + } + else + retval = -1; ++ if (ecmd != cmd) ++ vim_free(ecmd); + } + #ifdef FEAT_GUI + --hold_gui_events; +*** ../vim-7.3.445/src/option.c 2012-02-19 18:19:24.000000000 +0100 +--- src/option.c 2012-02-20 22:01:07.000000000 +0100 +*************** +*** 2273,2278 **** +--- 2273,2287 ---- + (char_u *)"", + #endif + (char_u *)0L} SCRIPTID_INIT}, ++ {"shellxescape", "sxe", P_STRING|P_VI_DEF|P_SECURE, ++ (char_u *)&p_sxe, PV_NONE, ++ { ++ #if defined(MSDOS) || defined(WIN16) || defined(WIN3264) ++ (char_u *)"\"&|<>()@^", ++ #else ++ (char_u *)"", ++ #endif ++ (char_u *)0L} SCRIPTID_INIT}, + {"shiftround", "sr", P_BOOL|P_VI_DEF|P_VIM, + (char_u *)&p_sr, PV_NONE, + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, +*** ../vim-7.3.445/src/option.h 2011-10-20 21:09:25.000000000 +0200 +--- src/option.h 2012-02-20 21:45:31.000000000 +0100 +*************** +*** 712,717 **** +--- 712,718 ---- + #endif + EXTERN char_u *p_shq; /* 'shellquote' */ + EXTERN char_u *p_sxq; /* 'shellxquote' */ ++ EXTERN char_u *p_sxe; /* 'shellxescape' */ + EXTERN char_u *p_srr; /* 'shellredir' */ + #ifdef AMIGA + EXTERN long p_st; /* 'shelltype' */ +*** ../vim-7.3.445/runtime/doc/options.txt 2012-02-12 23:23:25.000000000 +0100 +--- runtime/doc/options.txt 2012-02-20 22:09:19.000000000 +0100 +*************** +*** 6023,6030 **** + + *'shellxquote'* *'sxq'* + 'shellxquote' 'sxq' string (default: ""; +! for Win32, when 'shell' is cmd.exe or +! contains "sh" somewhere: "\"" + for Unix, when using system(): "\"") + global + {not in Vi} +--- 6042,6050 ---- + + *'shellxquote'* *'sxq'* + 'shellxquote' 'sxq' string (default: ""; +! for Win32, when 'shell' is cmd.exe: "(" +! for Win32, when 'shell' contains "sh" +! somewhere: "\"" + for Unix, when using system(): "\"") + global + {not in Vi} +*************** +*** 6032,6037 **** +--- 6052,6060 ---- + the "!" and ":!" commands. Includes the redirection. See + 'shellquote' to exclude the redirection. It's probably not useful + to set both options. ++ When the value is '(' then ')' is appended. When the value is '"(' ++ then ')"' is appended. ++ When the value is '(' then also see 'shellxescape'. + This is an empty string by default on most systems, but is known to be + useful for on Win32 version, either for cmd.exe which automatically + strips off the first and last quote on a command, or 3rd-party shells +*************** +*** 6041,6046 **** +--- 6064,6079 ---- + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + ++ *'shellxescape'* *'sxe'* ++ 'shellxescape' 'sxe' string (default: ""; ++ for MS-DOS and MS-Windows: "\"&|<>()@^") ++ global ++ {not in Vi} ++ When 'shellxquote' is set to "(" then the characters listed in this ++ option will be escaped with a '^' character. This makes it possible ++ to execute most external commands with cmd.exe. ++ ++ + *'shiftround'* *'sr'* *'noshiftround'* *'nosr'* + 'shiftround' 'sr' boolean (default off) + global +*** ../vim-7.3.445/src/version.c 2012-02-19 18:19:24.000000000 +0100 +--- src/version.c 2012-02-20 22:12:32.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 446, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +86. E-mail Deficiency Depression (EDD) forces you to e-mail yourself. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.447 b/source/ap/vim/patches/7.3.447 new file mode 100644 index 00000000..9c0af9f4 --- /dev/null +++ b/source/ap/vim/patches/7.3.447 @@ -0,0 +1,377 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.447 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.447 (after 7.3.446) +Problem: Win32: External commands with "start" do not work. +Solution: Unescape part of the command. (Yasuhiro Matsumoto) +Files: src/os_win32.c + + +*** ../vim-7.3.446/src/os_win32.c 2012-02-19 18:19:24.000000000 +0100 +--- src/os_win32.c 2012-02-21 20:56:51.000000000 +0100 +*************** +*** 259,264 **** +--- 259,287 ---- + } + + /* ++ * Unescape characters in "p" that appear in "escaped". ++ */ ++ static void ++ unescape_shellxquote(char_u *p, char_u *escaped) ++ { ++ int l = STRLEN(p); ++ int n; ++ ++ while (*p != NUL) ++ { ++ if (*p == '^' && vim_strchr(escaped, p[1]) != NULL) ++ mch_memmove(p, p + 1, l--); ++ #ifdef FEAT_MBYTE ++ n = (*mb_ptr2len)(p); ++ #else ++ n = 1; ++ #endif ++ p += n; ++ l -= n; ++ } ++ } ++ ++ /* + * Load library "name". + */ + HINSTANCE +*************** +*** 3559,3564 **** +--- 3582,3588 ---- + garray_T ga; + int delay = 1; + DWORD buffer_off = 0; /* valid bytes in buffer[] */ ++ char *p = NULL; + + SECURITY_ATTRIBUTES saAttr; + +*************** +*** 3599,3607 **** + if (options & SHELL_READ) + ga_init2(&ga, 1, BUFLEN); + + /* Now, run the command */ + CreateProcess(NULL, /* Executable name */ +! cmd, /* Command to execute */ + NULL, /* Process security attributes */ + NULL, /* Thread security attributes */ + +--- 3623,3640 ---- + if (options & SHELL_READ) + ga_init2(&ga, 1, BUFLEN); + ++ if (cmd != NULL) ++ { ++ p = (char *)vim_strsave((char_u *)cmd); ++ if (p != NULL) ++ unescape_shellxquote((char_u *)p, p_sxe); ++ else ++ p = cmd; ++ } ++ + /* Now, run the command */ + CreateProcess(NULL, /* Executable name */ +! p, /* Command to execute */ + NULL, /* Process security attributes */ + NULL, /* Thread security attributes */ + +*************** +*** 3616,3621 **** +--- 3649,3656 ---- + &si, /* Startup information */ + &pi); /* Process information */ + ++ if (p != cmd) ++ vim_free(p); + + /* Close our unused side of the pipes */ + CloseHandle(g_hChildStd_IN_Rd); +*************** +*** 3898,4018 **** + else + { + /* we use "command" or "cmd" to start the shell; slow but easy */ +! char_u *newcmd; +! long_u cmdlen = ( +! #ifdef FEAT_GUI_W32 +! (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) + +! #endif +! STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10); +! +! newcmd = lalloc(cmdlen, TRUE); +! if (newcmd != NULL) +! { +! char_u *cmdbase = cmd; +! +! /* Skip a leading ", ( and "(. */ +! if (*cmdbase == '"' ) +! ++cmdbase; +! if (*cmdbase == '(') +! ++cmdbase; +! if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5])) +! { +! STARTUPINFO si; +! PROCESS_INFORMATION pi; +! DWORD flags = CREATE_NEW_CONSOLE; +! +! si.cb = sizeof(si); +! si.lpReserved = NULL; +! si.lpDesktop = NULL; +! si.lpTitle = NULL; +! si.dwFlags = 0; +! si.cbReserved2 = 0; +! si.lpReserved2 = NULL; +! +! cmdbase = skipwhite(cmdbase + 5); +! if ((STRNICMP(cmdbase, "/min", 4) == 0) +! && vim_iswhite(cmdbase[4])) +! { +! cmdbase = skipwhite(cmdbase + 4); +! si.dwFlags = STARTF_USESHOWWINDOW; +! si.wShowWindow = SW_SHOWMINNOACTIVE; +! } +! else if ((STRNICMP(cmdbase, "/b", 2) == 0) +! && vim_iswhite(cmdbase[2])) +! { +! cmdbase = skipwhite(cmdbase + 2); +! flags = CREATE_NO_WINDOW; +! si.dwFlags = STARTF_USESTDHANDLES; +! si.hStdInput = CreateFile("\\\\.\\NUL", // File name +! GENERIC_READ, // Access flags +! 0, // Share flags +! NULL, // Security att. +! OPEN_EXISTING, // Open flags +! FILE_ATTRIBUTE_NORMAL, // File att. +! NULL); // Temp file +! si.hStdOutput = si.hStdInput; +! si.hStdError = si.hStdInput; +! } + +! /* When the command is in double quotes, but 'shellxquote' is +! * empty, keep the double quotes around the command. +! * Otherwise remove the double quotes, they aren't needed +! * here, because we don't use a shell to run the command. */ +! if (cmdbase > cmd) +! { +! if (STRNCMP(cmd, p_sxq, cmd - cmdbase) != 0) +! { +! STRCPY(newcmd, cmd); +! } +! else +! { +! char_u *p; + +! STRCPY(newcmd, cmdbase); +! /* Remove a trailing ", ) and )" if they have a match +! * at the start of the command. */ +! p = newcmd + STRLEN(newcmd); +! if (p > newcmd && p[-1] == '"' && *cmd == '"') +! *--p = NUL; +! if (p > newcmd && p[-1] == ')' +! && (*cmd =='(' || cmd[1] == '(')) +! *--p = NUL; +! } +! } + +! /* +! * Now, start the command as a process, so that it doesn't +! * inherit our handles which causes unpleasant dangling swap +! * files if we exit before the spawned process +! */ +! if (CreateProcess(NULL, // Executable name +! newcmd, // Command to execute +! NULL, // Process security attributes +! NULL, // Thread security attributes +! FALSE, // Inherit handles +! flags, // Creation flags +! NULL, // Environment +! NULL, // Current directory +! &si, // Startup information +! &pi)) // Process information +! x = 0; +! else +! { +! x = -1; + #ifdef FEAT_GUI_W32 +! EMSG(_("E371: Command not found")); + #endif +- } +- if (si.hStdInput != NULL) +- { +- /* Close the handle to \\.\NUL */ +- CloseHandle(si.hStdInput); +- } +- /* Close the handles to the subprocess, so that it goes away */ +- CloseHandle(pi.hThread); +- CloseHandle(pi.hProcess); + } +! else + { + #if defined(FEAT_GUI_W32) + if (need_vimrun_warning) +--- 3933,4048 ---- + else + { + /* we use "command" or "cmd" to start the shell; slow but easy */ +! char_u *cmdbase = cmd; + +! /* Skip a leading ", ( and "(. */ +! if (*cmdbase == '"' ) +! ++cmdbase; +! if (*cmdbase == '(') +! ++cmdbase; +! +! if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5])) +! { +! STARTUPINFO si; +! PROCESS_INFORMATION pi; +! DWORD flags = CREATE_NEW_CONSOLE; +! char_u *p; +! +! si.cb = sizeof(si); +! si.lpReserved = NULL; +! si.lpDesktop = NULL; +! si.lpTitle = NULL; +! si.dwFlags = 0; +! si.cbReserved2 = 0; +! si.lpReserved2 = NULL; +! +! cmdbase = skipwhite(cmdbase + 5); +! if ((STRNICMP(cmdbase, "/min", 4) == 0) +! && vim_iswhite(cmdbase[4])) +! { +! cmdbase = skipwhite(cmdbase + 4); +! si.dwFlags = STARTF_USESHOWWINDOW; +! si.wShowWindow = SW_SHOWMINNOACTIVE; +! } +! else if ((STRNICMP(cmdbase, "/b", 2) == 0) +! && vim_iswhite(cmdbase[2])) +! { +! cmdbase = skipwhite(cmdbase + 2); +! flags = CREATE_NO_WINDOW; +! si.dwFlags = STARTF_USESTDHANDLES; +! si.hStdInput = CreateFile("\\\\.\\NUL", // File name +! GENERIC_READ, // Access flags +! 0, // Share flags +! NULL, // Security att. +! OPEN_EXISTING, // Open flags +! FILE_ATTRIBUTE_NORMAL, // File att. +! NULL); // Temp file +! si.hStdOutput = si.hStdInput; +! si.hStdError = si.hStdInput; +! } +! +! /* Remove a trailing ", ) and )" if they have a match +! * at the start of the command. */ +! if (cmdbase > cmd) +! { +! p = cmdbase + STRLEN(cmdbase); +! if (p > cmdbase && p[-1] == '"' && *cmd == '"') +! *--p = NUL; +! if (p > cmdbase && p[-1] == ')' +! && (*cmd =='(' || cmd[1] == '(')) +! *--p = NUL; +! } + +! /* +! * Unescape characters in shellxescape. This is workaround for +! * /b option. Only redirect character should be unescaped. +! */ +! unescape_shellxquote(cmdbase, +! (flags & CREATE_NEW_CONSOLE) ? p_sxe : "<>"); + +! /* +! * Now, start the command as a process, so that it doesn't +! * inherit our handles which causes unpleasant dangling swap +! * files if we exit before the spawned process +! */ +! if (CreateProcess(NULL, // Executable name +! cmdbase, // Command to execute +! NULL, // Process security attributes +! NULL, // Thread security attributes +! FALSE, // Inherit handles +! flags, // Creation flags +! NULL, // Environment +! NULL, // Current directory +! &si, // Startup information +! &pi)) // Process information +! x = 0; +! else +! { +! x = -1; + #ifdef FEAT_GUI_W32 +! EMSG(_("E371: Command not found")); + #endif + } +! if (si.hStdInput != NULL) +! { +! /* Close the handle to \\.\NUL */ +! CloseHandle(si.hStdInput); +! } +! /* Close the handles to the subprocess, so that it goes away */ +! CloseHandle(pi.hThread); +! CloseHandle(pi.hProcess); +! } +! else +! { +! char_u *newcmd; +! long_u cmdlen = ( +! #ifdef FEAT_GUI_W32 +! (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) + +! #endif +! STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10); +! +! newcmd = lalloc(cmdlen, TRUE); +! if (newcmd != NULL) + { + #if defined(FEAT_GUI_W32) + if (need_vimrun_warning) +*************** +*** 4038,4045 **** + vim_snprintf((char *)newcmd, cmdlen, "%s %s %s", + p_sh, p_shcf, cmd); + x = mch_system((char *)newcmd, options); + } +- vim_free(newcmd); + } + } + +--- 4068,4075 ---- + vim_snprintf((char *)newcmd, cmdlen, "%s %s %s", + p_sh, p_shcf, cmd); + x = mch_system((char *)newcmd, options); ++ vim_free(newcmd); + } + } + } + +*** ../vim-7.3.446/src/version.c 2012-02-20 22:18:23.000000000 +0100 +--- src/version.c 2012-02-21 21:20:05.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 447, + /**/ + +-- +From "know your smileys": + :----} You lie like Pinocchio + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.448 b/source/ap/vim/patches/7.3.448 new file mode 100644 index 00000000..91d8f26e --- /dev/null +++ b/source/ap/vim/patches/7.3.448 @@ -0,0 +1,180 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.448 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.448 (after 7.3.447) +Problem: Win32: Still a problem with "!start /b". +Solution: Escape only '|'. (Yasuhiro Matsumoto) +Files: src/os_win32.c + + +*** ../vim-7.3.447/src/os_win32.c 2012-02-21 21:22:40.000000000 +0100 +--- src/os_win32.c 2012-02-22 13:06:55.000000000 +0100 +*************** +*** 3933,3939 **** + else + { + /* we use "command" or "cmd" to start the shell; slow but easy */ +! char_u *cmdbase = cmd; + + /* Skip a leading ", ( and "(. */ + if (*cmdbase == '"' ) +--- 3933,3941 ---- + else + { + /* we use "command" or "cmd" to start the shell; slow but easy */ +! char_u *newcmd = NULL; +! char_u *cmdbase = cmd; +! long_u cmdlen; + + /* Skip a leading ", ( and "(. */ + if (*cmdbase == '"' ) +*************** +*** 3971,3982 **** + flags = CREATE_NO_WINDOW; + si.dwFlags = STARTF_USESTDHANDLES; + si.hStdInput = CreateFile("\\\\.\\NUL", // File name +! GENERIC_READ, // Access flags + 0, // Share flags +! NULL, // Security att. +! OPEN_EXISTING, // Open flags +! FILE_ATTRIBUTE_NORMAL, // File att. +! NULL); // Temp file + si.hStdOutput = si.hStdInput; + si.hStdError = si.hStdInput; + } +--- 3973,3984 ---- + flags = CREATE_NO_WINDOW; + si.dwFlags = STARTF_USESTDHANDLES; + si.hStdInput = CreateFile("\\\\.\\NUL", // File name +! GENERIC_READ, // Access flags + 0, // Share flags +! NULL, // Security att. +! OPEN_EXISTING, // Open flags +! FILE_ATTRIBUTE_NORMAL, // File att. +! NULL); // Temp file + si.hStdOutput = si.hStdInput; + si.hStdError = si.hStdInput; + } +*************** +*** 3993,4004 **** + *--p = NUL; + } + + /* +! * Unescape characters in shellxescape. This is workaround for +! * /b option. Only redirect character should be unescaped. + */ +! unescape_shellxquote(cmdbase, +! (flags & CREATE_NEW_CONSOLE) ? p_sxe : "<>"); + + /* + * Now, start the command as a process, so that it doesn't +--- 3995,4030 ---- + *--p = NUL; + } + ++ newcmd = cmdbase; ++ unescape_shellxquote(cmdbase, p_sxe); ++ + /* +! * If creating new console, arguments are passed to the +! * 'cmd.exe' as-is. If it's not, arguments are not treated +! * correctly for current 'cmd.exe'. So unescape characters in +! * shellxescape except '|' for avoiding to be treated as +! * argument to them. Pass the arguments to sub-shell. + */ +! if (flags != CREATE_NEW_CONSOLE) +! { +! char_u *subcmd; +! char_u *cmd_shell = default_shell(); +! +! subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE); +! if (subcmd != NULL) +! { +! /* make "cmd.exe /c arguments" */ +! cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5; +! vim_free(subcmd); +! +! newcmd = lalloc(cmdlen, TRUE); +! if (newcmd != NULL) +! vim_snprintf((char *)newcmd, cmdlen, "%s /c %s", +! default_shell, subcmd); +! else +! newcmd = cmdbase; +! } +! } + + /* + * Now, start the command as a process, so that it doesn't +*************** +*** 4006,4012 **** + * files if we exit before the spawned process + */ + if (CreateProcess(NULL, // Executable name +! cmdbase, // Command to execute + NULL, // Process security attributes + NULL, // Thread security attributes + FALSE, // Inherit handles +--- 4032,4038 ---- + * files if we exit before the spawned process + */ + if (CreateProcess(NULL, // Executable name +! newcmd, // Command to execute + NULL, // Process security attributes + NULL, // Thread security attributes + FALSE, // Inherit handles +*************** +*** 4023,4028 **** +--- 4049,4058 ---- + EMSG(_("E371: Command not found")); + #endif + } ++ ++ if (newcmd != cmdbase) ++ vim_free(newcmd); ++ + if (si.hStdInput != NULL) + { + /* Close the handle to \\.\NUL */ +*************** +*** 4034,4041 **** + } + else + { +! char_u *newcmd; +! long_u cmdlen = ( + #ifdef FEAT_GUI_W32 + (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) + + #endif +--- 4064,4070 ---- + } + else + { +! cmdlen = ( + #ifdef FEAT_GUI_W32 + (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) + + #endif +*** ../vim-7.3.447/src/version.c 2012-02-21 21:22:40.000000000 +0100 +--- src/version.c 2012-02-22 13:02:15.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 448, + /**/ + +-- +From "know your smileys": + ~#:-( I just washed my hair, and I can't do nuthin' with it. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.449 b/source/ap/vim/patches/7.3.449 new file mode 100644 index 00000000..9b5bdea8 --- /dev/null +++ b/source/ap/vim/patches/7.3.449 @@ -0,0 +1,455 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.449 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.449 +Problem: Crash when a BufWinLeave autocommand closes the only other window. + (Daniel Hunt) +Solution: Abort closing a buffer when it becomes the only one. +Files: src/buffer.c, src/proto/buffer.pro, src/ex_cmds.c, src/ex_getln.c, + src/misc2.c, src/quickfix.c, src/window.c, src/proto/window.pro + + +*** ../vim-7.3.448/src/buffer.c 2012-01-20 20:44:38.000000000 +0100 +--- src/buffer.c 2012-02-22 14:50:42.000000000 +0100 +*************** +*** 64,69 **** +--- 64,72 ---- + static char *msg_loclist = N_("[Location List]"); + static char *msg_qflist = N_("[Quickfix List]"); + #endif ++ #ifdef FEAT_AUTOCMD ++ static char *e_auabort = N_("E855: Autocommands caused command to abort"); ++ #endif + + /* + * Open current buffer, that is: open the memfile and read the file into +*************** +*** 96,102 **** + * There MUST be a memfile, otherwise we can't do anything + * If we can't create one for the current buffer, take another buffer + */ +! close_buffer(NULL, curbuf, 0); + for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next) + if (curbuf->b_ml.ml_mfp != NULL) + break; +--- 99,105 ---- + * There MUST be a memfile, otherwise we can't do anything + * If we can't create one for the current buffer, take another buffer + */ +! close_buffer(NULL, curbuf, 0, FALSE); + for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next) + if (curbuf->b_ml.ml_mfp != NULL) + break; +*************** +*** 316,327 **** + * get a new buffer very soon! + * + * The 'bufhidden' option can force freeing and deleting. + */ + void +! close_buffer(win, buf, action) + win_T *win; /* if not NULL, set b_last_cursor */ + buf_T *buf; + int action; + { + #ifdef FEAT_AUTOCMD + int is_curbuf; +--- 319,335 ---- + * get a new buffer very soon! + * + * The 'bufhidden' option can force freeing and deleting. ++ * ++ * When "abort_if_last" is TRUE then do not close the buffer if autocommands ++ * cause there to be only one window with this buffer. e.g. when ":quit" is ++ * supposed to close the window but autocommands close all other windows. + */ + void +! close_buffer(win, buf, action, abort_if_last) + win_T *win; /* if not NULL, set b_last_cursor */ + buf_T *buf; + int action; ++ int abort_if_last; + { + #ifdef FEAT_AUTOCMD + int is_curbuf; +*************** +*** 371,378 **** + { + apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname, + FALSE, buf); +! if (!buf_valid(buf)) /* autocommands may delete the buffer */ + return; + + /* When the buffer becomes hidden, but is not unloaded, trigger + * BufHidden */ +--- 379,390 ---- + { + apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname, + FALSE, buf); +! /* Return if autocommands deleted the buffer or made it the only one. */ +! if (!buf_valid(buf) || (abort_if_last && one_window())) +! { +! EMSG(_(e_auabort)); + return; ++ } + + /* When the buffer becomes hidden, but is not unloaded, trigger + * BufHidden */ +*************** +*** 380,387 **** + { + apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname, + FALSE, buf); +! if (!buf_valid(buf)) /* autocmds may delete the buffer */ + return; + } + # ifdef FEAT_EVAL + if (aborting()) /* autocmds may abort script processing */ +--- 392,404 ---- + { + apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname, + FALSE, buf); +! /* Return if autocommands deleted the buffer or made it the only +! * one. */ +! if (!buf_valid(buf) || (abort_if_last && one_window())) +! { +! EMSG(_(e_auabort)); + return; ++ } + } + # ifdef FEAT_EVAL + if (aborting()) /* autocmds may abort script processing */ +*************** +*** 775,781 **** + * open a new, empty buffer. */ + swap_exists_action = SEA_NONE; /* don't want it again */ + swap_exists_did_quit = TRUE; +! close_buffer(curwin, curbuf, DOBUF_UNLOAD); + if (!buf_valid(old_curbuf) || old_curbuf == curbuf) + old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED); + if (old_curbuf != NULL) +--- 792,798 ---- + * open a new, empty buffer. */ + swap_exists_action = SEA_NONE; /* don't want it again */ + swap_exists_did_quit = TRUE; +! close_buffer(curwin, curbuf, DOBUF_UNLOAD, FALSE); + if (!buf_valid(old_curbuf) || old_curbuf == curbuf) + old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED); + if (old_curbuf != NULL) +*************** +*** 1122,1128 **** + * if the buffer still exists. + */ + if (buf != curbuf && buf_valid(buf) && buf->b_nwindows == 0) +! close_buffer(NULL, buf, action); + return retval; + } + +--- 1139,1145 ---- + * if the buffer still exists. + */ + if (buf != curbuf && buf_valid(buf) && buf->b_nwindows == 0) +! close_buffer(NULL, buf, action, FALSE); + return retval; + } + +*************** +*** 1146,1152 **** + close_windows(buf, FALSE); + #endif + if (buf != curbuf && buf_valid(buf) && buf->b_nwindows <= 0) +! close_buffer(NULL, buf, action); + return OK; + } + +--- 1163,1169 ---- + close_windows(buf, FALSE); + #endif + if (buf != curbuf && buf_valid(buf) && buf->b_nwindows <= 0) +! close_buffer(NULL, buf, action, FALSE); + return OK; + } + +*************** +*** 1378,1384 **** + close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, + unload ? action : (action == DOBUF_GOTO + && !P_HID(prevbuf) +! && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0); + } + } + #ifdef FEAT_AUTOCMD +--- 1395,1401 ---- + close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, + unload ? action : (action == DOBUF_GOTO + && !P_HID(prevbuf) +! && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); + } + } + #ifdef FEAT_AUTOCMD +*************** +*** 2708,2714 **** + vim_free(ffname); + return FAIL; + } +! close_buffer(NULL, obuf, DOBUF_WIPE); /* delete from the list */ + } + sfname = vim_strsave(sfname); + if (ffname == NULL || sfname == NULL) +--- 2725,2732 ---- + vim_free(ffname); + return FAIL; + } +! /* delete from the list */ +! close_buffer(NULL, obuf, DOBUF_WIPE, FALSE); + } + sfname = vim_strsave(sfname); + if (ffname == NULL || sfname == NULL) +*************** +*** 5638,5644 **** + if (!aucmd) /* Don't trigger BufDelete autocommands here. */ + block_autocmds(); + #endif +! close_buffer(NULL, buf, DOBUF_WIPE); + #ifdef FEAT_AUTOCMD + if (!aucmd) + unblock_autocmds(); +--- 5656,5662 ---- + if (!aucmd) /* Don't trigger BufDelete autocommands here. */ + block_autocmds(); + #endif +! close_buffer(NULL, buf, DOBUF_WIPE, FALSE); + #ifdef FEAT_AUTOCMD + if (!aucmd) + unblock_autocmds(); +*** ../vim-7.3.448/src/proto/buffer.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/buffer.pro 2012-02-22 14:04:26.000000000 +0100 +*************** +*** 1,7 **** + /* buffer.c */ + int open_buffer __ARGS((int read_stdin, exarg_T *eap, int flags)); + int buf_valid __ARGS((buf_T *buf)); +! void close_buffer __ARGS((win_T *win, buf_T *buf, int action)); + void buf_clear_file __ARGS((buf_T *buf)); + void buf_freeall __ARGS((buf_T *buf, int flags)); + void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count)); +--- 1,7 ---- + /* buffer.c */ + int open_buffer __ARGS((int read_stdin, exarg_T *eap, int flags)); + int buf_valid __ARGS((buf_T *buf)); +! void close_buffer __ARGS((win_T *win, buf_T *buf, int action, int abort_if_last)); + void buf_clear_file __ARGS((buf_T *buf)); + void buf_freeall __ARGS((buf_T *buf, int flags)); + void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count)); +*** ../vim-7.3.448/src/ex_cmds.c 2011-12-30 15:01:55.000000000 +0100 +--- src/ex_cmds.c 2012-02-22 14:00:32.000000000 +0100 +*************** +*** 3387,3393 **** + /* close the link to the current buffer */ + u_sync(FALSE); + close_buffer(oldwin, curbuf, +! (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD); + + #ifdef FEAT_AUTOCMD + /* Autocommands may open a new window and leave oldwin open +--- 3387,3393 ---- + /* close the link to the current buffer */ + u_sync(FALSE); + close_buffer(oldwin, curbuf, +! (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD, FALSE); + + #ifdef FEAT_AUTOCMD + /* Autocommands may open a new window and leave oldwin open +*** ../vim-7.3.448/src/ex_getln.c 2012-02-04 22:44:27.000000000 +0100 +--- src/ex_getln.c 2012-02-22 14:01:56.000000000 +0100 +*************** +*** 6443,6449 **** + /* win_close() may have already wiped the buffer when 'bh' is + * set to 'wipe' */ + if (buf_valid(bp)) +! close_buffer(NULL, bp, DOBUF_WIPE); + + /* Restore window sizes. */ + win_size_restore(&winsizes); +--- 6443,6449 ---- + /* win_close() may have already wiped the buffer when 'bh' is + * set to 'wipe' */ + if (buf_valid(bp)) +! close_buffer(NULL, bp, DOBUF_WIPE, FALSE); + + /* Restore window sizes. */ + win_size_restore(&winsizes); +*** ../vim-7.3.448/src/misc2.c 2012-02-20 22:18:22.000000000 +0100 +--- src/misc2.c 2012-02-22 14:02:12.000000000 +0100 +*************** +*** 1173,1179 **** + for (buf = firstbuf; buf != NULL; ) + { + nextbuf = buf->b_next; +! close_buffer(NULL, buf, DOBUF_WIPE); + if (buf_valid(buf)) + buf = nextbuf; /* didn't work, try next one */ + else +--- 1173,1179 ---- + for (buf = firstbuf; buf != NULL; ) + { + nextbuf = buf->b_next; +! close_buffer(NULL, buf, DOBUF_WIPE, FALSE); + if (buf_valid(buf)) + buf = nextbuf; /* didn't work, try next one */ + else +*** ../vim-7.3.448/src/quickfix.c 2012-01-20 13:39:03.000000000 +0100 +--- src/quickfix.c 2012-02-22 14:02:20.000000000 +0100 +*************** +*** 3565,3571 **** + buf_T *buf; + { + if (curbuf != buf) /* safety check */ +! close_buffer(NULL, buf, DOBUF_UNLOAD); + } + + #if defined(FEAT_EVAL) || defined(PROTO) +--- 3565,3571 ---- + buf_T *buf; + { + if (curbuf != buf) /* safety check */ +! close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE); + } + + #if defined(FEAT_EVAL) || defined(PROTO) +*** ../vim-7.3.448/src/window.c 2012-01-10 22:26:12.000000000 +0100 +--- src/window.c 2012-02-22 14:08:13.000000000 +0100 +*************** +*** 23,29 **** + static void win_totop __ARGS((int size, int flags)); + static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height)); + static int last_window __ARGS((void)); +- static int one_window __ARGS((void)); + static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp)); + static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp)); + static tabpage_T *alt_tabpage __ARGS((void)); +--- 23,28 ---- +*************** +*** 2083,2089 **** + * Return TRUE if there is only one window other than "aucmd_win" in the + * current tab page. + */ +! static int + one_window() + { + #ifdef FEAT_AUTOCMD +--- 2082,2088 ---- + * Return TRUE if there is only one window other than "aucmd_win" in the + * current tab page. + */ +! int + one_window() + { + #ifdef FEAT_AUTOCMD +*************** +*** 2109,2115 **** + * Close window "win". Only works for the current tab page. + * If "free_buf" is TRUE related buffer may be unloaded. + * +! * called by :quit, :close, :xit, :wq and findtag() + */ + void + win_close(win, free_buf) +--- 2108,2114 ---- + * Close window "win". Only works for the current tab page. + * If "free_buf" is TRUE related buffer may be unloaded. + * +! * Called by :quit, :close, :xit, :wq and findtag(). + */ + void + win_close(win, free_buf) +*************** +*** 2222,2228 **** + * Close the link to the buffer. + */ + if (win->w_buffer != NULL) +! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0); + + /* Autocommands may have closed the window already, or closed the only + * other window or moved to another tab page. */ +--- 2221,2227 ---- + * Close the link to the buffer. + */ + if (win->w_buffer != NULL) +! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, TRUE); + + /* Autocommands may have closed the window already, or closed the only + * other window or moved to another tab page. */ +*************** +*** 2328,2334 **** + int free_tp = FALSE; + + /* Close the link to the buffer. */ +! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0); + + /* Careful: Autocommands may have closed the tab page or made it the + * current tab page. */ +--- 2327,2333 ---- + int free_tp = FALSE; + + /* Close the link to the buffer. */ +! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE); + + /* Careful: Autocommands may have closed the tab page or made it the + * current tab page. */ +*** ../vim-7.3.448/src/proto/window.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/window.pro 2012-02-22 14:08:28.000000000 +0100 +*************** +*** 1,13 **** + /* window.c */ + void do_window __ARGS((int nchar, long Prenum, int xchar)); + int win_split __ARGS((int size, int flags)); +! int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir)); + int win_valid __ARGS((win_T *win)); + int win_count __ARGS((void)); + int make_windows __ARGS((int count, int vertical)); + void win_move_after __ARGS((win_T *win1, win_T *win2)); + void win_equal __ARGS((win_T *next_curwin, int current, int dir)); + void close_windows __ARGS((buf_T *buf, int keep_curwin)); + void win_close __ARGS((win_T *win, int free_buf)); + void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp)); + void win_free_all __ARGS((void)); +--- 1,14 ---- + /* window.c */ + void do_window __ARGS((int nchar, long Prenum, int xchar)); + int win_split __ARGS((int size, int flags)); +! int win_split_ins __ARGS((int size, int flags, win_T *new_wp, int dir)); + int win_valid __ARGS((win_T *win)); + int win_count __ARGS((void)); + int make_windows __ARGS((int count, int vertical)); + void win_move_after __ARGS((win_T *win1, win_T *win2)); + void win_equal __ARGS((win_T *next_curwin, int current, int dir)); + void close_windows __ARGS((buf_T *buf, int keep_curwin)); ++ int one_window __ARGS((void)); + void win_close __ARGS((win_T *win, int free_buf)); + void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp)); + void win_free_all __ARGS((void)); +*** ../vim-7.3.448/src/version.c 2012-02-22 13:07:02.000000000 +0100 +--- src/version.c 2012-02-22 14:55:21.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 449, + /**/ + +-- +From "know your smileys": + :-)-O Smiling doctor with stethoscope + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.450 b/source/ap/vim/patches/7.3.450 new file mode 100644 index 00000000..7112668f --- /dev/null +++ b/source/ap/vim/patches/7.3.450 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.450 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.450 (after 7.3.448) +Problem: Win32: Still a problem with "!start /b". +Solution: Fix pointer use. (Yasuhiro Matsumoto) +Files: src/os_win32.c + + +*** ../vim-7.3.449/src/os_win32.c 2012-02-22 13:07:02.000000000 +0100 +--- src/os_win32.c 2012-02-22 15:29:56.000000000 +0100 +*************** +*** 4008,4028 **** + if (flags != CREATE_NEW_CONSOLE) + { + char_u *subcmd; +! char_u *cmd_shell = default_shell(); + + subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE); + if (subcmd != NULL) + { + /* make "cmd.exe /c arguments" */ + cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5; +- vim_free(subcmd); +- + newcmd = lalloc(cmdlen, TRUE); + if (newcmd != NULL) + vim_snprintf((char *)newcmd, cmdlen, "%s /c %s", +! default_shell, subcmd); + else + newcmd = cmdbase; + } + } + +--- 4008,4030 ---- + if (flags != CREATE_NEW_CONSOLE) + { + char_u *subcmd; +! char_u *cmd_shell = mch_getenv("COMSPEC"); +! +! if (cmd_shell == NULL || *cmd_shell == NUL) +! cmd_shell = default_shell(); + + subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE); + if (subcmd != NULL) + { + /* make "cmd.exe /c arguments" */ + cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5; + newcmd = lalloc(cmdlen, TRUE); + if (newcmd != NULL) + vim_snprintf((char *)newcmd, cmdlen, "%s /c %s", +! cmd_shell, subcmd); + else + newcmd = cmdbase; ++ vim_free(subcmd); + } + } + +*** ../vim-7.3.449/src/version.c 2012-02-22 14:58:24.000000000 +0100 +--- src/version.c 2012-02-22 15:33:53.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 450, + /**/ + +-- +You are only young once, but you can stay immature indefinitely. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.451 b/source/ap/vim/patches/7.3.451 new file mode 100644 index 00000000..25d1b046 --- /dev/null +++ b/source/ap/vim/patches/7.3.451 @@ -0,0 +1,363 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.451 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.451 +Problem: Tcl doesn't work on 64 bit MS-Windows. +Solution: Make it work. (Dave Bodenstab) +Files: src/Make_mvc.mak, src/if_tcl.c + + +*** ../vim-7.3.450/src/Make_mvc.mak 2012-02-12 01:55:50.000000000 +0100 +--- src/Make_mvc.mak 2012-02-22 15:43:01.000000000 +0100 +*************** +*** 616,622 **** + -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\" + TCL_OBJ = $(OUTDIR)\if_tcl.obj + TCL_INC = /I "$(TCL)\Include" /I "$(TCL)" +! TCL_LIB = $(TCL)\lib\tclstub$(TCL_VER).lib + !else + CFLAGS = $(CFLAGS) -DFEAT_TCL + TCL_OBJ = $(OUTDIR)\if_tcl.obj +--- 616,622 ---- + -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\" + TCL_OBJ = $(OUTDIR)\if_tcl.obj + TCL_INC = /I "$(TCL)\Include" /I "$(TCL)" +! TCL_LIB = "$(TCL)\lib\tclstub$(TCL_VER).lib" + !else + CFLAGS = $(CFLAGS) -DFEAT_TCL + TCL_OBJ = $(OUTDIR)\if_tcl.obj +*** ../vim-7.3.450/src/if_tcl.c 2011-07-27 14:15:41.000000000 +0200 +--- src/if_tcl.c 2012-02-22 15:47:00.000000000 +0100 +*************** +*** 79,90 **** + typedef struct + { + Tcl_Interp *interp; + int range_start, range_end; + int lbase; + char *curbuf, *curwin; + } tcl_info; + +! static tcl_info tclinfo = { NULL, 0, 0, 0, NULL, NULL }; + + #define VAR_RANGE1 "::vim::range(start)" + #define VAR_RANGE2 "::vim::range(begin)" +--- 79,91 ---- + typedef struct + { + Tcl_Interp *interp; ++ int exitvalue; + int range_start, range_end; + int lbase; + char *curbuf, *curwin; + } tcl_info; + +! static tcl_info tclinfo = { NULL, 0, 0, 0, 0, NULL, NULL }; + + #define VAR_RANGE1 "::vim::range(start)" + #define VAR_RANGE2 "::vim::range(begin)" +*************** +*** 279,294 **** + ****************************************************************************/ + + /* +! * Replace standard "exit" and "catch" commands. + * +! * This is a design flaw in Tcl - the standard "exit" command just calls +! * exit() and kills the application. It should return TCL_EXIT to the +! * app, which then decides if it wants to terminate or not. In our case, +! * we just delete the Tcl interpreter (and create a new one with the next +! * :tcl command). + */ +- #define TCL_EXIT 5 +- + static int + exitcmd(dummy, interp, objc, objv) + ClientData dummy UNUSED; +--- 280,298 ---- + ****************************************************************************/ + + /* +! * Replace standard "exit" command. + * +! * Delete the Tcl interpreter; a new one will be created with the next +! * :tcl command). The exit code is saved (and retrieved in tclexit()). +! * Since Tcl's exit is never expected to return and this replacement +! * does, then (except for a trivial case) additional Tcl commands will +! * be run. Since the interpreter is now marked as deleted, an error +! * will be returned -- typically "attempt to call eval in deleted +! * interpreter". Hopefully, at this point, checks for TCL_ERROR take +! * place and control percolates back up to Vim -- but with this new error +! * string in the interpreter's result value. Therefore it would be +! * useless for this routine to return the exit code via Tcl_SetResult(). + */ + static int + exitcmd(dummy, interp, objc, objv) + ClientData dummy UNUSED; +*************** +*** 305,351 **** + break; + /* FALLTHROUGH */ + case 1: +! Tcl_SetObjResult(interp, Tcl_NewIntObj(value)); +! return TCL_EXIT; +! default: +! Tcl_WrongNumArgs(interp, 1, objv, "?returnCode?"); +! } +! return TCL_ERROR; +! } + +! static int +! catchcmd(dummy, interp, objc, objv) +! ClientData dummy UNUSED; +! Tcl_Interp *interp; +! int objc; +! Tcl_Obj *CONST objv[]; +! { +! char *varname = NULL; +! int result; +! +! switch (objc) +! { +! case 3: +! varname = Tcl_GetStringFromObj(objv[2], NULL); +! /* fallthrough */ +! case 2: +! Tcl_ResetResult(interp); +! Tcl_AllowExceptions(interp); +! result = Tcl_EvalObj(interp, objv[1]); +! if (result == TCL_EXIT) +! return result; +! if (varname) +! { +! if (Tcl_SetVar(interp, varname, Tcl_GetStringResult(interp), 0) == NULL) +! { +! Tcl_SetResult(interp, "couldn't save command result in variable", TCL_STATIC); +! return TCL_ERROR; +! } +! } +! Tcl_SetObjResult(interp, Tcl_NewIntObj(result)); +! return TCL_OK; + default: +! Tcl_WrongNumArgs(interp, 1, objv, "command ?varName?"); + } + return TCL_ERROR; + } +--- 309,320 ---- + break; + /* FALLTHROUGH */ + case 1: +! tclinfo.exitvalue = value; + +! Tcl_DeleteInterp(interp); +! break; + default: +! Tcl_WrongNumArgs(interp, 1, objv, "?returnCode?"); + } + return TCL_ERROR; + } +*************** +*** 372,377 **** +--- 341,347 ---- + /* + * "::vim::buffer list" - create a list of buffer commands. + * "::vim::buffer {N}" - create buffer command for buffer N. ++ * "::vim::buffer exists {N}" - test if buffer N exists. + * "::vim::buffer new" - create a new buffer (not implemented) + */ + static int +*************** +*** 1663,1669 **** + static Tcl_ChannelType channel_type = + { + "vimmessage", /* typeName */ +! NULL, /* version */ + channel_close, /* closeProc */ + channel_input, /* inputProc */ + channel_output, /* outputProc */ +--- 1633,1639 ---- + static Tcl_ChannelType channel_type = + { + "vimmessage", /* typeName */ +! TCL_CHANNEL_VERSION_2, /* version */ + channel_close, /* closeProc */ + channel_input, /* inputProc */ + channel_output, /* outputProc */ +*************** +*** 1678,1683 **** +--- 1648,1655 ---- + NULL, /* flushProc */ + NULL, /* handlerProc */ + #endif ++ /* The following should not be necessary since TCL_CHANNEL_VERSION_2 was ++ * set above */ + #ifdef TCL_CHANNEL_VERSION_3 + NULL, /* wideSeekProc */ + #endif +*************** +*** 1741,1747 **** + Tcl_Interp *interp; + static Tcl_Channel ch1, ch2; + +! /* replace stdout and stderr */ + ch1 = Tcl_CreateChannel(&channel_type, "vimout", VIMOUT, TCL_WRITABLE); + ch2 = Tcl_CreateChannel(&channel_type, "vimerr", VIMERR, TCL_WRITABLE); + Tcl_SetStdChannel(ch1, TCL_STDOUT); +--- 1713,1721 ---- + Tcl_Interp *interp; + static Tcl_Channel ch1, ch2; + +! /* Create replacement channels for stdout and stderr; this has to be +! * done each time an interpreter is created since the channels are closed +! * when the interpreter is deleted */ + ch1 = Tcl_CreateChannel(&channel_type, "vimout", VIMOUT, TCL_WRITABLE); + ch2 = Tcl_CreateChannel(&channel_type, "vimerr", VIMERR, TCL_WRITABLE); + Tcl_SetStdChannel(ch1, TCL_STDOUT); +*************** +*** 1761,1775 **** + #endif + + Tcl_SetChannelOption(interp, ch1, "-buffering", "line"); + Tcl_SetChannelOption(interp, ch2, "-buffering", "line"); + +! /* replace some standard Tcl commands */ + Tcl_DeleteCommand(interp, "exit"); + Tcl_CreateObjCommand(interp, "exit", exitcmd, + (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL); +- Tcl_DeleteCommand(interp, "catch"); +- Tcl_CreateObjCommand(interp, "catch", catchcmd, +- (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL); + + /* new commands, in ::vim namespace */ + Tcl_CreateObjCommand(interp, "::vim::buffer", buffercmd, +--- 1735,1752 ---- + #endif + + Tcl_SetChannelOption(interp, ch1, "-buffering", "line"); ++ #ifdef WIN3264 ++ Tcl_SetChannelOption(interp, ch1, "-translation", "lf"); ++ #endif + Tcl_SetChannelOption(interp, ch2, "-buffering", "line"); ++ #ifdef WIN3264 ++ Tcl_SetChannelOption(interp, ch2, "-translation", "lf"); ++ #endif + +! /* replace standard Tcl exit command */ + Tcl_DeleteCommand(interp, "exit"); + Tcl_CreateObjCommand(interp, "exit", exitcmd, + (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL); + + /* new commands, in ::vim namespace */ + Tcl_CreateObjCommand(interp, "::vim::buffer", buffercmd, +*************** +*** 1821,1826 **** +--- 1798,1805 ---- + tclinfo.range_end = row2tcl(eap->line2); + tclupdatevars(); + } ++ ++ tclinfo.exitvalue = 0; + return OK; + } + +*************** +*** 1884,1913 **** + { + int newerr = OK; + +! if (error == TCL_EXIT) + { +- int retval; + char buf[50]; +- Tcl_Obj *robj; + +! robj = Tcl_GetObjResult(tclinfo.interp); +! if (Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK) + { +! EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org")); +! newerr = FAIL; + } + else +! { +! sprintf(buf, _("E572: exit code %d"), retval); +! tclerrmsg(buf); +! if (retval == 0) +! { +! did_emsg = 0; +! newerr = OK; +! } +! else +! newerr = FAIL; +! } + + tcldelthisinterp(); + } +--- 1863,1885 ---- + { + int newerr = OK; + +! if (Tcl_InterpDeleted(tclinfo.interp) /* True if we intercepted Tcl's exit command */ +! #if (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5) || TCL_MAJOR_VERSION > 8 +! || Tcl_LimitExceeded(tclinfo.interp) /* True if the interpreter cannot continue */ +! #endif +! ) + { + char buf[50]; + +! sprintf(buf, _("E572: exit code %d"), tclinfo.exitvalue); +! tclerrmsg(buf); +! if (tclinfo.exitvalue == 0) + { +! did_emsg = 0; +! newerr = OK; + } + else +! newerr = FAIL; + + tcldelthisinterp(); + } +*************** +*** 2021,2027 **** + Tcl_SetVar(tclinfo.interp, var_line, line, 0); + Tcl_AllowExceptions(tclinfo.interp); + err = Tcl_Eval(tclinfo.interp, script); +! if (err != TCL_OK) + break; + line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0); + if (line) +--- 1993,2004 ---- + Tcl_SetVar(tclinfo.interp, var_line, line, 0); + Tcl_AllowExceptions(tclinfo.interp); + err = Tcl_Eval(tclinfo.interp, script); +! if (err != TCL_OK +! || Tcl_InterpDeleted(tclinfo.interp) +! #if (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5) || TCL_MAJOR_VERSION > 8 +! || Tcl_LimitExceeded(tclinfo.interp) +! #endif +! ) + break; + line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0); + if (line) +*** ../vim-7.3.450/src/version.c 2012-02-22 15:34:05.000000000 +0100 +--- src/version.c 2012-02-22 16:00:49.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 451, + /**/ + +-- +Where do you want to crash today? + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.452 b/source/ap/vim/patches/7.3.452 new file mode 100644 index 00000000..295b2fe8 --- /dev/null +++ b/source/ap/vim/patches/7.3.452 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.452 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.452 +Problem: Undo broken when pasting close to the last line. (Andrey Radev) +Solution: Use a flag to remember if the deleted included the last line. + (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.3.451/src/ops.c 2012-01-10 13:46:18.000000000 +0100 +--- src/ops.c 2012-02-22 17:32:40.000000000 +0100 +*************** +*** 1943,1954 **** +--- 1943,1956 ---- + else /* delete characters between lines */ + { + pos_T curpos; ++ int delete_last_line; + + /* save deleted and changed lines for undo */ + if (u_save((linenr_T)(curwin->w_cursor.lnum - 1), + (linenr_T)(curwin->w_cursor.lnum + oap->line_count)) == FAIL) + return FAIL; + ++ delete_last_line = (oap->end.lnum == curbuf->b_ml.ml_line_count); + truncate_line(TRUE); /* delete from cursor to end of line */ + + curpos = curwin->w_cursor; /* remember curwin->w_cursor */ +*************** +*** 1956,1962 **** + del_lines((long)(oap->line_count - 2), FALSE); + + n = (oap->end.col + 1 - !oap->inclusive); +! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count + && n > (int)STRLEN(ml_get(oap->end.lnum))) + { + /* Special case: gH<Del> deletes the last line. */ +--- 1958,1964 ---- + del_lines((long)(oap->line_count - 2), FALSE); + + n = (oap->end.col + 1 - !oap->inclusive); +! if (oap->inclusive && delete_last_line + && n > (int)STRLEN(ml_get(oap->end.lnum))) + { + /* Special case: gH<Del> deletes the last line. */ +*** ../vim-7.3.451/src/version.c 2012-02-22 16:01:53.000000000 +0100 +--- src/version.c 2012-02-22 17:37:18.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 452, + /**/ + +-- +From "know your smileys": + =):-) Uncle Sam + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.453 b/source/ap/vim/patches/7.3.453 new file mode 100644 index 00000000..cf0f0e71 --- /dev/null +++ b/source/ap/vim/patches/7.3.453 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.453 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.453 +Problem: Pasting in the command line is slow. +Solution: Don't redraw if there is another character to read. (Dominique + Pelle) +Files: src/ex_getln.c + + +*** ../vim-7.3.452/src/ex_getln.c 2012-02-22 14:58:24.000000000 +0100 +--- src/ex_getln.c 2012-02-22 17:53:32.000000000 +0100 +*************** +*** 1852,1859 **** + # endif + ) + /* Always redraw the whole command line to fix shaping and +! * right-left typing. Not efficient, but it works. */ +! redrawcmd(); + #endif + } + +--- 1852,1862 ---- + # endif + ) + /* Always redraw the whole command line to fix shaping and +! * right-left typing. Not efficient, but it works. +! * Do it only when there are no characters left to read +! * to avoid useless intermediate redraws. */ +! if (vpeekc() == NUL) +! redrawcmd(); + #endif + } + +*** ../vim-7.3.452/src/version.c 2012-02-22 17:37:55.000000000 +0100 +--- src/version.c 2012-02-22 17:56:59.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 453, + /**/ + +-- +From "know your smileys": + <<<:-{ Worf (Never smiles anyways, so he's a bad smiley) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.454 b/source/ap/vim/patches/7.3.454 new file mode 100644 index 00000000..8658926a --- /dev/null +++ b/source/ap/vim/patches/7.3.454 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.454 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.454 +Problem: Re-allocating memory slows Vim down. +Solution: Use realloc() in ga_grow(). (Dominique Pelle) +Files: src/misc2.c + + +*** ../vim-7.3.453/src/misc2.c 2012-02-22 14:58:24.000000000 +0100 +--- src/misc2.c 2012-02-22 18:07:45.000000000 +0100 +*************** +*** 2064,2087 **** + garray_T *gap; + int n; + { +! size_t len; + char_u *pp; + + if (gap->ga_maxlen - gap->ga_len < n) + { + if (n < gap->ga_growsize) + n = gap->ga_growsize; +! len = gap->ga_itemsize * (gap->ga_len + n); +! pp = alloc_clear((unsigned)len); + if (pp == NULL) + return FAIL; + gap->ga_maxlen = gap->ga_len + n; +- if (gap->ga_data != NULL) +- { +- mch_memmove(pp, gap->ga_data, +- (size_t)(gap->ga_itemsize * gap->ga_len)); +- vim_free(gap->ga_data); +- } + gap->ga_data = pp; + } + return OK; +--- 2064,2085 ---- + garray_T *gap; + int n; + { +! size_t old_len; +! size_t new_len; + char_u *pp; + + if (gap->ga_maxlen - gap->ga_len < n) + { + if (n < gap->ga_growsize) + n = gap->ga_growsize; +! new_len = gap->ga_itemsize * (gap->ga_len + n); +! pp = (gap->ga_data == NULL) +! ? alloc(new_len) : vim_realloc(gap->ga_data, new_len); + if (pp == NULL) + return FAIL; ++ old_len = gap->ga_itemsize * gap->ga_maxlen; ++ vim_memset(pp + old_len, 0, new_len - old_len); + gap->ga_maxlen = gap->ga_len + n; + gap->ga_data = pp; + } + return OK; +*** ../vim-7.3.453/src/version.c 2012-02-22 17:58:00.000000000 +0100 +--- src/version.c 2012-02-22 18:09:42.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 454, + /**/ + +-- +From "know your smileys": + (X0||) Double hamburger with lettuce and tomato + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.455 b/source/ap/vim/patches/7.3.455 new file mode 100644 index 00000000..217b00d7 --- /dev/null +++ b/source/ap/vim/patches/7.3.455 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.455 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.455 +Problem: Using many continuation lines can be slow. +Solution: Adjust the reallocation size to the current length. +Files: src/ex_cmds2.c + + +*** ../vim-7.3.454/src/ex_cmds2.c 2012-02-11 20:40:49.000000000 +0100 +--- src/ex_cmds2.c 2012-02-22 18:24:11.000000000 +0100 +*************** +*** 3448,3454 **** + { + garray_T ga; + +! ga_init2(&ga, (int)sizeof(char_u), 200); + ga_concat(&ga, line); + ga_concat(&ga, p + 1); + for (;;) +--- 3448,3454 ---- + { + garray_T ga; + +! ga_init2(&ga, (int)sizeof(char_u), 400); + ga_concat(&ga, line); + ga_concat(&ga, p + 1); + for (;;) +*************** +*** 3460,3465 **** +--- 3460,3474 ---- + p = skipwhite(sp->nextline); + if (*p != '\\') + break; ++ /* Adjust the growsize to the current length to speed up ++ * concatenating many lines. */ ++ if (ga.ga_len > 400) ++ { ++ if (ga.ga_len > 8000) ++ ga.ga_growsize = 8000; ++ else ++ ga.ga_growsize = ga.ga_len; ++ } + ga_concat(&ga, p + 1); + } + ga_append(&ga, NUL); +*** ../vim-7.3.454/src/version.c 2012-02-22 18:12:29.000000000 +0100 +--- src/version.c 2012-02-22 18:24:58.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 455, + /**/ + +-- +From "know your smileys": + :-X My lips are sealed + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.456 b/source/ap/vim/patches/7.3.456 new file mode 100644 index 00000000..26fc2a98 --- /dev/null +++ b/source/ap/vim/patches/7.3.456 @@ -0,0 +1,376 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.456 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.456 +Problem: ":tab drop file" has several problems, including moving the + current window and opening a new tab for a file that already has a + window. +Solution: Refactor ":tab drop" handling. (Hirohito Higashi) +Files: src/buffer.c, src/testdir/test62.in, src/testdir/test62.ok + + +*** ../vim-7.3.455/src/buffer.c 2012-02-22 14:58:24.000000000 +0100 +--- src/buffer.c 2012-02-22 19:08:34.000000000 +0100 +*************** +*** 4405,4411 **** + { + int i; + win_T *wp, *wpnext; +! char_u *opened; /* array of flags for which args are open */ + int opened_len; /* length of opened[] */ + int use_firstwin = FALSE; /* use first window for arglist */ + int split_ret = OK; +--- 4405,4416 ---- + { + int i; + win_T *wp, *wpnext; +! char_u *opened; /* Array of weight for which args are open: +! * 0: not opened +! * 1: opened in other tab +! * 2: opened in curtab +! * 3: opened in curtab and curwin +! */ + int opened_len; /* length of opened[] */ + int use_firstwin = FALSE; /* use first window for arglist */ + int split_ret = OK; +*************** +*** 4414,4419 **** +--- 4419,4426 ---- + buf_T *buf; + tabpage_T *tpnext; + int had_tab = cmdmod.tab; ++ win_T *old_curwin, *last_curwin; ++ tabpage_T *old_curtab, *last_curtab; + win_T *new_curwin = NULL; + tabpage_T *new_curtab = NULL; + +*************** +*** 4430,4435 **** +--- 4437,4451 ---- + if (opened == NULL) + return; + ++ /* Autocommands may do anything to the argument list. Make sure it's not ++ * freed while we are working here by "locking" it. We still have to ++ * watch out for its size to be changed. */ ++ alist = curwin->w_alist; ++ ++alist->al_refcount; ++ ++ old_curwin = curwin; ++ old_curtab = curtab; ++ + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +*************** +*** 4451,4486 **** + wpnext = wp->w_next; + buf = wp->w_buffer; + if (buf->b_ffname == NULL +! || buf->b_nwindows > 1 + #ifdef FEAT_VERTSPLIT + || wp->w_width != Columns + #endif + ) +! i = ARGCOUNT; + else + { + /* check if the buffer in this window is in the arglist */ +! for (i = 0; i < ARGCOUNT; ++i) + { +! if (ARGLIST[i].ae_fnum == buf->b_fnum +! || fullpathcmp(alist_name(&ARGLIST[i]), +! buf->b_ffname, TRUE) & FPC_SAME) + { +! if (i < opened_len) + { +! opened[i] = TRUE; + if (i == 0) + { + new_curwin = wp; + new_curtab = curtab; + } + } +! if (wp->w_alist != curwin->w_alist) + { + /* Use the current argument list for all windows + * containing a file from it. */ + alist_unlink(wp->w_alist); +! wp->w_alist = curwin->w_alist; + ++wp->w_alist->al_refcount; + } + break; +--- 4467,4517 ---- + wpnext = wp->w_next; + buf = wp->w_buffer; + if (buf->b_ffname == NULL +! || (!keep_tabs && buf->b_nwindows > 1) + #ifdef FEAT_VERTSPLIT + || wp->w_width != Columns + #endif + ) +! i = opened_len; + else + { + /* check if the buffer in this window is in the arglist */ +! for (i = 0; i < opened_len; ++i) + { +! if (i < alist->al_ga.ga_len +! && (AARGLIST(alist)[i].ae_fnum == buf->b_fnum +! || fullpathcmp(alist_name(&AARGLIST(alist)[i]), +! buf->b_ffname, TRUE) & FPC_SAME)) + { +! int weight = 1; +! +! if (old_curtab == curtab) +! { +! ++weight; +! if (old_curwin == wp) +! ++weight; +! } +! +! if (weight > (int)opened[i]) + { +! opened[i] = (char_u)weight; + if (i == 0) + { ++ if (new_curwin != NULL) ++ new_curwin->w_arg_idx = opened_len; + new_curwin = wp; + new_curtab = curtab; + } + } +! else if (keep_tabs) +! i = opened_len; +! +! if (wp->w_alist != alist) + { + /* Use the current argument list for all windows + * containing a file from it. */ + alist_unlink(wp->w_alist); +! wp->w_alist = alist; + ++wp->w_alist->al_refcount; + } + break; +*************** +*** 4489,4495 **** + } + wp->w_arg_idx = i; + +! if (i == ARGCOUNT && !keep_tabs) /* close this window */ + { + if (P_HID(buf) || forceit || buf->b_nwindows > 1 + || !bufIsChanged(buf)) +--- 4520,4526 ---- + } + wp->w_arg_idx = i; + +! if (i == opened_len && !keep_tabs)/* close this window */ + { + if (P_HID(buf) || forceit || buf->b_nwindows > 1 + || !bufIsChanged(buf)) +*************** +*** 4511,4517 **** + } + #ifdef FEAT_WINDOWS + /* don't close last window */ +! if (firstwin == lastwin && first_tabpage->tp_next == NULL) + #endif + use_firstwin = TRUE; + #ifdef FEAT_WINDOWS +--- 4542,4549 ---- + } + #ifdef FEAT_WINDOWS + /* don't close last window */ +! if (firstwin == lastwin +! && (first_tabpage->tp_next == NULL || !had_tab)) + #endif + use_firstwin = TRUE; + #ifdef FEAT_WINDOWS +*************** +*** 4545,4564 **** + * Open a window for files in the argument list that don't have one. + * ARGCOUNT may change while doing this, because of autocommands. + */ +! if (count > ARGCOUNT || count <= 0) +! count = ARGCOUNT; +! +! /* Autocommands may do anything to the argument list. Make sure it's not +! * freed while we are working here by "locking" it. We still have to +! * watch out for its size to be changed. */ +! alist = curwin->w_alist; +! ++alist->al_refcount; + + #ifdef FEAT_AUTOCMD + /* Don't execute Win/Buf Enter/Leave autocommands here. */ + ++autocmd_no_enter; + ++autocmd_no_leave; + #endif + win_enter(lastwin, FALSE); + #ifdef FEAT_WINDOWS + /* ":drop all" should re-use an empty window to avoid "--remote-tab" +--- 4577,4592 ---- + * Open a window for files in the argument list that don't have one. + * ARGCOUNT may change while doing this, because of autocommands. + */ +! if (count > opened_len || count <= 0) +! count = opened_len; + + #ifdef FEAT_AUTOCMD + /* Don't execute Win/Buf Enter/Leave autocommands here. */ + ++autocmd_no_enter; + ++autocmd_no_leave; + #endif ++ last_curwin = curwin; ++ last_curtab = curtab; + win_enter(lastwin, FALSE); + #ifdef FEAT_WINDOWS + /* ":drop all" should re-use an empty window to avoid "--remote-tab" +*************** +*** 4568,4578 **** + use_firstwin = TRUE; + #endif + +! for (i = 0; i < count && i < alist->al_ga.ga_len && !got_int; ++i) + { + if (alist == &global_alist && i == global_alist.al_ga.ga_len - 1) + arg_had_last = TRUE; +! if (i < opened_len && opened[i]) + { + /* Move the already present window to below the current window */ + if (curwin->w_arg_idx != i) +--- 4596,4606 ---- + use_firstwin = TRUE; + #endif + +! for (i = 0; i < count && i < opened_len && !got_int; ++i) + { + if (alist == &global_alist && i == global_alist.al_ga.ga_len - 1) + arg_had_last = TRUE; +! if (opened[i] > 0) + { + /* Move the already present window to below the current window */ + if (curwin->w_arg_idx != i) +*************** +*** 4581,4587 **** + { + if (wpnext->w_arg_idx == i) + { +! win_move_after(wpnext, curwin); + break; + } + } +--- 4609,4621 ---- + { + if (wpnext->w_arg_idx == i) + { +! if (keep_tabs) +! { +! new_curwin = wpnext; +! new_curtab = curtab; +! } +! else +! win_move_after(wpnext, curwin); + break; + } + } +*************** +*** 4636,4641 **** +--- 4670,4683 ---- + #ifdef FEAT_AUTOCMD + --autocmd_no_enter; + #endif ++ /* restore last referenced tabpage's curwin */ ++ if (last_curtab != new_curtab) ++ { ++ if (valid_tabpage(last_curtab)) ++ goto_tabpage_tp(last_curtab); ++ if (win_valid(last_curwin)) ++ win_enter(last_curwin, FALSE); ++ } + /* to window with first arg */ + if (valid_tabpage(new_curtab)) + goto_tabpage_tp(new_curtab); +*** ../vim-7.3.455/src/testdir/test62.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test62.in 2012-02-22 18:45:10.000000000 +0100 +*************** +*** 50,55 **** +--- 50,92 ---- + :call append(line('$'), test_status) + :" + :" ++ :" Test for ":tab drop exist-file" to keep current window. ++ :sp test1 ++ :tab drop test1 ++ :let test_status = 'tab drop 1: fail' ++ :if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1 ++ : let test_status = 'tab drop 1: pass' ++ :endif ++ :close ++ :call append(line('$'), test_status) ++ :" ++ :" ++ :" Test for ":tab drop new-file" to keep current window of tabpage 1. ++ :split ++ :tab drop newfile ++ :let test_status = 'tab drop 2: fail' ++ :if tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1 ++ : let test_status = 'tab drop 2: pass' ++ :endif ++ :tabclose ++ :q ++ :call append(line('$'), test_status) ++ :" ++ :" ++ :" Test for ":tab drop multi-opend-file" to keep current tabpage and window. ++ :new test1 ++ :tabnew ++ :new test1 ++ :tab drop test1 ++ :let test_status = 'tab drop 3: fail' ++ :if tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1 ++ : let test_status = 'tab drop 3: pass' ++ :endif ++ :tabclose ++ :q ++ :call append(line('$'), test_status) ++ :" ++ :" + :/^Results/,$w! test.out + :qa! + ENDTEST +*** ../vim-7.3.455/src/testdir/test62.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test62.ok 2012-02-22 18:45:10.000000000 +0100 +*************** +*** 5,7 **** +--- 5,10 ---- + this is tab page 4 + gettabvar: pass + settabvar: pass ++ tab drop 1: pass ++ tab drop 2: pass ++ tab drop 3: pass +*** ../vim-7.3.455/src/version.c 2012-02-22 18:29:29.000000000 +0100 +--- src/version.c 2012-02-22 19:11:52.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 456, + /**/ + +-- +% cat /usr/include/life.h +void life(void); + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.457 b/source/ap/vim/patches/7.3.457 new file mode 100644 index 00000000..e60d6242 --- /dev/null +++ b/source/ap/vim/patches/7.3.457 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.457 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.457 +Problem: When setting $VIMRUNTIME later the directory for fetching + translated messages is not adjusted. +Solution: Put bindtextdomain() in vim_setenv(). +Files: src/misc1.c + + +*** ../vim-7.3.456/src/misc1.c 2012-02-05 22:05:44.000000000 +0100 +--- src/misc1.c 2012-02-26 13:27:28.000000000 +0100 +*************** +*** 4133,4149 **** + { + vim_setenv((char_u *)"VIMRUNTIME", p); + didset_vimruntime = TRUE; +- #ifdef FEAT_GETTEXT +- { +- char_u *buf = concat_str(p, (char_u *)"/lang"); +- +- if (buf != NULL) +- { +- bindtextdomain(VIMPACKAGE, (char *)buf); +- vim_free(buf); +- } +- } +- #endif + } + else + { +--- 4133,4138 ---- +*************** +*** 4221,4226 **** +--- 4210,4231 ---- + putenv((char *)envbuf); + } + #endif ++ #ifdef FEAT_GETTEXT ++ /* ++ * When setting $VIMRUNTIME adjust the directory to find message ++ * translations to $VIMRUNTIME/lang. ++ */ ++ if (*val != NUL && STRICMP(name, "VIMRUNTIME") == 0) ++ { ++ char_u *buf = concat_str(val, (char_u *)"/lang"); ++ ++ if (buf != NULL) ++ { ++ bindtextdomain(VIMPACKAGE, (char *)buf); ++ vim_free(buf); ++ } ++ } ++ #endif + } + + #if defined(FEAT_CMDL_COMPL) || defined(PROTO) +*** ../vim-7.3.456/src/version.c 2012-02-22 19:13:00.000000000 +0100 +--- src/version.c 2012-02-29 13:47:09.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 457, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +118. You are on a first-name basis with your ISP's staff. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.458 b/source/ap/vim/patches/7.3.458 new file mode 100644 index 00000000..9bd44073 --- /dev/null +++ b/source/ap/vim/patches/7.3.458 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.458 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.458 +Problem: Crash when calling smsg() during startup. +Solution: Don't use 'shortmess' when it is not set yet. +Files: src/option.c + + +*** ../vim-7.3.457/src/option.c 2012-02-20 22:18:22.000000000 +0100 +--- src/option.c 2012-02-26 13:14:48.000000000 +0100 +*************** +*** 10984,10990 **** + shortmess(x) + int x; + { +! return ( vim_strchr(p_shm, x) != NULL + || (vim_strchr(p_shm, 'a') != NULL + && vim_strchr((char_u *)SHM_A, x) != NULL)); + } +--- 10984,10991 ---- + shortmess(x) + int x; + { +! return p_shm != NULL && +! ( vim_strchr(p_shm, x) != NULL + || (vim_strchr(p_shm, 'a') != NULL + && vim_strchr((char_u *)SHM_A, x) != NULL)); + } +*** ../vim-7.3.457/src/version.c 2012-02-29 13:49:03.000000000 +0100 +--- src/version.c 2012-02-29 13:50:52.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 458, + /**/ + +-- +Support your right to bare arms! Wear short sleeves! + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.459 b/source/ap/vim/patches/7.3.459 new file mode 100644 index 00000000..d75a38b4 --- /dev/null +++ b/source/ap/vim/patches/7.3.459 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.459 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.459 +Problem: Win32: Warnings for type conversion. +Solution: Add type casts. (Mike Williams) +Files: src/misc2.c, src/os_win32.c + + +*** ../vim-7.3.458/src/misc2.c 2012-02-22 18:12:29.000000000 +0100 +--- src/misc2.c 2012-02-29 13:44:17.000000000 +0100 +*************** +*** 2074,2080 **** + n = gap->ga_growsize; + new_len = gap->ga_itemsize * (gap->ga_len + n); + pp = (gap->ga_data == NULL) +! ? alloc(new_len) : vim_realloc(gap->ga_data, new_len); + if (pp == NULL) + return FAIL; + old_len = gap->ga_itemsize * gap->ga_maxlen; +--- 2074,2080 ---- + n = gap->ga_growsize; + new_len = gap->ga_itemsize * (gap->ga_len + n); + pp = (gap->ga_data == NULL) +! ? alloc((unsigned)new_len) : vim_realloc(gap->ga_data, new_len); + if (pp == NULL) + return FAIL; + old_len = gap->ga_itemsize * gap->ga_maxlen; +*** ../vim-7.3.458/src/os_win32.c 2012-02-22 15:34:05.000000000 +0100 +--- src/os_win32.c 2012-02-29 13:43:39.000000000 +0100 +*************** +*** 264,270 **** + static void + unescape_shellxquote(char_u *p, char_u *escaped) + { +! int l = STRLEN(p); + int n; + + while (*p != NUL) +--- 264,270 ---- + static void + unescape_shellxquote(char_u *p, char_u *escaped) + { +! int l = (int)STRLEN(p); + int n; + + while (*p != NUL) +*** ../vim-7.3.458/src/version.c 2012-02-29 13:51:32.000000000 +0100 +--- src/version.c 2012-02-29 13:58:08.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 459, + /**/ + +-- +"A clear conscience is usually the sign of a bad memory." + -- Steven Wright + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.460 b/source/ap/vim/patches/7.3.460 new file mode 100644 index 00000000..c1d7e85b --- /dev/null +++ b/source/ap/vim/patches/7.3.460 @@ -0,0 +1,89 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.460 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.460 +Problem: Win32: UPX does not compress 64 bit binaries. +Solution: Mention and add the alternative: mpress. (Dave Bodenstab) +Files: src/INSTALLpc.txt, src/Make_ming.mak + + +*** ../vim-7.3.459/src/INSTALLpc.txt 2011-07-15 13:51:57.000000000 +0200 +--- src/INSTALLpc.txt 2012-02-29 14:01:34.000000000 +0100 +*************** +*** 239,244 **** +--- 239,250 ---- + found at + http://www.upx.org/ + ++ As of 2011, UPX still does not support compressing 64-bit EXE's; if you have ++ built a 64-bit vim then an alternative to UPX is 'MPRESS'. MPRESS can be found ++ at: ++ http://www.matcode.com/mpress.htm ++ ++ + ADDITION: NLS support with MinGW + + (by Eduardo F. Amatria <eferna1@platea.pntic.mec.es>) +*** ../vim-7.3.459/src/Make_ming.mak 2011-10-12 14:11:43.000000000 +0200 +--- src/Make_ming.mak 2012-02-29 16:54:09.000000000 +0100 +*************** +*** 14,22 **** + # it's just run out of memory or something. Run again, and it will continue + # with 'xxd'. + # +! # "make upx" makes *compressed* versions of the GUI and console EXEs, using the +! # excellent UPX compressor: + # http://upx.sourceforge.net/ + # + # Maintained by Ron Aaron <ronaharon@yahoo.com> + # updated 2003 Jan 20 +--- 14,24 ---- + # it's just run out of memory or something. Run again, and it will continue + # with 'xxd'. + # +! # "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs, +! # using the excellent UPX compressor: + # http://upx.sourceforge.net/ ++ # "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: ++ # http://www.matcode.com/mpress.htm + # + # Maintained by Ron Aaron <ronaharon@yahoo.com> + # updated 2003 Jan 20 +*************** +*** 640,645 **** +--- 642,651 ---- + upx gvim.exe + upx vim.exe + ++ mpress: exes ++ mpress gvim.exe ++ mpress vim.exe ++ + xxd/xxd.exe: xxd/xxd.c + $(MAKE) -C xxd -f Make_ming.mak CC=$(CC) + +*** ../vim-7.3.459/src/version.c 2012-02-29 13:58:43.000000000 +0100 +--- src/version.c 2012-02-29 16:54:40.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 460, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +119. You are reading a book and look for the scroll bar to get to + the next page. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.461 b/source/ap/vim/patches/7.3.461 new file mode 100644 index 00000000..53c83c06 --- /dev/null +++ b/source/ap/vim/patches/7.3.461 @@ -0,0 +1,243 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.461 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.461 +Problem: The InsertCharPre autocommand event is not triggered during + completion and when typing several characters quickly. +Solution: Also trigger InsertCharPre during completion. Do not read ahead + when an InsertCharPre autocommand is defined. (Yasuhiro Matsumoto) +Files: src/edit.c, src/fileio.c, src/proto/fileio.pro + + +*** ../vim-7.3.460/src/edit.c 2012-02-04 23:34:57.000000000 +0100 +--- src/edit.c 2012-02-29 18:17:31.000000000 +0100 +*************** +*** 259,264 **** +--- 259,267 ---- + static void ins_try_si __ARGS((int c)); + #endif + static colnr_T get_nolist_virtcol __ARGS((void)); ++ #ifdef FEAT_AUTOCMD ++ static char_u *do_insert_char_pre __ARGS((int c)); ++ #endif + + static colnr_T Insstart_textlen; /* length of line when insert started */ + static colnr_T Insstart_blank_vcol; /* vcol for first inserted blank */ +*************** +*** 784,790 **** + * completion: Add to "compl_leader". */ + if (ins_compl_accept_char(c)) + { +! ins_compl_addleader(c); + continue; + } + +--- 787,806 ---- + * completion: Add to "compl_leader". */ + if (ins_compl_accept_char(c)) + { +! #ifdef FEAT_AUTOCMD +! /* Trigger InsertCharPre. */ +! char_u *str = do_insert_char_pre(c); +! char_u *p; +! +! if (str != NULL) +! { +! for (p = str; *p != NUL; mb_ptr_adv(p)) +! ins_compl_addleader(PTR2CHAR(p)); +! vim_free(str); +! } +! else +! #endif +! ins_compl_addleader(c); + continue; + } + +*************** +*** 1393,1426 **** + #ifdef FEAT_AUTOCMD + if (!p_paste) + { +! /* Trigger the InsertCharPre event. Lock the text to avoid +! * weird things from happening. */ +! set_vim_var_char(c); +! ++textlock; +! if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, +! FALSE, curbuf)) +! { +! /* Get the new value of v:char. If it is more than one +! * character insert it literally. */ +! char_u *s = get_vim_var_str(VV_CHAR); +! if (MB_CHARLEN(s) > 1) + { +! if (stop_arrow() != FAIL) + { +! ins_str(s); +! AppendToRedobuffLit(s, -1); + } +! c = NUL; + } +! else +! c = PTR2CHAR(s); + } + +! set_vim_var_string(VV_CHAR, NULL, -1); +! --textlock; +! +! /* If the new value is an empty string then don't insert a +! * char. */ + if (c == NUL) + break; + } +--- 1409,1439 ---- + #ifdef FEAT_AUTOCMD + if (!p_paste) + { +! /* Trigger InsertCharPre. */ +! char_u *str = do_insert_char_pre(c); +! char_u *p; +! +! if (str != NULL) +! { +! if (*str != NUL && stop_arrow() != FAIL) + { +! /* Insert the new value of v:char literally. */ +! for (p = str; *p != NUL; mb_ptr_adv(p)) + { +! c = PTR2CHAR(p); +! if (c == CAR || c == K_KENTER || c == NL) +! ins_eol(c); +! else +! ins_char(c); + } +! AppendToRedobuffLit(str, -1); + } +! vim_free(str); +! c = NUL; + } + +! /* If the new value is already inserted or an empty string +! * then don't insert any character. */ + if (c == NUL) + break; + } +*************** +*** 5883,5888 **** +--- 5896,5903 ---- + * Don't do this when 'cindent' or 'indentexpr' is set, because we might + * need to re-indent at a ':', or any other character (but not what + * 'paste' is set).. ++ * Don't do this when there an InsertCharPre autocommand is defined, ++ * because we need to fire the event for every character. + */ + #ifdef USE_ON_FLY_SCROLL + dont_scroll = FALSE; /* allow scrolling here */ +*************** +*** 5900,5905 **** +--- 5915,5923 ---- + #ifdef FEAT_RIGHTLEFT + && !p_ri + #endif ++ #ifdef FEAT_AUTOCMD ++ && !has_insertcharpre() ++ #endif + ) + { + #define INPUT_BUFLEN 100 +*************** +*** 10068,10070 **** +--- 10086,10123 ---- + validate_virtcol(); + return curwin->w_virtcol; + } ++ ++ #ifdef FEAT_AUTOCMD ++ /* ++ * Handle the InsertCharPre autocommand. ++ * "c" is the character that was typed. ++ * Return a pointer to allocated memory with the replacement string. ++ * Return NULL to continue inserting "c". ++ */ ++ static char_u * ++ do_insert_char_pre(c) ++ int c; ++ { ++ char_u *res; ++ ++ /* Return quickly when there is nothing to do. */ ++ if (!has_insertcharpre()) ++ return NULL; ++ ++ /* Lock the text to avoid weird things from happening. */ ++ ++textlock; ++ set_vim_var_char(c); /* set v:char */ ++ ++ if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf)) ++ /* Get the new value of v:char. It may be empty or more than one ++ * character. */ ++ res = vim_strsave(get_vim_var_str(VV_CHAR)); ++ else ++ res = NULL; ++ ++ set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */ ++ --textlock; ++ ++ return res; ++ } ++ #endif +*** ../vim-7.3.460/src/fileio.c 2012-02-12 20:13:55.000000000 +0100 +--- src/fileio.c 2012-02-29 17:50:32.000000000 +0100 +*************** +*** 9116,9121 **** +--- 9116,9130 ---- + return (first_autopat[(int)EVENT_CURSORMOVEDI] != NULL); + } + ++ /* ++ * Return TRUE when there is an InsertCharPre autocommand defined. ++ */ ++ int ++ has_insertcharpre() ++ { ++ return (first_autopat[(int)EVENT_INSERTCHARPRE] != NULL); ++ } ++ + static int + apply_autocmds_group(event, fname, fname_io, force, group, buf, eap) + event_T event; +*** ../vim-7.3.460/src/proto/fileio.pro 2012-02-12 20:13:55.000000000 +0100 +--- src/proto/fileio.pro 2012-02-29 17:50:38.000000000 +0100 +*************** +*** 44,49 **** +--- 44,50 ---- + int trigger_cursorhold __ARGS((void)); + int has_cursormoved __ARGS((void)); + int has_cursormovedI __ARGS((void)); ++ int has_insertcharpre __ARGS((void)); + void block_autocmds __ARGS((void)); + void unblock_autocmds __ARGS((void)); + int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf)); +*** ../vim-7.3.460/src/version.c 2012-02-29 16:56:35.000000000 +0100 +--- src/version.c 2012-02-29 18:15:34.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 461, + /**/ + +-- +"Computers in the future may weigh no more than 1.5 tons." + Popular Mechanics, 1949 + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.462 b/source/ap/vim/patches/7.3.462 new file mode 100644 index 00000000..df037242 --- /dev/null +++ b/source/ap/vim/patches/7.3.462 @@ -0,0 +1,191 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.462 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.462 +Problem: When using ":loadview" folds may be closed unexpectedly. +Solution: Take into account foldlevel. (Xavier de Gaye) +Files: src/fold.c + + +*** ../vim-7.3.461/src/fold.c 2012-01-10 22:26:12.000000000 +0100 +--- src/fold.c 2012-02-29 19:18:07.000000000 +0100 +*************** +*** 3292,3298 **** + /* put_folds() {{{2 */ + #if defined(FEAT_SESSION) || defined(PROTO) + static int put_folds_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off)); +! static int put_foldopen_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off)); + + /* + * Write commands to "fd" to restore the manual folds in window "wp". +--- 3292,3299 ---- + /* put_folds() {{{2 */ + #if defined(FEAT_SESSION) || defined(PROTO) + static int put_folds_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off)); +! static int put_foldopen_recurse __ARGS((FILE *fd, win_T *wp, garray_T *gap, linenr_T off)); +! static int put_fold_open_close __ARGS((FILE *fd, fold_T *fp, linenr_T off)); + + /* + * Write commands to "fd" to restore the manual folds in window "wp". +*************** +*** 3312,3318 **** + + /* If some folds are manually opened/closed, need to restore that. */ + if (wp->w_fold_manual) +! return put_foldopen_recurse(fd, &wp->w_folds, (linenr_T)0); + + return OK; + } +--- 3313,3319 ---- + + /* If some folds are manually opened/closed, need to restore that. */ + if (wp->w_fold_manual) +! return put_foldopen_recurse(fd, wp, &wp->w_folds, (linenr_T)0); + + return OK; + } +*************** +*** 3352,3363 **** + * Returns FAIL when writing failed. + */ + static int +! put_foldopen_recurse(fd, gap, off) + FILE *fd; + garray_T *gap; + linenr_T off; + { + int i; + fold_T *fp; + + fp = (fold_T *)gap->ga_data; +--- 3353,3366 ---- + * Returns FAIL when writing failed. + */ + static int +! put_foldopen_recurse(fd, wp, gap, off) + FILE *fd; ++ win_T *wp; + garray_T *gap; + linenr_T off; + { + int i; ++ int level; + fold_T *fp; + + fp = (fold_T *)gap->ga_data; +*************** +*** 3367,3393 **** + { + if (fp->fd_nested.ga_len > 0) + { +! /* open/close 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, &fp->fd_nested, off + fp->fd_top) + == FAIL) + return FAIL; + } +- 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; + } + ++fp; + } + + return OK; + } + #endif /* FEAT_SESSION */ + + /* }}}1 */ +--- 3370,3429 ---- + { + if (fp->fd_nested.ga_len > 0) + { +! /* 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) + == FAIL) + return FAIL; ++ /* close the parent when needed */ ++ if (fp->fd_flags == FD_CLOSED) ++ { ++ if (put_fold_open_close(fd, fp, off) == FAIL) ++ return FAIL; ++ } ++ } ++ else ++ { ++ /* Open or close the leaf according to the window foldlevel. ++ * Do not close a leaf that is already closed, as it will close ++ * the parent. */ ++ level = foldLevelWin(wp, off + fp->fd_top); ++ if ((fp->fd_flags == FD_CLOSED && wp->w_p_fdl >= level) ++ || (fp->fd_flags != FD_CLOSED && wp->w_p_fdl < level)) ++ if (put_fold_open_close(fd, fp, off) == FAIL) ++ return FAIL; + } + } + ++fp; + } + + return OK; + } ++ ++ /* put_fold_open_close() {{{2 */ ++ /* ++ * Write the open or close command to "fd". ++ * Returns FAIL when writing failed. ++ */ ++ static int ++ put_fold_open_close(fd, fp, off) ++ FILE *fd; ++ fold_T *fp; ++ linenr_T off; ++ { ++ 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; ++ ++ return OK; ++ } + #endif /* FEAT_SESSION */ + + /* }}}1 */ +*** ../vim-7.3.461/src/version.c 2012-02-29 18:22:03.000000000 +0100 +--- src/version.c 2012-02-29 18:40:43.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 462, + /**/ + +-- +~ +~ +~ +".signature" 4 lines, 50 characters written + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.463 b/source/ap/vim/patches/7.3.463 new file mode 100644 index 00000000..1e7cb238 --- /dev/null +++ b/source/ap/vim/patches/7.3.463 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.463 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.463 +Problem: When using ":s///c" the cursor is moved away from the match. + (Lawman) +Solution: Don't move the cursor when do_ask is set. (Christian Brabandt) +Files: src/ex_cmds.c + + +*** ../vim-7.3.462/src/ex_cmds.c 2012-02-22 14:58:24.000000000 +0100 +--- src/ex_cmds.c 2012-03-07 14:54:21.000000000 +0100 +*************** +*** 5151,5160 **** + + if (!global_busy) + { +! if (endcolumn) +! coladvance((colnr_T)MAXCOL); +! else +! beginline(BL_WHITE | BL_FIX); + if (!do_sub_msg(do_count) && do_ask) + MSG(""); + } +--- 5151,5163 ---- + + if (!global_busy) + { +! if (!do_ask) /* when interactive leave cursor on the match */ +! { +! if (endcolumn) +! coladvance((colnr_T)MAXCOL); +! else +! beginline(BL_WHITE | BL_FIX); +! } + if (!do_sub_msg(do_count) && do_ask) + MSG(""); + } +*** ../vim-7.3.462/src/version.c 2012-02-29 19:19:57.000000000 +0100 +--- src/version.c 2012-03-07 14:55:39.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 463, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +151. You find yourself engaged to someone you've never actually met, + except through e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.464 b/source/ap/vim/patches/7.3.464 new file mode 100644 index 00000000..fdfdfffc --- /dev/null +++ b/source/ap/vim/patches/7.3.464 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.464 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.464 +Problem: Compiler warning for sprintf. +Solution: Put the length in a variable. (Dominique Pelle) +Files: src/version.c + + +*** ../vim-7.3.463/src/version.c 2012-03-07 14:57:50.000000000 +0100 +--- src/version.c 2012-03-07 17:58:41.000000000 +0100 +*************** +*** 2187,2198 **** + /* Check for 9.9x or 9.9xx, alpha/beta version */ + if (isalpha((int)vers[3])) + { +! if (isalpha((int)vers[4])) +! sprintf((char *)vers + 5, ".%d%s", highest_patch(), +! mediumVersion + 5); +! else +! sprintf((char *)vers + 4, ".%d%s", highest_patch(), +! mediumVersion + 4); + } + else + sprintf((char *)vers + 3, ".%d", highest_patch()); +--- 2189,2197 ---- + /* Check for 9.9x or 9.9xx, alpha/beta version */ + if (isalpha((int)vers[3])) + { +! int len = (isalpha((int)vers[4])) ? 5 : 4; +! sprintf((char *)vers + len, ".%d%s", highest_patch(), +! mediumVersion + len); + } + else + sprintf((char *)vers + 3, ".%d", highest_patch()); +*** ../vim-7.3.463/src/version.c 2012-03-07 14:57:50.000000000 +0100 +--- src/version.c 2012-03-07 17:58:41.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 464, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +152. You find yourself falling for someone you've never seen or hardly + know, but, boy can he/she TYPE!!!!!! + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.465 b/source/ap/vim/patches/7.3.465 new file mode 100644 index 00000000..c4a857ac --- /dev/null +++ b/source/ap/vim/patches/7.3.465 @@ -0,0 +1,398 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.465 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.465 +Problem: Cannot get file name with newline from glob(). +Solution: Add argument to glob() and expand() to indicate they must return a + list. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/eval.c, src/ex_getln.c, src/vim.h + + +*** ../vim-7.3.464/runtime/doc/eval.txt 2011-12-14 15:32:44.000000000 +0100 +--- runtime/doc/eval.txt 2012-03-07 18:49:26.000000000 +0100 +*************** +*** 1738,1744 **** + extend( {expr1}, {expr2} [, {expr3}]) + List/Dict insert items of {expr2} into {expr1} + exp( {expr}) Float exponential of {expr} +! expand( {expr} [, {flag}]) String expand special keywords in {expr} + feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer + filereadable( {file}) Number TRUE if {file} is a readable file + filewritable( {file}) Number TRUE if {file} is a writable file +--- 1746,1753 ---- + extend( {expr1}, {expr2} [, {expr3}]) + List/Dict insert items of {expr2} into {expr1} + exp( {expr}) Float exponential of {expr} +! expand( {expr} [, {nosuf} [, {list}]]) +! any expand special keywords in {expr} + feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer + filereadable( {file}) Number TRUE if {file} is a readable file + filewritable( {file}) Number TRUE if {file} is a writable file +*************** +*** 1792,1798 **** + getwinposx() Number X coord in pixels of GUI Vim window + getwinposy() Number Y coord in pixels of GUI Vim window + getwinvar( {nr}, {varname}) any variable {varname} in window {nr} +! glob( {expr} [, {flag}]) String expand file wildcards in {expr} + globpath( {path}, {expr} [, {flag}]) + String do glob({expr}) for all dirs in {path} + has( {feature}) Number TRUE if feature {feature} supported +--- 1801,1808 ---- + getwinposx() Number X coord in pixels of GUI Vim window + getwinposy() Number Y coord in pixels of GUI Vim window + getwinvar( {nr}, {varname}) any variable {varname} in window {nr} +! glob( {expr} [, {nosuf} [, {list}]]) +! any expand file wildcards in {expr} + globpath( {path}, {expr} [, {flag}]) + String do glob({expr}) for all dirs in {path} + has( {feature}) Number TRUE if feature {feature} supported +*************** +*** 2731,2743 **** + {only available when compiled with the |+float| feature} + + +! expand({expr} [, {flag}]) *expand()* + Expand wildcards and the following special keywords in {expr}. +! The result is a String. + +! When there are several matches, they are separated by <NL> +! characters. [Note: in version 5.0 a space was used, which +! caused problems when a file name contains a space] + + If the expansion fails, the result is an empty string. A name + for a non-existing file is not included. +--- 2744,2758 ---- + {only available when compiled with the |+float| feature} + + +! expand({expr} [, {nosuf} [, {list}]]) *expand()* + Expand wildcards and the following special keywords in {expr}. +! 'wildignorecase' applies. + +! If {list} is given and it is non-zero, a List will be returned. +! Otherwise the result is a String and when there are several +! matches, they are separated by <NL> characters. [Note: in +! version 5.0 a space was used, which caused problems when a +! file name contains a space] + + If the expansion fails, the result is an empty string. A name + for a non-existing file is not included. +*************** +*** 2754,2759 **** +--- 2769,2775 ---- + <abuf> autocmd buffer number (as a String!) + <amatch> autocmd matched name + <sfile> sourced script file name ++ <slnum> sourced script file line number + <cword> word under the cursor + <cWORD> WORD under the cursor + <client> the {clientid} of the last received +*************** +*** 2790,2799 **** + When {expr} does not start with '%', '#' or '<', it is + expanded like a file name is expanded on the command line. + 'suffixes' and 'wildignore' are used, unless the optional +! {flag} argument is given and it is non-zero. Names for +! non-existing files are included. The "**" item can be used to +! search in a directory tree. For example, to find all "README" +! files in the current directory and below: > + :echo expand("**/README") + < + Expand() can also be used to expand variables and environment +--- 2806,2815 ---- + When {expr} does not start with '%', '#' or '<', it is + expanded like a file name is expanded on the command line. + 'suffixes' and 'wildignore' are used, unless the optional +! {nosuf} argument is given and it is non-zero. +! Names for non-existing files are included. The "**" item can +! be used to search in a directory tree. For example, to find +! all "README" files in the current directory and below: > + :echo expand("**/README") + < + Expand() can also be used to expand variables and environment +*************** +*** 3437,3453 **** + :let list_is_on = getwinvar(2, '&list') + :echo "myvar = " . getwinvar(1, 'myvar') + < +! glob({expr} [, {flag}]) *glob()* + Expand the file wildcards in {expr}. See |wildcards| for the + use of special characters. +! The result is a String. +! When there are several matches, they are separated by <NL> +! characters. +! Unless the optional {flag} argument is given and is non-zero, + the 'suffixes' and 'wildignore' options apply: Names matching + one of the patterns in 'wildignore' will be skipped and + 'suffixes' affect the ordering of matches. +! If the expansion fails, the result is an empty string. + A name for a non-existing file is not included. + + For most systems backticks can be used to get files names from +--- 3456,3478 ---- + :let list_is_on = getwinvar(2, '&list') + :echo "myvar = " . getwinvar(1, 'myvar') + < +! glob({expr} [, {nosuf} [, {list}]]) *glob()* + Expand the file wildcards in {expr}. See |wildcards| for the + use of special characters. +! +! Unless the optional {nosuf} argument is given and is non-zero, + the 'suffixes' and 'wildignore' options apply: Names matching + one of the patterns in 'wildignore' will be skipped and + 'suffixes' affect the ordering of matches. +! 'wildignorecase' always applies. +! +! When {list} is present and it is non-zero the result is a List +! with all matching files. The advantage of using a List is, +! you also get filenames containing newlines correctly. +! Otherwise the result is a String and when there are several +! matches, they are separated by <NL> characters. +! +! If the expansion fails, the result is an empty String or List. + A name for a non-existing file is not included. + + For most systems backticks can be used to get files names from +*** ../vim-7.3.464/src/eval.c 2012-02-11 20:44:01.000000000 +0100 +--- src/eval.c 2012-03-07 19:08:36.000000000 +0100 +*************** +*** 7852,7858 **** + #ifdef FEAT_FLOAT + {"exp", 1, 1, f_exp}, + #endif +! {"expand", 1, 2, f_expand}, + {"extend", 2, 3, f_extend}, + {"feedkeys", 1, 2, f_feedkeys}, + {"file_readable", 1, 1, f_filereadable}, /* obsolete */ +--- 7852,7858 ---- + #ifdef FEAT_FLOAT + {"exp", 1, 1, f_exp}, + #endif +! {"expand", 1, 3, f_expand}, + {"extend", 2, 3, f_extend}, + {"feedkeys", 1, 2, f_feedkeys}, + {"file_readable", 1, 1, f_filereadable}, /* obsolete */ +*************** +*** 7903,7909 **** + {"getwinposx", 0, 0, f_getwinposx}, + {"getwinposy", 0, 0, f_getwinposy}, + {"getwinvar", 2, 2, f_getwinvar}, +! {"glob", 1, 2, f_glob}, + {"globpath", 2, 3, f_globpath}, + {"has", 1, 1, f_has}, + {"has_key", 2, 2, f_has_key}, +--- 7903,7909 ---- + {"getwinposx", 0, 0, f_getwinposx}, + {"getwinposy", 0, 0, f_getwinposy}, + {"getwinvar", 2, 2, f_getwinvar}, +! {"glob", 1, 3, f_glob}, + {"globpath", 2, 3, f_globpath}, + {"has", 1, 1, f_has}, + {"has_key", 2, 2, f_has_key}, +*************** +*** 10019,10032 **** + int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND; + expand_T xpc; + int error = FALSE; + + rettv->v_type = VAR_STRING; + s = get_tv_string(&argvars[0]); + if (*s == '%' || *s == '#' || *s == '<') + { + ++emsg_off; +! rettv->vval.v_string = eval_vars(s, s, &len, NULL, &errormsg, NULL); + --emsg_off; + } + else + { +--- 10019,10051 ---- + int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND; + expand_T xpc; + int error = FALSE; ++ char_u *result; + + rettv->v_type = VAR_STRING; ++ if (argvars[1].v_type != VAR_UNKNOWN ++ && argvars[2].v_type != VAR_UNKNOWN ++ && get_tv_number_chk(&argvars[2], &error) ++ && !error) ++ { ++ rettv->v_type = VAR_LIST; ++ rettv->vval.v_list = NULL; ++ } ++ + s = get_tv_string(&argvars[0]); + if (*s == '%' || *s == '#' || *s == '<') + { + ++emsg_off; +! result = eval_vars(s, s, &len, NULL, &errormsg, NULL); + --emsg_off; ++ if (rettv->v_type == VAR_LIST) ++ { ++ if (rettv_list_alloc(rettv) != FAIL && result != NULL) ++ list_append_string(rettv->vval.v_list, result, -1); ++ else ++ vim_free(result); ++ } ++ else ++ rettv->vval.v_string = result; + } + else + { +*************** +*** 10041,10047 **** + xpc.xp_context = EXPAND_FILES; + if (p_wic) + options += WILD_ICASE; +! rettv->vval.v_string = ExpandOne(&xpc, s, NULL, options, WILD_ALL); + } + else + rettv->vval.v_string = NULL; +--- 10060,10077 ---- + xpc.xp_context = EXPAND_FILES; + if (p_wic) + options += WILD_ICASE; +! if (rettv->v_type == VAR_STRING) +! rettv->vval.v_string = ExpandOne(&xpc, s, NULL, +! options, WILD_ALL); +! else if (rettv_list_alloc(rettv) != FAIL) +! { +! int i; +! +! ExpandOne(&xpc, s, NULL, options, WILD_ALL_KEEP); +! for (i = 0; i < xpc.xp_numfiles; i++) +! list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1); +! ExpandCleanup(&xpc); +! } + } + else + rettv->vval.v_string = NULL; +*************** +*** 11833,11851 **** + int error = FALSE; + + /* When the optional second argument is non-zero, don't remove matches +! * for 'wildignore' and don't put matches for 'suffixes' at the end. */ +! if (argvars[1].v_type != VAR_UNKNOWN +! && get_tv_number_chk(&argvars[1], &error)) +! options |= WILD_KEEP_ALL; + rettv->v_type = VAR_STRING; + if (!error) + { + ExpandInit(&xpc); + xpc.xp_context = EXPAND_FILES; + if (p_wic) + options += WILD_ICASE; +! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]), + NULL, options, WILD_ALL); + } + else + rettv->vval.v_string = NULL; +--- 11863,11901 ---- + int error = FALSE; + + /* When the optional second argument is non-zero, don't remove matches +! * for 'wildignore' and don't put matches for 'suffixes' at the end. */ + rettv->v_type = VAR_STRING; ++ if (argvars[1].v_type != VAR_UNKNOWN) ++ { ++ if (get_tv_number_chk(&argvars[1], &error)) ++ options |= WILD_KEEP_ALL; ++ if (argvars[2].v_type != VAR_UNKNOWN ++ && get_tv_number_chk(&argvars[2], &error)) ++ { ++ rettv->v_type = VAR_LIST; ++ rettv->vval.v_list = NULL; ++ } ++ } + if (!error) + { + ExpandInit(&xpc); + xpc.xp_context = EXPAND_FILES; + if (p_wic) + options += WILD_ICASE; +! if (rettv->v_type == VAR_STRING) +! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]), + NULL, options, WILD_ALL); ++ else if (rettv_list_alloc(rettv) != FAIL) ++ { ++ int i; ++ ++ ExpandOne(&xpc, get_tv_string(&argvars[0]), ++ NULL, options, WILD_ALL_KEEP); ++ for (i = 0; i < xpc.xp_numfiles; i++) ++ list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1); ++ ++ ExpandCleanup(&xpc); ++ } + } + else + rettv->vval.v_string = NULL; +*** ../vim-7.3.464/src/ex_getln.c 2012-02-22 17:58:00.000000000 +0100 +--- src/ex_getln.c 2012-03-07 19:07:01.000000000 +0100 +*************** +*** 3461,3466 **** +--- 3461,3467 ---- + * mode = WILD_PREV: use previous match in multiple match, wrap to first + * mode = WILD_ALL: return all matches concatenated + * mode = WILD_LONGEST: return longest matched part ++ * mode = WILD_ALL_KEEP: get all matches, keep matches + * + * options = WILD_LIST_NOTFOUND: list entries without a match + * options = WILD_HOME_REPLACE: do home_replace() for buffer names +*************** +*** 3584,3590 **** + /* + * Check for matching suffixes in file names. + */ +! if (mode != WILD_ALL && mode != WILD_LONGEST) + { + if (xp->xp_numfiles) + non_suf_match = xp->xp_numfiles; +--- 3585,3592 ---- + /* + * Check for matching suffixes in file names. + */ +! if (mode != WILD_ALL && mode != WILD_ALL_KEEP +! && mode != WILD_LONGEST) + { + if (xp->xp_numfiles) + non_suf_match = xp->xp_numfiles; +*** ../vim-7.3.464/src/vim.h 2011-07-27 17:31:42.000000000 +0200 +--- src/vim.h 2012-03-07 19:03:43.000000000 +0100 +*************** +*** 794,799 **** +--- 794,800 ---- + #define WILD_PREV 5 + #define WILD_ALL 6 + #define WILD_LONGEST 7 ++ #define WILD_ALL_KEEP 8 + + #define WILD_LIST_NOTFOUND 1 + #define WILD_HOME_REPLACE 2 +*** ../vim-7.3.464/src/version.c 2012-03-07 18:04:00.000000000 +0100 +--- src/version.c 2012-03-07 19:14:39.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 465, + /**/ + +-- +Although the scythe isn't pre-eminent among the weapons of war, anyone who +has been on the wrong end of, say, a peasants' revolt will know that in +skilled hands it is fearsome. + -- (Terry Pratchett, Mort) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.466 b/source/ap/vim/patches/7.3.466 new file mode 100644 index 00000000..0dc42934 --- /dev/null +++ b/source/ap/vim/patches/7.3.466 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.466 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.466 +Problem: Get ml_get error when ":behave mswin" was used and selecting + several lines. (A. Sinan Unur) +Solution: Adjust the end of the operation. (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.3.465/src/ops.c 2012-02-22 17:37:55.000000000 +0100 +--- src/ops.c 2012-03-07 19:27:08.000000000 +0100 +*************** +*** 1957,1962 **** +--- 1957,1965 ---- + ++curwin->w_cursor.lnum; + del_lines((long)(oap->line_count - 2), FALSE); + ++ if (delete_last_line) ++ oap->end.lnum = curbuf->b_ml.ml_line_count; ++ + n = (oap->end.col + 1 - !oap->inclusive); + if (oap->inclusive && delete_last_line + && n > (int)STRLEN(ml_get(oap->end.lnum))) +*** ../vim-7.3.465/src/version.c 2012-03-07 19:16:49.000000000 +0100 +--- src/version.c 2012-03-07 19:29:52.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 466, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +153. You find yourself staring at your "inbox" waiting for new e-mail + to arrive. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.467 b/source/ap/vim/patches/7.3.467 new file mode 100644 index 00000000..7764217c --- /dev/null +++ b/source/ap/vim/patches/7.3.467 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.467 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.467 +Problem: Cursor positioned wrong at the command line when regaining focus + and using some input method. +Solution: Do not position the cursor in command line mode. +Files: src/mbyte.c + + +*** ../vim-7.3.466/src/mbyte.c 2011-12-08 15:09:46.000000000 +0100 +--- src/mbyte.c 2012-03-07 19:36:44.000000000 +0100 +*************** +*** 4504,4510 **** + vgetc_busy = TRUE; + showmode(); + vgetc_busy = old_vgetc_busy; +! setcursor(); + out_flush(); + } + +--- 4504,4511 ---- + vgetc_busy = TRUE; + showmode(); + vgetc_busy = old_vgetc_busy; +! if ((State & NORMAL) || (State & INSERT)) +! setcursor(); + out_flush(); + } + +*** ../vim-7.3.466/src/version.c 2012-03-07 19:30:32.000000000 +0100 +--- src/version.c 2012-03-07 19:38:22.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 467, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +154. You fondle your mouse. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.468 b/source/ap/vim/patches/7.3.468 new file mode 100644 index 00000000..e078f9ea --- /dev/null +++ b/source/ap/vim/patches/7.3.468 @@ -0,0 +1,144 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.468 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.468 +Problem: For some compilers the error file is not easily readable. +Solution: Use QuickFixCmdPre for more commands. (Marcin Szamotulski) +Files: runtime/doc/autocmd.txt, src/quickfix.c + + +*** ../vim-7.3.467/runtime/doc/autocmd.txt 2012-02-12 20:13:55.000000000 +0100 +--- runtime/doc/autocmd.txt 2012-03-07 20:07:23.000000000 +0100 +*************** +*** 695,701 **** + QuickFixCmdPre Before a quickfix command is run (|:make|, + |:lmake|, |:grep|, |:lgrep|, |:grepadd|, + |:lgrepadd|, |:vimgrep|, |:lvimgrep|, +! |:vimgrepadd|, |:lvimgrepadd|, |:cscope|). + The pattern is matched against the command + being run. When |:grep| is used but 'grepprg' + is set to "internal" it still matches "grep". +--- 699,708 ---- + QuickFixCmdPre Before a quickfix command is run (|:make|, + |:lmake|, |:grep|, |:lgrep|, |:grepadd|, + |:lgrepadd|, |:vimgrep|, |:lvimgrep|, +! |:vimgrepadd|, |:lvimgrepadd|, |:cscope|, +! |:cfile|, |:cgetfile|, |:caddfile|, |:lfile|, +! |:lgetfile|, |:laddfile|, |:helpgrep|, +! |:lhelpgrep|). + The pattern is matched against the command + being run. When |:grep| is used but 'grepprg' + is set to "internal" it still matches "grep". +*************** +*** 706,712 **** + *QuickFixCmdPost* + QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix + command is run, before jumping to the first +! location. See |QuickFixCmdPost-example|. + *RemoteReply* + RemoteReply When a reply from a Vim that functions as + server was received |server2client()|. The +--- 713,722 ---- + *QuickFixCmdPost* + QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix + command is run, before jumping to the first +! location. For |:cfile| and |:lfile| commands +! it is run after error file is read and before +! moving to the first error. +! See |QuickFixCmdPost-example|. + *RemoteReply* + RemoteReply When a reply from a Vim that functions as + server was received |server2client()|. The +*** ../vim-7.3.467/src/quickfix.c 2012-02-22 14:58:24.000000000 +0100 +--- src/quickfix.c 2012-03-07 20:10:07.000000000 +0100 +*************** +*** 2995,3005 **** + { + win_T *wp = NULL; + qf_info_T *qi = &ql_info; + + if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile +! || eap->cmdidx == CMD_laddfile) + wp = curwin; + + #ifdef FEAT_BROWSE + if (cmdmod.browse) + { +--- 2995,3022 ---- + { + win_T *wp = NULL; + qf_info_T *qi = &ql_info; ++ #ifdef FEAT_AUTOCMD ++ char_u *au_name = NULL; ++ #endif + + if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile +! || eap->cmdidx == CMD_laddfile) + wp = curwin; + ++ #ifdef FEAT_AUTOCMD ++ switch (eap->cmdidx) ++ { ++ case CMD_cfile: au_name = (char_u *)"cfile"; break; ++ case CMD_cgetfile: au_name = (char_u *)"cgetfile"; break; ++ case CMD_caddfile: au_name = (char_u *)"caddfile"; break; ++ case CMD_lfile: au_name = (char_u *)"lfile"; break; ++ case CMD_lgetfile: au_name = (char_u *)"lgetfile"; break; ++ case CMD_laddfile: au_name = (char_u *)"laddfile"; break; ++ default: break; ++ } ++ if (au_name != NULL) ++ apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, NULL, FALSE, curbuf); ++ #endif + #ifdef FEAT_BROWSE + if (cmdmod.browse) + { +*************** +*** 3031,3040 **** +--- 3048,3069 ---- + && (eap->cmdidx == CMD_cfile + || eap->cmdidx == CMD_lfile)) + { ++ #ifdef FEAT_AUTOCMD ++ if (au_name != NULL) ++ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf); ++ #endif + if (wp != NULL) + qi = GET_LOC_LIST(wp); + qf_jump(qi, 0, 0, eap->forceit); /* display first error */ + } ++ ++ else ++ { ++ #ifdef FEAT_AUTOCMD ++ if (au_name != NULL) ++ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf); ++ #endif ++ } + } + + /* +*** ../vim-7.3.467/src/version.c 2012-03-07 19:38:52.000000000 +0100 +--- src/version.c 2012-03-07 20:11:54.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 468, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +155. You forget to eat because you're too busy surfing the net. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.469 b/source/ap/vim/patches/7.3.469 new file mode 100644 index 00000000..77ca4a05 --- /dev/null +++ b/source/ap/vim/patches/7.3.469 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.469 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.469 +Problem: Compiler warning for unused argument without some features. +Solution: Add UNUSED. +Files: src/buffer.c + + +*** ../vim-7.3.468/src/buffer.c 2012-02-22 19:13:00.000000000 +0100 +--- src/buffer.c 2012-03-07 22:30:56.000000000 +0100 +*************** +*** 329,335 **** + win_T *win; /* if not NULL, set b_last_cursor */ + buf_T *buf; + int action; +! int abort_if_last; + { + #ifdef FEAT_AUTOCMD + int is_curbuf; +--- 329,335 ---- + win_T *win; /* if not NULL, set b_last_cursor */ + buf_T *buf; + int action; +! int abort_if_last UNUSED; + { + #ifdef FEAT_AUTOCMD + int is_curbuf; +*** ../vim-7.3.468/src/version.c 2012-03-07 20:13:44.000000000 +0100 +--- src/version.c 2012-03-07 22:51:54.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 469, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +157. You fum through a magazine, you first check to see if it has a web + address. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.470 b/source/ap/vim/patches/7.3.470 new file mode 100644 index 00000000..80bec156 --- /dev/null +++ b/source/ap/vim/patches/7.3.470 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.470 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.470 +Problem: Test 62 fails when compiled without GUI and X11. +Solution: Don't test :drop when it is not supported. +Files: src/testdir/test62.in + + +*** ../vim-7.3.469/src/testdir/test62.in 2012-02-22 19:13:00.000000000 +0100 +--- src/testdir/test62.in 2012-03-07 22:46:17.000000000 +0100 +*************** +*** 49,55 **** + :tabclose + :call append(line('$'), test_status) + :" +! :" + :" Test for ":tab drop exist-file" to keep current window. + :sp test1 + :tab drop test1 +--- 49,55 ---- + :tabclose + :call append(line('$'), test_status) + :" +! :if has('gui') || has('clientserver') + :" Test for ":tab drop exist-file" to keep current window. + :sp test1 + :tab drop test1 +*************** +*** 85,90 **** +--- 85,96 ---- + :tabclose + :q + :call append(line('$'), test_status) ++ :else ++ :" :drop not supported ++ :call append(line('$'), 'tab drop 1: pass') ++ :call append(line('$'), 'tab drop 2: pass') ++ :call append(line('$'), 'tab drop 3: pass') ++ :endif + :" + :" + :/^Results/,$w! test.out +*** ../vim-7.3.469/src/version.c 2012-03-07 22:52:30.000000000 +0100 +--- src/version.c 2012-03-07 22:53:40.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 470, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +158. You get a tuner card so you can watch TV while surfing. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.471 b/source/ap/vim/patches/7.3.471 new file mode 100644 index 00000000..be814324 --- /dev/null +++ b/source/ap/vim/patches/7.3.471 @@ -0,0 +1,92 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.471 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.471 +Problem: Can't abort listing placed signs. +Solution: Check "got_int". (Christian Brabandt) +Files: src/buffer.c, src/ex_cmds.c + + +*** ../vim-7.3.470/src/buffer.c 2012-03-07 22:52:30.000000000 +0100 +--- src/buffer.c 2012-03-16 13:54:48.000000000 +0100 +*************** +*** 5557,5563 **** + buf = firstbuf; + else + buf = rbuf; +! while (buf != NULL) + { + if (buf->b_signlist != NULL) + { +--- 5557,5563 ---- + buf = firstbuf; + else + buf = rbuf; +! while (buf != NULL && !got_int) + { + if (buf->b_signlist != NULL) + { +*************** +*** 5565,5571 **** + MSG_PUTS_ATTR(lbuf, hl_attr(HLF_D)); + msg_putchar('\n'); + } +! for (p = buf->b_signlist; p != NULL; p = p->next) + { + vim_snprintf(lbuf, BUFSIZ, _(" line=%ld id=%d name=%s"), + (long)p->lnum, p->id, sign_typenr2name(p->typenr)); +--- 5565,5571 ---- + MSG_PUTS_ATTR(lbuf, hl_attr(HLF_D)); + msg_putchar('\n'); + } +! for (p = buf->b_signlist; p != NULL && !got_int; p = p->next) + { + vim_snprintf(lbuf, BUFSIZ, _(" line=%ld id=%d name=%s"), + (long)p->lnum, p->id, sign_typenr2name(p->typenr)); +*** ../vim-7.3.470/src/ex_cmds.c 2012-03-07 14:57:50.000000000 +0100 +--- src/ex_cmds.c 2012-03-16 13:58:50.000000000 +0100 +*************** +*** 6729,6735 **** + if (idx == SIGNCMD_LIST && *arg == NUL) + { + /* ":sign list": list all defined signs */ +! for (sp = first_sign; sp != NULL; sp = sp->sn_next) + sign_list_defined(sp); + } + else if (*arg == NUL) +--- 6729,6735 ---- + if (idx == SIGNCMD_LIST && *arg == NUL) + { + /* ":sign list": list all defined signs */ +! for (sp = first_sign; sp != NULL && !got_int; sp = sp->sn_next) + sign_list_defined(sp); + } + else if (*arg == NUL) +*** ../vim-7.3.470/src/version.c 2012-03-07 22:55:17.000000000 +0100 +--- src/version.c 2012-03-16 13:55:28.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 471, + /**/ + +-- +Some of the well know MS-Windows errors: + EMEMORY Memory error caused by..., eh... + ELICENSE Your license has expired, give us more money! + EMOUSE Mouse moved, reinstall Windows + EILLEGAL Illegal error, you are not allowed to see this + EVIRUS Undetectable virus found + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.472 b/source/ap/vim/patches/7.3.472 new file mode 100644 index 00000000..217b2fc9 --- /dev/null +++ b/source/ap/vim/patches/7.3.472 @@ -0,0 +1,88 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.472 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.472 +Problem: Crash when using ":redraw" in a BufEnter autocommand and + switching to another tab. (驼峰) +Solution: Move triggering the the autocommands to after correcting the + option values. Also check the row value to be out of bounds. + (Christian Brabandt, Sergey Khorev) +Files: src/screen.c, src/window.c + + +*** ../vim-7.3.471/src/screen.c 2012-02-04 23:34:57.000000000 +0100 +--- src/screen.c 2012-03-16 18:59:20.000000000 +0100 +*************** +*** 5371,5376 **** +--- 5371,5382 ---- + # define CHAR_CELLS 1 + #endif + ++ /* Check for illegal row and col, just in case. */ ++ if (row >= Rows) ++ row = Rows - 1; ++ if (endcol > Columns) ++ endcol = Columns; ++ + # ifdef FEAT_CLIPBOARD + clip_may_clear_selection(row, row); + # endif +*** ../vim-7.3.471/src/window.c 2012-02-22 14:58:24.000000000 +0100 +--- src/window.c 2012-03-16 18:43:01.000000000 +0100 +*************** +*** 3676,3688 **** + win_enter_ext(tp->tp_curwin, FALSE, TRUE); + prevwin = next_prevwin; + +- #ifdef FEAT_AUTOCMD +- apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); +- +- if (old_curbuf != curbuf) +- apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); +- #endif +- + last_status(FALSE); /* status line may appear or disappear */ + (void)win_comp_pos(); /* recompute w_winrow for all windows */ + must_redraw = CLEAR; /* need to redraw everything */ +--- 3676,3681 ---- +*************** +*** 3712,3717 **** +--- 3705,3718 ---- + gui_may_update_scrollbars(); + #endif + ++ #ifdef FEAT_AUTOCMD ++ /* Apply autocommands after updating the display, when 'rows' and ++ * 'columns' have been set correctly. */ ++ apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); ++ if (old_curbuf != curbuf) ++ apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); ++ #endif ++ + redraw_all_later(CLEAR); + } + +*** ../vim-7.3.471/src/version.c 2012-03-16 14:32:10.000000000 +0100 +--- src/version.c 2012-03-16 19:02:53.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 472, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +200. You really believe in the concept of a "paperless" office. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.473 b/source/ap/vim/patches/7.3.473 new file mode 100644 index 00000000..571f85da --- /dev/null +++ b/source/ap/vim/patches/7.3.473 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.473 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.473 +Problem: 'cursorbind' does not work correctly in combination with + 'virtualedit' set to "all". +Solution: Copy coladd. (Gary Johnson) +Files: src/move.c + + +*** ../vim-7.3.472/src/move.c 2012-02-04 23:34:57.000000000 +0100 +--- src/move.c 2012-03-16 19:20:57.000000000 +0100 +*************** +*** 2843,2849 **** + do_check_cursorbind() + { + linenr_T line = curwin->w_cursor.lnum; +! colnr_T col = curwin->w_cursor.col; + win_T *old_curwin = curwin; + buf_T *old_curbuf = curbuf; + int restart_edit_save; +--- 2843,2852 ---- + do_check_cursorbind() + { + linenr_T line = curwin->w_cursor.lnum; +! colnr_T col = curwin->w_cursor.col; +! # ifdef FEAT_VIRTUALEDIT +! colnr_T coladd = curwin->w_cursor.coladd; +! # endif + win_T *old_curwin = curwin; + buf_T *old_curbuf = curbuf; + int restart_edit_save; +*************** +*** 2875,2880 **** +--- 2878,2886 ---- + # endif + curwin->w_cursor.lnum = line; + curwin->w_cursor.col = col; ++ # ifdef FEAT_VIRTUALEDIT ++ curwin->w_cursor.coladd = coladd; ++ # endif + + /* Make sure the cursor is in a valid position. Temporarily set + * "restart_edit" to allow the cursor to be beyond the EOL. */ +*** ../vim-7.3.472/src/version.c 2012-03-16 19:07:54.000000000 +0100 +--- src/version.c 2012-03-16 19:24:06.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 473, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +201. When somebody asks you where you are, you tell them in which chat room. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.474 b/source/ap/vim/patches/7.3.474 new file mode 100644 index 00000000..dc6b1d6e --- /dev/null +++ b/source/ap/vim/patches/7.3.474 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.474 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.474 +Problem: Perl build with gcc 4 fails. +Solution: Remove XS() statements. (Yasuhiro Matsumoto) +Files: src/if_perl.xs + + +*** ../vim-7.3.473/src/if_perl.xs 2012-02-12 00:31:47.000000000 +0100 +--- src/if_perl.xs 2012-03-16 19:33:23.000000000 +0100 +*************** +*** 913,936 **** + win_T *win_find_nr(int n) { return curwin; } + #endif + +- XS(XS_VIM_Msg); +- XS(XS_VIM_SetOption); +- XS(XS_VIM_DoCommand); +- XS(XS_VIM_Eval); +- XS(XS_VIM_Buffers); +- XS(XS_VIM_Windows); +- XS(XS_VIWIN_DESTROY); +- XS(XS_VIWIN_Buffer); +- XS(XS_VIWIN_SetHeight); +- XS(XS_VIWIN_Cursor); +- XS(XS_VIBUF_DESTROY); +- XS(XS_VIBUF_Name); +- XS(XS_VIBUF_Number); +- XS(XS_VIBUF_Count); +- XS(XS_VIBUF_Get); +- XS(XS_VIBUF_Set); +- XS(XS_VIBUF_Delete); +- XS(XS_VIBUF_Append); + XS(boot_VIM); + + static void +--- 913,918 ---- +*** ../vim-7.3.473/src/version.c 2012-03-16 19:24:21.000000000 +0100 +--- src/version.c 2012-03-16 19:28:03.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 474, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +202. You're amazed to find out Spam is a food. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.475 b/source/ap/vim/patches/7.3.475 new file mode 100644 index 00000000..54c27a21 --- /dev/null +++ b/source/ap/vim/patches/7.3.475 @@ -0,0 +1,98 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.475 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.475 +Problem: In a terminal with few colors the omnicomplete menu may be hard to + see when using the default colors. +Solution: Use more explicit colors. (suggested by Alex Henrie) +Files: src/syntax.c + + +*** ../vim-7.3.474/src/syntax.c 2012-01-10 22:26:12.000000000 +0100 +--- src/syntax.c 2012-03-16 20:14:22.000000000 +0100 +*************** +*** 6516,6523 **** + "DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red"), + #endif + #ifdef FEAT_INS_EXPAND +- CENT("PmenuThumb cterm=reverse", +- "PmenuThumb cterm=reverse gui=reverse"), + CENT("PmenuSbar ctermbg=Grey", + "PmenuSbar ctermbg=Grey guibg=Grey"), + #endif +--- 6516,6521 ---- +*************** +*** 6557,6566 **** + "SpellLocal term=underline ctermbg=Cyan guisp=DarkCyan gui=undercurl"), + #endif + #ifdef FEAT_INS_EXPAND +! CENT("Pmenu ctermbg=LightMagenta", +! "Pmenu ctermbg=LightMagenta guibg=LightMagenta"), +! CENT("PmenuSel ctermbg=LightGrey", +! "PmenuSel ctermbg=LightGrey guibg=Grey"), + #endif + CENT("SpecialKey term=bold ctermfg=DarkBlue", + "SpecialKey term=bold ctermfg=DarkBlue guifg=Blue"), +--- 6555,6566 ---- + "SpellLocal term=underline ctermbg=Cyan guisp=DarkCyan gui=undercurl"), + #endif + #ifdef FEAT_INS_EXPAND +! CENT("PmenuThumb ctermbg=Black", +! "PmenuThumb ctermbg=Black guibg=Black"), +! CENT("Pmenu ctermbg=LightMagenta ctermfg=Black", +! "Pmenu ctermbg=LightMagenta ctermfg=Black guibg=LightMagenta"), +! CENT("PmenuSel ctermbg=LightGrey ctermfg=Black", +! "PmenuSel ctermbg=LightGrey ctermfg=Black guibg=Grey"), + #endif + CENT("SpecialKey term=bold ctermfg=DarkBlue", + "SpecialKey term=bold ctermfg=DarkBlue guifg=Blue"), +*************** +*** 6645,6654 **** + "SpellLocal term=underline ctermbg=Cyan guisp=Cyan gui=undercurl"), + #endif + #ifdef FEAT_INS_EXPAND +! CENT("Pmenu ctermbg=Magenta", +! "Pmenu ctermbg=Magenta guibg=Magenta"), +! CENT("PmenuSel ctermbg=DarkGrey", +! "PmenuSel ctermbg=DarkGrey guibg=DarkGrey"), + #endif + CENT("Title term=bold ctermfg=LightMagenta", + "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"), +--- 6645,6656 ---- + "SpellLocal term=underline ctermbg=Cyan guisp=Cyan gui=undercurl"), + #endif + #ifdef FEAT_INS_EXPAND +! CENT("PmenuThumb ctermbg=White", +! "PmenuThumb ctermbg=White guibg=White"), +! CENT("Pmenu ctermbg=Magenta ctermfg=Black", +! "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"), +! CENT("PmenuSel ctermbg=DarkGrey ctermfg=Black", +! "PmenuSel ctermbg=DarkGrey ctermfg=Black guibg=DarkGrey"), + #endif + CENT("Title term=bold ctermfg=LightMagenta", + "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"), +*** ../vim-7.3.474/src/version.c 2012-03-16 19:34:43.000000000 +0100 +--- src/version.c 2012-03-16 20:05:35.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 475, + /**/ + +-- +Spam seems to be something useful to novices. Later you realize that +it's a bunch of indigestable junk that only clogs your system. +Applies to both the food and the e-mail! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.476 b/source/ap/vim/patches/7.3.476 new file mode 100644 index 00000000..959b906b --- /dev/null +++ b/source/ap/vim/patches/7.3.476 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.476 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.476 +Problem: When selecting a block, using "$" to include the end of each line + and using "A" and typing a backspace strange things happen. + (Yuangchen Xie) +Solution: Avoid using a negative length. (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.3.475/src/ops.c 2012-03-07 19:30:32.000000000 +0100 +--- src/ops.c 2012-03-23 12:22:36.000000000 +0100 +*************** +*** 2602,2608 **** + firstline = ml_get(oap->start.lnum) + bd.textcol; + if (oap->op_type == OP_APPEND) + firstline += bd.textlen; +! if ((ins_len = (long)STRLEN(firstline) - pre_textlen) > 0) + { + ins_text = vim_strnsave(firstline, (int)ins_len); + if (ins_text != NULL) +--- 2602,2609 ---- + firstline = ml_get(oap->start.lnum) + bd.textcol; + if (oap->op_type == OP_APPEND) + firstline += bd.textlen; +! if (pre_textlen >= 0 +! && (ins_len = (long)STRLEN(firstline) - pre_textlen) > 0) + { + ins_text = vim_strnsave(firstline, (int)ins_len); + if (ins_text != NULL) +*** ../vim-7.3.475/src/version.c 2012-03-16 20:16:42.000000000 +0100 +--- src/version.c 2012-03-23 14:14:49.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 476, + /**/ + +-- +"Marriage is a wonderful institution... +but who wants to live in an institution?" + - Groucho Marx + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.477 b/source/ap/vim/patches/7.3.477 new file mode 100644 index 00000000..8030ee65 --- /dev/null +++ b/source/ap/vim/patches/7.3.477 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.477 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.477 +Problem: Using ":echo" to output enough lines to scroll, then using "j" and + "k" at the more prompt, displays the command on top of the output. + (Marcin Szamotulski) +Solution: Put the output below the command. (Christian Brabandt) +Files: src/eval.c + + +*** ../vim-7.3.476/src/eval.c 2012-03-07 19:16:49.000000000 +0100 +--- src/eval.c 2012-03-23 15:11:30.000000000 +0100 +*************** +*** 20492,20498 **** +--- 20492,20503 ---- + /* Call msg_start() after eval1(), evaluating the expression + * may cause a message to appear. */ + if (eap->cmdidx == CMD_echo) ++ { ++ /* Put the output below the command, makes scrolling back ++ * at more prompt work. */ ++ msg_didout = TRUE; + msg_start(); ++ } + } + else if (eap->cmdidx == CMD_echo) + msg_puts_attr((char_u *)" ", echo_attr); +*** ../vim-7.3.476/src/version.c 2012-03-23 14:16:19.000000000 +0100 +--- src/version.c 2012-03-23 15:13:58.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 477, + /**/ + +-- +"Marriage is when a man and woman become as one; the trouble starts +when they try to decide which one" + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.478 b/source/ap/vim/patches/7.3.478 new file mode 100644 index 00000000..bad69ef2 --- /dev/null +++ b/source/ap/vim/patches/7.3.478 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.478 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.478 +Problem: Memory leak using the ':rv!' command when reading dictionary or + list global variables i.e. with 'viminfo' containing !. +Solution: Free the typeval. (Dominique Pelle) +Files: src/eval.c + + +*** ../vim-7.3.477/src/eval.c 2012-03-23 15:18:20.000000000 +0100 +--- src/eval.c 2012-03-23 15:28:42.000000000 +0100 +*************** +*** 22976,22981 **** +--- 22976,22982 ---- + { + vim_free(tv.vval.v_string); + tv = *etv; ++ vim_free(etv); + } + } + +*** ../vim-7.3.477/src/version.c 2012-03-23 15:18:20.000000000 +0100 +--- src/version.c 2012-03-23 15:29:22.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 478, + /**/ + +-- +"Marriage is the process of finding out what kind of man your wife +would have preferred" + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.479 b/source/ap/vim/patches/7.3.479 new file mode 100644 index 00000000..fc256c1f --- /dev/null +++ b/source/ap/vim/patches/7.3.479 @@ -0,0 +1,134 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.479 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.479 +Problem: When 'cursorline' is set the line number highlighting can't be set + separately. +Solution: Add "CursorLineNr". (Howard Buchholz) +Files: src/option.c, src/screen.c, src/syntax.c, src/vim.h + + +*** ../vim-7.3.478/src/option.c 2012-02-29 13:51:32.000000000 +0100 +--- src/option.c 2012-03-23 15:44:57.000000000 +0100 +*************** +*** 460,468 **** + #if defined(FEAT_DIFF) || defined(FEAT_FOLDING) || defined(FEAT_SPELL) \ + || defined(FEAT_VERTSPLIT) || defined(FEAT_CLIPBOARD) \ + || defined(FEAT_INS_EXPAND) || defined(FEAT_SYN_HL) || defined(FEAT_CONCEAL) +! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn" + #else +! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,t:Title,v:Visual,w:WarningMsg,W:WildMenu,>:SignColumn,*:TabLine,#:TabLineSel,_:TabLineFill" + #endif + + /* +--- 460,468 ---- + #if defined(FEAT_DIFF) || defined(FEAT_FOLDING) || defined(FEAT_SPELL) \ + || defined(FEAT_VERTSPLIT) || defined(FEAT_CLIPBOARD) \ + || defined(FEAT_INS_EXPAND) || defined(FEAT_SYN_HL) || defined(FEAT_CONCEAL) +! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn" + #else +! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,t:Title,v:Visual,w:WarningMsg,W:WildMenu,>:SignColumn,*:TabLine,#:TabLineSel,_:TabLineFill" + #endif + + /* +*** ../vim-7.3.478/src/screen.c 2012-03-16 19:07:54.000000000 +0100 +--- src/screen.c 2012-03-23 16:09:15.000000000 +0100 +*************** +*** 3501,3509 **** + char_attr = hl_attr(HLF_N); + #ifdef FEAT_SYN_HL + /* When 'cursorline' is set highlight the line number of +! * the current line differently. */ + if (wp->w_p_cul && lnum == wp->w_cursor.lnum) +! char_attr = hl_combine_attr(hl_attr(HLF_CUL), char_attr); + #endif + } + } +--- 3501,3511 ---- + char_attr = hl_attr(HLF_N); + #ifdef FEAT_SYN_HL + /* When 'cursorline' is set highlight the line number of +! * the current line differently. +! * TODO: Can we use CursorLine instead of CursorLineNr +! * when CursorLineNr isn't set? */ + if (wp->w_p_cul && lnum == wp->w_cursor.lnum) +! char_attr = hl_attr(HLF_CLN); + #endif + } + } +*** ../vim-7.3.478/src/syntax.c 2012-03-16 20:16:42.000000000 +0100 +--- src/syntax.c 2012-03-23 16:23:57.000000000 +0100 +*************** +*** 6538,6543 **** +--- 6538,6545 ---- + "Directory term=bold ctermfg=DarkBlue guifg=Blue"), + CENT("LineNr term=underline ctermfg=Brown", + "LineNr term=underline ctermfg=Brown guifg=Brown"), ++ CENT("CursorLineNr term=bold ctermfg=Brown", ++ "CursorLineNr term=bold ctermfg=Brown gui=bold guifg=Brown"), + CENT("MoreMsg term=bold ctermfg=DarkGreen", + "MoreMsg term=bold ctermfg=DarkGreen gui=bold guifg=SeaGreen"), + CENT("Question term=standout ctermfg=DarkGreen", +*************** +*** 6626,6631 **** +--- 6628,6635 ---- + "Directory term=bold ctermfg=LightCyan guifg=Cyan"), + CENT("LineNr term=underline ctermfg=Yellow", + "LineNr term=underline ctermfg=Yellow guifg=Yellow"), ++ CENT("CursorLineNr term=bold ctermfg=Yellow", ++ "CursorLineNr term=bold ctermfg=Yellow gui=bold guifg=Yellow"), + CENT("MoreMsg term=bold ctermfg=LightGreen", + "MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen"), + CENT("Question term=standout ctermfg=LightGreen", +*** ../vim-7.3.478/src/vim.h 2012-03-07 19:16:49.000000000 +0100 +--- src/vim.h 2012-03-23 15:44:57.000000000 +0100 +*************** +*** 1318,1323 **** +--- 1318,1324 ---- + , HLF_M /* "--More--" message */ + , HLF_CM /* Mode (e.g., "-- INSERT --") */ + , HLF_N /* line number for ":number" and ":#" commands */ ++ , HLF_CLN /* current line number */ + , HLF_R /* return to continue message and yes/no questions */ + , HLF_S /* status lines */ + , HLF_SNC /* status lines of not-current windows */ +*************** +*** 1355,1361 **** + /* The HL_FLAGS must be in the same order as the HLF_ enums! + * When changing this also adjust the default for 'highlight'. */ + #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \ +! 'n', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \ + 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \ + 'B', 'P', 'R', 'L', \ + '+', '=', 'x', 'X', '*', '#', '_', '!', '.', 'o'} +--- 1356,1362 ---- + /* The HL_FLAGS must be in the same order as the HLF_ enums! + * When changing this also adjust the default for 'highlight'. */ + #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \ +! 'n', 'N', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \ + 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \ + 'B', 'P', 'R', 'L', \ + '+', '=', 'x', 'X', '*', '#', '_', '!', '.', 'o'} +*** ../vim-7.3.478/src/version.c 2012-03-23 15:36:57.000000000 +0100 +--- src/version.c 2012-03-23 16:16:41.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 479, + /**/ + +-- +If you're sending someone Styrofoam, what do you pack it in? + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.480 b/source/ap/vim/patches/7.3.480 new file mode 100644 index 00000000..6d1e21de --- /dev/null +++ b/source/ap/vim/patches/7.3.480 @@ -0,0 +1,237 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.480 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.480 +Problem: When using ":qa" and there is a changed buffer picking the buffer + to jump to is not very good. +Solution: Consider current and other tab pages. (Hirohito Higashi) +Files: src/ex_cmds2.c + + +*** ../vim-7.3.479/src/ex_cmds2.c 2012-02-22 18:29:29.000000000 +0100 +--- src/ex_cmds2.c 2012-03-23 17:01:31.000000000 +0100 +*************** +*** 1569,1574 **** +--- 1569,1594 ---- + || forceit); + } + ++ static void add_bufnum __ARGS((int *bufnrs, int *bufnump, int nr)); ++ ++ /* ++ * Add a buffer number to "bufnrs", unless it's already there. ++ */ ++ static void ++ add_bufnum(bufnrs, bufnump, nr) ++ int *bufnrs; ++ int *bufnump; ++ int nr; ++ { ++ int i; ++ ++ for (i = 0; i < *bufnump; ++i) ++ if (bufnrs[i] == nr) ++ return; ++ bufnrs[*bufnump] = nr; ++ *bufnump = *bufnump + 1; ++ } ++ + /* + * Return TRUE if any buffer was changed and cannot be abandoned. + * That changed buffer becomes the current buffer. +*************** +*** 1577,1608 **** + check_changed_any(hidden) + int hidden; /* Only check hidden buffers */ + { + buf_T *buf; + int save; + #ifdef FEAT_WINDOWS + win_T *wp; + #endif + +! for (;;) + { +! /* check curbuf first: if it was changed we can't abandon it */ +! if (!hidden && curbufIsChanged()) +! buf = curbuf; +! else + { +! for (buf = firstbuf; buf != NULL; buf = buf->b_next) +! if ((!hidden || buf->b_nwindows == 0) && bufIsChanged(buf)) +! break; + } +- if (buf == NULL) /* No buffers changed */ +- return FALSE; +- +- /* Try auto-writing the buffer. If this fails but the buffer no +- * longer exists it's not changed, that's OK. */ +- if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf)) +- break; /* didn't save - still changes */ + } + + exiting = FALSE; + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + /* +--- 1597,1660 ---- + check_changed_any(hidden) + int hidden; /* Only check hidden buffers */ + { ++ int ret = FALSE; + buf_T *buf; + int save; ++ int i; ++ int bufnum = 0; ++ int bufcount = 0; ++ int *bufnrs; + #ifdef FEAT_WINDOWS ++ tabpage_T *tp; + win_T *wp; + #endif + +! for (buf = firstbuf; buf != NULL; buf = buf->b_next) +! ++bufcount; +! +! if (bufcount == 0) +! return FALSE; +! +! bufnrs = (int *)alloc(sizeof(int) * bufcount); +! if (bufnrs == NULL) +! return FALSE; +! +! /* curbuf */ +! bufnrs[bufnum++] = curbuf->b_fnum; +! #ifdef FEAT_WINDOWS +! /* buf in curtab */ +! FOR_ALL_WINDOWS(wp) +! if (wp->w_buffer != curbuf) +! add_bufnum(bufnrs, &bufnum, wp->w_buffer->b_fnum); +! +! /* buf in other tab */ +! for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! if (tp != curtab) +! for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next) +! add_bufnum(bufnrs, &bufnum, wp->w_buffer->b_fnum); +! #endif +! /* any other buf */ +! for (buf = firstbuf; buf != NULL; buf = buf->b_next) +! add_bufnum(bufnrs, &bufnum, buf->b_fnum); +! +! for (i = 0; i < bufnum; ++i) + { +! buf = buflist_findnr(bufnrs[i]); +! if (buf == NULL) +! continue; +! if ((!hidden || buf->b_nwindows == 0) && bufIsChanged(buf)) + { +! /* Try auto-writing the buffer. If this fails but the buffer no +! * longer exists it's not changed, that's OK. */ +! if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf)) +! break; /* didn't save - still changes */ + } + } + ++ if (i >= bufnum) ++ goto theend; ++ ++ ret = TRUE; + exiting = FALSE; + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + /* +*************** +*** 1635,1658 **** + #ifdef FEAT_WINDOWS + /* Try to find a window that contains the buffer. */ + if (buf != curbuf) +! for (wp = firstwin; wp != NULL; wp = wp->w_next) + if (wp->w_buffer == buf) + { +! win_goto(wp); + # ifdef FEAT_AUTOCMD + /* Paranoia: did autocms wipe out the buffer with changes? */ + if (!buf_valid(buf)) +! return TRUE; + # endif +! break; + } + #endif + + /* Open the changed buffer in the current window. */ + if (buf != curbuf) + set_curbuf(buf, DOBUF_GOTO); + +! return TRUE; + } + + /* +--- 1687,1715 ---- + #ifdef FEAT_WINDOWS + /* Try to find a window that contains the buffer. */ + if (buf != curbuf) +! FOR_ALL_TAB_WINDOWS(tp, wp) + if (wp->w_buffer == buf) + { +! goto_tabpage_win(tp, wp); + # ifdef FEAT_AUTOCMD + /* Paranoia: did autocms wipe out the buffer with changes? */ + if (!buf_valid(buf)) +! { +! goto theend; +! } + # endif +! goto buf_found; + } ++ buf_found: + #endif + + /* Open the changed buffer in the current window. */ + if (buf != curbuf) + set_curbuf(buf, DOBUF_GOTO); + +! theend: +! vim_free(bufnrs); +! return ret; + } + + /* +*************** +*** 3274,3280 **** + home_replace(NULL, SCRIPT_ITEM(i).sn_name, + NameBuff, MAXPATHL, TRUE); + smsg((char_u *)"%3d: %s", i, NameBuff); +! } + } + + # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO) +--- 3331,3337 ---- + home_replace(NULL, SCRIPT_ITEM(i).sn_name, + NameBuff, MAXPATHL, TRUE); + smsg((char_u *)"%3d: %s", i, NameBuff); +! } + } + + # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO) +*** ../vim-7.3.479/src/version.c 2012-03-23 16:25:13.000000000 +0100 +--- src/version.c 2012-03-23 16:48:06.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 480, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +243. You unsuccessfully try to download a pizza from www.dominos.com. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.481 b/source/ap/vim/patches/7.3.481 new file mode 100644 index 00000000..69f69158 --- /dev/null +++ b/source/ap/vim/patches/7.3.481 @@ -0,0 +1,65 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.481 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.481 +Problem: Changing 'virtualedit' in an operator function to "all" does not + have the desired effect. (Aaron Bohannon) +Solution: Save, reset and restore virtual_op when executing an operator + function. +Files: src/normal.c + + +*** ../vim-7.3.480/src/normal.c 2012-02-05 01:18:41.000000000 +0100 +--- src/normal.c 2012-03-28 12:59:46.000000000 +0200 +*************** +*** 2279,2284 **** +--- 2279,2285 ---- + { + #ifdef FEAT_EVAL + char_u *(argv[1]); ++ int save_virtual_op = virtual_op; + + if (*p_opfunc == NUL) + EMSG(_("E774: 'operatorfunc' is empty")); +*************** +*** 2297,2303 **** +--- 2298,2311 ---- + argv[0] = (char_u *)"line"; + else + argv[0] = (char_u *)"char"; ++ ++ /* Reset virtual_op so that 'virtualedit' can be changed in the ++ * function. */ ++ virtual_op = MAYBE; ++ + (void)call_func_retnr(p_opfunc, 1, argv, FALSE); ++ ++ virtual_op = save_virtual_op; + } + #else + EMSG(_("E775: Eval feature not available")); +*** ../vim-7.3.480/src/version.c 2012-03-23 18:39:10.000000000 +0100 +--- src/version.c 2012-03-28 12:50:20.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 481, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +269. You wonder how you can make your dustbin produce Sesame Street's + Oscar's the Garbage Monster song when you empty it. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.482 b/source/ap/vim/patches/7.3.482 new file mode 100644 index 00000000..56ff3017 --- /dev/null +++ b/source/ap/vim/patches/7.3.482 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.482 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.482 +Problem: With 'cursorbind' set moving up/down does not always keep the same + column. +Solution: Set curswant appropriately. (Gary Johnson) +Files: src/move.c + + +*** ../vim-7.3.481/src/move.c 2012-03-16 19:24:21.000000000 +0100 +--- src/move.c 2012-03-28 14:16:02.000000000 +0200 +*************** +*** 2847,2852 **** +--- 2847,2854 ---- + # ifdef FEAT_VIRTUALEDIT + colnr_T coladd = curwin->w_cursor.coladd; + # endif ++ colnr_T curswant = curwin->w_curswant; ++ int set_curswant = curwin->w_set_curswant; + win_T *old_curwin = curwin; + buf_T *old_curbuf = curbuf; + int restart_edit_save; +*************** +*** 2881,2886 **** +--- 2883,2890 ---- + # ifdef FEAT_VIRTUALEDIT + curwin->w_cursor.coladd = coladd; + # endif ++ curwin->w_curswant = curswant; ++ curwin->w_set_curswant = set_curswant; + + /* Make sure the cursor is in a valid position. Temporarily set + * "restart_edit" to allow the cursor to be beyond the EOL. */ +*** ../vim-7.3.481/src/version.c 2012-03-28 12:59:53.000000000 +0200 +--- src/version.c 2012-03-28 14:15:56.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 482, + /**/ + +-- +Women are probably the main cause of free software starvation. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.483 b/source/ap/vim/patches/7.3.483 new file mode 100644 index 00000000..bab488b4 --- /dev/null +++ b/source/ap/vim/patches/7.3.483 @@ -0,0 +1,97 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.483 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.483 (after 7.3.477) +Problem: More prompt shows up too often. +Solution: Instead of adding a line break, only start a new line in the + message history. (Christian Brabandt) +Files: src/eval.c, src/message.c, src/proto/message.pro + + +*** ../vim-7.3.482/src/eval.c 2012-03-23 15:36:57.000000000 +0100 +--- src/eval.c 2012-03-28 16:41:03.000000000 +0200 +*************** +*** 20493,20501 **** + * may cause a message to appear. */ + if (eap->cmdidx == CMD_echo) + { +! /* Put the output below the command, makes scrolling back +! * at more prompt work. */ +! msg_didout = TRUE; + msg_start(); + } + } +--- 20493,20502 ---- + * may cause a message to appear. */ + if (eap->cmdidx == CMD_echo) + { +! /* Mark the saved text as finishing the line, so that what +! * follows is displayed on a new line when scrolling back +! * at the more prompt. */ +! msg_sb_eol(); + msg_start(); + } + } +*** ../vim-7.3.482/src/message.c 2012-01-26 13:01:54.000000000 +0100 +--- src/message.c 2012-03-28 16:35:26.000000000 +0200 +*************** +*** 2348,2353 **** +--- 2348,2363 ---- + } + + /* ++ * Mark the last message chunk as finishing the line. ++ */ ++ void ++ msg_sb_eol() ++ { ++ if (last_msgchunk != NULL) ++ last_msgchunk->sb_eol = TRUE; ++ } ++ ++ /* + * Display a screen line from previously displayed text at row "row". + * Returns a pointer to the text for the next line (can be NULL). + */ +*** ../vim-7.3.482/src/proto/message.pro 2012-01-20 20:44:38.000000000 +0100 +--- src/proto/message.pro 2012-03-28 16:35:33.000000000 +0200 +*************** +*** 45,50 **** +--- 45,51 ---- + void may_clear_sb_text __ARGS((void)); + void clear_sb_text __ARGS((void)); + void show_sb_text __ARGS((void)); ++ void msg_sb_eol __ARGS((void)); + int msg_use_printf __ARGS((void)); + void mch_errmsg __ARGS((char *str)); + void mch_msg __ARGS((char *str)); +*** ../vim-7.3.482/src/version.c 2012-03-28 14:19:46.000000000 +0200 +--- src/version.c 2012-03-28 16:48:53.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 483, + /**/ + +-- + We're knights of the Round Table + Our shows are formidable + But many times + We're given rhymes + That are quite unsingable + We're opera mad in Camelot + We sing from the diaphragm a lot. + "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 /// diff --git a/source/ap/vim/patches/7.3.484 b/source/ap/vim/patches/7.3.484 new file mode 100644 index 00000000..99968eb2 --- /dev/null +++ b/source/ap/vim/patches/7.3.484 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.484 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.484 +Problem: The -E and --echo-wid command line arguments are not mentioned in + "vim --help". +Solution: Add the help lines. (Dominique Pelle) +Files: src/main.c + + +*** ../vim-7.3.483/src/main.c 2012-02-12 01:55:50.000000000 +0100 +--- src/main.c 2012-03-28 16:55:03.000000000 +0200 +*************** +*** 3181,3186 **** +--- 3181,3187 ---- + #endif + main_msg(_("-v\t\t\tVi mode (like \"vi\")")); + main_msg(_("-e\t\t\tEx mode (like \"ex\")")); ++ main_msg(_("-E\t\t\tImproved Ex mode")); + main_msg(_("-s\t\t\tSilent (batch) mode (only for \"ex\")")); + #ifdef FEAT_DIFF + main_msg(_("-d\t\t\tDiff mode (like \"vimdiff\")")); +*************** +*** 3304,3309 **** +--- 3305,3311 ---- + main_msg(_("-display <display>\tRun vim on <display> (also: --display)")); + main_msg(_("--role <role>\tSet a unique role to identify the main window")); + main_msg(_("--socketid <xid>\tOpen Vim inside another GTK widget")); ++ main_msg(_("--echo-wid\t\tMake gvim echo the Window ID on stdout")); + #endif + #ifdef FEAT_GUI_W32 + main_msg(_("-P <parent title>\tOpen Vim inside parent application")); +*** ../vim-7.3.483/src/version.c 2012-03-28 16:49:25.000000000 +0200 +--- src/version.c 2012-03-28 17:10:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 484, + /**/ + +-- + In war we're tough and able. + Quite indefatigable + Between our quests + We sequin vests + And impersonate Clark Gable + It's a busy life in Camelot. + I have to push the pram a lot. + "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 /// diff --git a/source/ap/vim/patches/7.3.485 b/source/ap/vim/patches/7.3.485 new file mode 100644 index 00000000..46b4cb73 --- /dev/null +++ b/source/ap/vim/patches/7.3.485 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.485 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.485 +Problem: When building Vim LDFLAGS isn't passed on to building xxd. +Solution: Pass the LDFLAGS value. (James McCoy) +Files: src/Makefile + + +*** ../vim-7.3.484/src/Makefile 2011-12-14 20:51:19.000000000 +0100 +--- src/Makefile 2012-03-28 17:16:06.000000000 +0200 +*************** +*** 1720,1726 **** + sh $(srcdir)/link.sh + + xxd/xxd$(EXEEXT): xxd/xxd.c +! cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \ + $(MAKE) -f Makefile + + # Build the language specific files if they were unpacked. +--- 1720,1726 ---- + sh $(srcdir)/link.sh + + xxd/xxd$(EXEEXT): xxd/xxd.c +! cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ + $(MAKE) -f Makefile + + # Build the language specific files if they were unpacked. +*** ../vim-7.3.484/src/version.c 2012-03-28 17:10:26.000000000 +0200 +--- src/version.c 2012-03-28 17:16:15.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 485, + /**/ + +-- +GOD: That is your purpose Arthur ... the Quest for the Holy Grail ... + "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 /// diff --git a/source/ap/vim/patches/7.3.486 b/source/ap/vim/patches/7.3.486 new file mode 100644 index 00000000..44e2afe8 --- /dev/null +++ b/source/ap/vim/patches/7.3.486 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.486 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.486 +Problem: Build error with mingw64 on Windows 7. +Solution: Avoid the step of going through vimres.res. (Guopeng Wen) +Files: src/Make_ming.mak + + +*** ../vim-7.3.485/src/Make_ming.mak 2012-02-29 16:56:35.000000000 +0100 +--- src/Make_ming.mak 2012-03-28 17:41:55.000000000 +0200 +*************** +*** 681,691 **** + $(OUTDIR)/%.o : %.c $(INCL) + $(CC) -c $(CFLAGS) $< -o $@ + +! $(OUTDIR)/vimres.res: vim.rc version.h gui_w32_rc.h +! $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) vim.rc $(OUTDIR)/vimres.res +! +! $(OUTDIR)/vimrc.o: $(OUTDIR)/vimres.res +! $(WINDRES) $(WINDRES_FLAGS) $(OUTDIR)/vimres.res $(OUTDIR)/vimrc.o + + $(OUTDIR): + $(MKDIR) $(OUTDIR) +--- 681,689 ---- + $(OUTDIR)/%.o : %.c $(INCL) + $(CC) -c $(CFLAGS) $< -o $@ + +! $(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h +! $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \ +! --input-format=rc --output-format=coff -i vim.rc -o $@ + + $(OUTDIR): + $(MKDIR) $(OUTDIR) +*** ../vim-7.3.485/src/version.c 2012-03-28 17:17:45.000000000 +0200 +--- src/version.c 2012-03-28 17:42:25.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 486, + /**/ + +-- +There is a fine line between courage and foolishness. +Unfortunately, it's not a fence. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.487 b/source/ap/vim/patches/7.3.487 new file mode 100644 index 00000000..3c00349b --- /dev/null +++ b/source/ap/vim/patches/7.3.487 @@ -0,0 +1,572 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.487 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.487 +Problem: When setting 'timeoutlen' or 'ttimeoutlen' the column for vertical + movement is reset unnecessarily. +Solution: Do not set w_set_curswant for every option. Add a test for this. + (Kana Natsuno) Add the P_CURSWANT flag for options. +Files: src/option.c, src/testdir/test84.in, src/testdir/test84.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + + +*** ../vim-7.3.486/src/option.c 2012-03-23 16:25:13.000000000 +0100 +--- src/option.c 2012-03-28 19:57:46.000000000 +0200 +*************** +*** 433,449 **** + #define P_RCLR 0x7000 /* clear and redraw all */ + + #define P_COMMA 0x8000 /* comma separated list */ +! #define P_NODUP 0x10000L/* don't allow duplicate strings */ +! #define P_FLAGLIST 0x20000L/* list of single-char flags */ + +! #define P_SECURE 0x40000L/* cannot change in modeline or secure mode */ +! #define P_GETTEXT 0x80000L/* expand default value with _() */ +! #define P_NOGLOB 0x100000L/* do not use local value for global vimrc */ +! #define P_NFNAME 0x200000L/* only normal file name chars allowed */ +! #define P_INSECURE 0x400000L/* option was set from a modeline */ +! #define P_PRI_MKRC 0x800000L/* priority for :mkvimrc (setting option has + side effects) */ +! #define P_NO_ML 0x1000000L/* not allowed in modeline */ + + #define ISK_LATIN1 (char_u *)"@,48-57,_,192-255" + +--- 433,451 ---- + #define P_RCLR 0x7000 /* clear and redraw all */ + + #define P_COMMA 0x8000 /* comma separated list */ +! #define P_NODUP 0x10000L /* don't allow duplicate strings */ +! #define P_FLAGLIST 0x20000L /* list of single-char flags */ + +! #define P_SECURE 0x40000L /* cannot change in modeline or secure mode */ +! #define P_GETTEXT 0x80000L /* expand default value with _() */ +! #define P_NOGLOB 0x100000L /* do not use local value for global vimrc */ +! #define P_NFNAME 0x200000L /* only normal file name chars allowed */ +! #define P_INSECURE 0x400000L /* option was set from a modeline */ +! #define P_PRI_MKRC 0x800000L /* priority for :mkvimrc (setting option has + side effects) */ +! #define P_NO_ML 0x1000000L /* not allowed in modeline */ +! #define P_CURSWANT 0x2000000L /* update curswant required; not needed when +! * there is a redraw flag */ + + #define ISK_LATIN1 (char_u *)"@,48-57,_,192-255" + +*************** +*** 479,485 **** + #endif + options[] = + { +! {"aleph", "al", P_NUM|P_VI_DEF, + #ifdef FEAT_RIGHTLEFT + (char_u *)&p_aleph, PV_NONE, + #else +--- 481,487 ---- + #endif + options[] = + { +! {"aleph", "al", P_NUM|P_VI_DEF|P_CURSWANT, + #ifdef FEAT_RIGHTLEFT + (char_u *)&p_aleph, PV_NONE, + #else +*************** +*** 501,507 **** + {(char_u *)FALSE, (char_u *)FALSE} + #endif + SCRIPTID_INIT}, +! {"arabic", "arab", P_BOOL|P_VI_DEF|P_VIM, + #ifdef FEAT_ARABIC + (char_u *)VAR_WIN, PV_ARAB, + #else +--- 503,509 ---- + {(char_u *)FALSE, (char_u *)FALSE} + #endif + SCRIPTID_INIT}, +! {"arabic", "arab", P_BOOL|P_VI_DEF|P_VIM|P_CURSWANT, + #ifdef FEAT_ARABIC + (char_u *)VAR_WIN, PV_ARAB, + #else +*************** +*** 778,784 **** + {"columns", "co", P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR, + (char_u *)&Columns, PV_NONE, + {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT}, +! {"comments", "com", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP, + #ifdef FEAT_COMMENTS + (char_u *)&p_com, PV_COM, + {(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-", +--- 780,786 ---- + {"columns", "co", P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR, + (char_u *)&Columns, PV_NONE, + {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT}, +! {"comments", "com", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT, + #ifdef FEAT_COMMENTS + (char_u *)&p_com, PV_COM, + {(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-", +*************** +*** 788,794 **** + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF, + #ifdef FEAT_FOLDING + (char_u *)&p_cms, PV_CMS, + {(char_u *)"/*%s*/", (char_u *)0L} +--- 790,796 ---- + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT, + #ifdef FEAT_FOLDING + (char_u *)&p_cms, PV_CMS, + {(char_u *)"/*%s*/", (char_u *)0L} +*************** +*** 953,959 **** + {"debug", NULL, P_STRING|P_VI_DEF, + (char_u *)&p_debug, PV_NONE, + {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, +! {"define", "def", P_STRING|P_ALLOCED|P_VI_DEF, + #ifdef FEAT_FIND_ID + (char_u *)&p_def, PV_DEF, + {(char_u *)"^\\s*#\\s*define", (char_u *)0L} +--- 955,961 ---- + {"debug", NULL, P_STRING|P_VI_DEF, + (char_u *)&p_debug, PV_NONE, + {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, +! {"define", "def", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT, + #ifdef FEAT_FIND_ID + (char_u *)&p_def, PV_DEF, + {(char_u *)"^\\s*#\\s*define", (char_u *)0L} +*************** +*** 983,989 **** + (char_u *)NULL, PV_NONE, + #endif + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, +! {"diffexpr", "dex", P_STRING|P_VI_DEF|P_SECURE, + #if defined(FEAT_DIFF) && defined(FEAT_EVAL) + (char_u *)&p_dex, PV_NONE, + {(char_u *)"", (char_u *)0L} +--- 985,991 ---- + (char_u *)NULL, PV_NONE, + #endif + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, +! {"diffexpr", "dex", P_STRING|P_VI_DEF|P_SECURE|P_CURSWANT, + #if defined(FEAT_DIFF) && defined(FEAT_EVAL) + (char_u *)&p_dex, PV_NONE, + {(char_u *)"", (char_u *)0L} +*************** +*** 1099,1105 **** + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC, + (char_u *)&p_ff, PV_FF, + {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT}, + {"fileformats", "ffs", P_STRING|P_VIM|P_COMMA|P_NODUP, +--- 1101,1107 ---- + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC|P_CURSWANT, + (char_u *)&p_ff, PV_FF, + {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT}, + {"fileformats", "ffs", P_STRING|P_VIM|P_COMMA|P_NODUP, +*************** +*** 1159,1165 **** + {"foldlevel", "fdl", P_NUM|P_VI_DEF|P_RWIN, + (char_u *)VAR_WIN, PV_FDL, + {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, +! {"foldlevelstart","fdls", P_NUM|P_VI_DEF, + (char_u *)&p_fdls, PV_NONE, + {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT}, + {"foldmarker", "fmr", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF| +--- 1161,1167 ---- + {"foldlevel", "fdl", P_NUM|P_VI_DEF|P_RWIN, + (char_u *)VAR_WIN, PV_FDL, + {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, +! {"foldlevelstart","fdls", P_NUM|P_VI_DEF|P_CURSWANT, + (char_u *)&p_fdls, PV_NONE, + {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT}, + {"foldmarker", "fmr", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF| +*************** +*** 1176,1182 **** + {"foldnestmax", "fdn", P_NUM|P_VI_DEF|P_RWIN, + (char_u *)VAR_WIN, PV_FDN, + {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT}, +! {"foldopen", "fdo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, + (char_u *)&p_fdo, PV_NONE, + {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo", + (char_u *)0L} SCRIPTID_INIT}, +--- 1178,1184 ---- + {"foldnestmax", "fdn", P_NUM|P_VI_DEF|P_RWIN, + (char_u *)VAR_WIN, PV_FDN, + {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT}, +! {"foldopen", "fdo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT, + (char_u *)&p_fdo, PV_NONE, + {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo", + (char_u *)0L} SCRIPTID_INIT}, +*************** +*** 1741,1747 **** + {"matchtime", "mat", P_NUM|P_VI_DEF, + (char_u *)&p_mat, PV_NONE, + {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT}, +! {"maxcombine", "mco", P_NUM|P_VI_DEF, + #ifdef FEAT_MBYTE + (char_u *)&p_mco, PV_NONE, + #else +--- 1743,1749 ---- + {"matchtime", "mat", P_NUM|P_VI_DEF, + (char_u *)&p_mat, PV_NONE, + {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT}, +! {"maxcombine", "mco", P_NUM|P_VI_DEF|P_CURSWANT, + #ifdef FEAT_MBYTE + (char_u *)&p_mco, PV_NONE, + #else +*************** +*** 2710,2716 **** + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"virtualedit", "ve", P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM, + #ifdef FEAT_VIRTUALEDIT + (char_u *)&p_ve, PV_NONE, + {(char_u *)"", (char_u *)""} +--- 2712,2718 ---- + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"virtualedit", "ve", P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM|P_CURSWANT, + #ifdef FEAT_VIRTUALEDIT + (char_u *)&p_ve, PV_NONE, + {(char_u *)"", (char_u *)""} +*************** +*** 7064,7071 **** + } + #endif + +! if (curwin->w_curswant != MAXCOL) +! curwin->w_set_curswant = TRUE; /* in case 'showbreak' changed */ + #ifdef FEAT_GUI + /* check redraw when it's not a GUI option or the GUI is active. */ + if (!redraw_gui_only || gui.in_use) +--- 7066,7075 ---- + } + #endif + +! if (curwin->w_curswant != MAXCOL +! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0) +! curwin->w_set_curswant = TRUE; +! + #ifdef FEAT_GUI + /* check redraw when it's not a GUI option or the GUI is active. */ + if (!redraw_gui_only || gui.in_use) +*************** +*** 7587,7595 **** + || (int *)varp == &curwin->w_p_nu + || (int *)varp == &curwin->w_p_rnu) + { +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; +- + /* If 'number' is set, reset 'relativenumber'. */ + /* If 'relativenumber' is set, reset 'number'. */ + if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu) +--- 7591,7596 ---- +*************** +*** 7834,7841 **** + { + if (curwin->w_p_wrap) + curwin->w_leftcol = 0; +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; + } + + #ifdef FEAT_WINDOWS +--- 7835,7840 ---- +*************** +*** 8062,8092 **** + curbuf->b_p_imsearch = B_IMODE_USE_INSERT; + # endif + } +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; + } + +- else if ((int *)varp == &p_arshape) +- { +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; +- } +- #endif +- +- #ifdef FEAT_LINEBREAK +- if ((int *)varp == &curwin->w_p_lbr) +- { +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; +- } +- #endif +- +- #ifdef FEAT_RIGHTLEFT +- if ((int *)varp == &curwin->w_p_rl) +- { +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; +- } + #endif + + /* +--- 8061,8068 ---- +*************** +*** 8096,8102 **** + options[opt_idx].flags |= P_WAS_SET; + + comp_col(); /* in case 'ruler' or 'showcmd' changed */ +! + check_redraw(options[opt_idx].flags); + + return NULL; +--- 8072,8080 ---- + options[opt_idx].flags |= P_WAS_SET; + + comp_col(); /* in case 'ruler' or 'showcmd' changed */ +! if (curwin->w_curswant != MAXCOL +! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0) +! curwin->w_set_curswant = TRUE; + check_redraw(options[opt_idx].flags); + + return NULL; +*************** +*** 8611,8618 **** + options[opt_idx].flags |= P_WAS_SET; + + comp_col(); /* in case 'columns' or 'ls' changed */ +! if (curwin->w_curswant != MAXCOL) +! curwin->w_set_curswant = TRUE; /* in case 'tabstop' changed */ + check_redraw(options[opt_idx].flags); + + return errmsg; +--- 8589,8597 ---- + options[opt_idx].flags |= P_WAS_SET; + + comp_col(); /* in case 'columns' or 'ls' changed */ +! if (curwin->w_curswant != MAXCOL +! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0) +! curwin->w_set_curswant = TRUE; + check_redraw(options[opt_idx].flags); + + return errmsg; +*** ../vim-7.3.486/src/testdir/test84.in 2012-03-28 19:55:12.000000000 +0200 +--- src/testdir/test84.in 2012-03-28 19:46:53.000000000 +0200 +*************** +*** 0 **** +--- 1,35 ---- ++ Tests for curswant not changing when setting an option ++ ++ STARTTEST ++ :so small.vim ++ :/^start target options$/+1,/^end target options$/-1 yank ++ :let target_option_names = split(@0) ++ :function TestCurswant(option_name) ++ : normal! ggf8j ++ : let curswant_before = winsaveview().curswant ++ : execute 'let' '&'.a:option_name '=' '&'.a:option_name ++ : let curswant_after = winsaveview().curswant ++ : return [a:option_name, curswant_before, curswant_after] ++ :endfunction ++ : ++ :new ++ :put =['1234567890', '12345'] ++ :1 delete _ ++ :let result = [] ++ :for option_name in target_option_names ++ : call add(result, TestCurswant(option_name)) ++ :endfor ++ : ++ :new ++ :put =map(copy(result), 'join(v:val, '' '')') ++ :1 delete _ ++ :write test.out ++ : ++ :qall! ++ ENDTEST ++ ++ start target options ++ tabstop ++ timeoutlen ++ ttimeoutlen ++ end target options +*** ../vim-7.3.486/src/testdir/test84.ok 2012-03-28 19:55:12.000000000 +0200 +--- src/testdir/test84.ok 2012-03-28 19:48:36.000000000 +0200 +*************** +*** 0 **** +--- 1,3 ---- ++ tabstop 7 4 ++ timeoutlen 7 7 ++ ttimeoutlen 7 7 +*** ../vim-7.3.486/src/testdir/Make_amiga.mak 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Make_amiga.mak 2012-03-28 18:14:08.000000000 +0200 +*************** +*** 29,35 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out + + .SUFFIXES: .in .out + +--- 29,35 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out + + .SUFFIXES: .in .out + +*************** +*** 132,134 **** +--- 132,135 ---- + test81.out: test81.in + test82.out: test82.in + test83.out: test83.in ++ test84.out: test84.in +*** ../vim-7.3.486/src/testdir/Make_dos.mak 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Make_dos.mak 2012-03-28 18:14:41.000000000 +0200 +*************** +*** 29,35 **** + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out + + SCRIPTS32 = test50.out test70.out + +--- 29,36 ---- + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.486/src/testdir/Make_ming.mak 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Make_ming.mak 2012-03-28 18:14:46.000000000 +0200 +*************** +*** 49,55 **** + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out + + SCRIPTS32 = test50.out test70.out + +--- 49,56 ---- + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.486/src/testdir/Make_os2.mak 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Make_os2.mak 2012-03-28 18:15:00.000000000 +0200 +*************** +*** 29,35 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out + + .SUFFIXES: .in .out + +--- 29,35 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out + + .SUFFIXES: .in .out + +*** ../vim-7.3.486/src/testdir/Make_vms.mms 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Make_vms.mms 2012-03-28 18:15:15.000000000 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2011 Jul 15 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2012 Mar 28 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 76,82 **** + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 76,82 ---- + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out test84.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.486/src/testdir/Makefile 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Makefile 2012-03-28 18:15:29.000000000 +0200 +*************** +*** 26,32 **** + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out + + SCRIPTS_GUI = test16.out + +--- 26,33 ---- + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.486/src/version.c 2012-03-28 17:43:06.000000000 +0200 +--- src/version.c 2012-03-28 19:49:41.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 487, + /**/ + +-- +"Time flies like an arrow". So I put an arrow on my desk, now +awaiting one of these time flies showing up. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.488 b/source/ap/vim/patches/7.3.488 new file mode 100644 index 00000000..e0787404 --- /dev/null +++ b/source/ap/vim/patches/7.3.488 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.488 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.488 +Problem: ":help!" in a help file does not work as document. +Solution: When in a help file don't give an error message. (thinca) +Files: src/ex_cmds.c + + +*** ../vim-7.3.487/src/ex_cmds.c 2012-03-16 14:32:10.000000000 +0100 +--- src/ex_cmds.c 2012-04-01 14:25:35.000000000 +0200 +*************** +*** 5546,5552 **** + } + arg = eap->arg; + +! if (eap->forceit && *arg == NUL) + { + EMSG(_("E478: Don't panic!")); + return; +--- 5546,5552 ---- + } + arg = eap->arg; + +! if (eap->forceit && *arg == NUL && !curbuf->b_help) + { + EMSG(_("E478: Don't panic!")); + return; +*** ../vim-7.3.487/src/version.c 2012-03-28 19:58:34.000000000 +0200 +--- src/version.c 2012-04-05 16:04:13.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 488, + /**/ + + +-- +I'd like to meet the man who invented sex and see what he's working on now. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.489 b/source/ap/vim/patches/7.3.489 new file mode 100644 index 00000000..fbdf2c39 --- /dev/null +++ b/source/ap/vim/patches/7.3.489 @@ -0,0 +1,89 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.489 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.489 +Problem: CTRL-] in Insert mode does not expand abbreviation when used in a + mapping. (Yichao Zhou) +Solution: Special case using CTRL-]. (Christian Brabandt) +Files: src/getchar.c, src/edit.c + + +*** ../vim-7.3.488/src/getchar.c 2012-02-05 22:05:44.000000000 +0100 +--- src/getchar.c 2012-04-05 15:54:00.000000000 +0200 +*************** +*** 4352,4359 **** + + if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */ + return FALSE; +! if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0) +! /* no remapping implies no abbreviation */ + return FALSE; + + /* +--- 4352,4360 ---- + + if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */ + return FALSE; +! +! /* no remapping implies no abbreviation, except for CTRL-] */ +! if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0 && c != Ctrl_RSB) + return FALSE; + + /* +*** ../vim-7.3.488/src/edit.c 2012-02-29 18:22:03.000000000 +0100 +--- src/edit.c 2012-04-05 15:57:46.000000000 +0200 +*************** +*** 1455,1467 **** + Insstart_blank_vcol = get_nolist_virtcol(); + } + +! if (vim_iswordc(c) || !echeck_abbr( + #ifdef FEAT_MBYTE + /* Add ABBR_OFF for characters above 0x100, this is + * what check_abbr() expects. */ + (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) : + #endif +! c)) + { + insert_special(c, FALSE, FALSE); + #ifdef FEAT_RIGHTLEFT +--- 1455,1470 ---- + Insstart_blank_vcol = get_nolist_virtcol(); + } + +! /* Insert a normal character and check for abbreviations on a +! * special character. Let CTRL-] expand abbreviations without +! * inserting it. */ +! if (vim_iswordc(c) || (!echeck_abbr( + #ifdef FEAT_MBYTE + /* Add ABBR_OFF for characters above 0x100, this is + * what check_abbr() expects. */ + (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) : + #endif +! c) && c != Ctrl_RSB)) + { + insert_special(c, FALSE, FALSE); + #ifdef FEAT_RIGHTLEFT +*** ../vim-7.3.488/src/version.c 2012-04-05 16:04:58.000000000 +0200 +--- src/version.c 2012-04-05 16:06:12.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 489, + /**/ + +-- +Just think of all the things we haven't thought of yet. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.490 b/source/ap/vim/patches/7.3.490 new file mode 100644 index 00000000..6c49a48d --- /dev/null +++ b/source/ap/vim/patches/7.3.490 @@ -0,0 +1,2517 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.490 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.490 +Problem: Member confusion in Lua interface. +Solution: Fix it. Add luaeval(). (Taro Muraoka, Luis Carvalho) +Files: runtime/doc/if_lua.txt, src/eval.c, src/if_lua.c, + src/proto/if_lua.pro + + +*** ../vim-7.3.489/runtime/doc/if_lua.txt 2010-08-15 21:57:14.000000000 +0200 +--- runtime/doc/if_lua.txt 2012-04-05 16:41:35.000000000 +0200 +*************** +*** 1,4 **** +! *if_lua.txt* For Vim version 7.3. Last change: 2010 Jul 22 + + + VIM REFERENCE MANUAL by Luis Carvalho +--- 1,4 ---- +! *if_lua.txt* For Vim version 7.3. Last change: 2012 Jan 16 + + + VIM REFERENCE MANUAL by Luis Carvalho +*************** +*** 8,15 **** + + 1. Commands |lua-commands| + 2. The vim module |lua-vim| +! 3. Buffer userdata |lua-buffer| +! 4. Window userdata |lua-window| + + {Vi does not have any of these commands} + +--- 8,18 ---- + + 1. Commands |lua-commands| + 2. The vim module |lua-vim| +! 3. List userdata |lua-list| +! 4. Dict userdata |lua-dict| +! 5. Buffer userdata |lua-buffer| +! 6. Window userdata |lua-window| +! 7. The luaeval function |lua-luaeval| + + {Vi does not have any of these commands} + +*************** +*** 88,98 **** + All these commands execute a Lua chunk from either the command line (:lua and + :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua + interpreter, each chunk has its own scope and so only global variables are +! shared between command calls. Lua default libraries "table", "string", "math", +! and "package" are available, "io" and "debug" are not, and "os" is restricted +! to functions "date", "clock", "time", "difftime", and "getenv". In addition, +! Lua "print" function has its output redirected to the Vim message area, with +! arguments separated by a white space instead of a tab. + + Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim + and manage buffers (|lua-buffer|) and windows (|lua-window|). However, +--- 91,99 ---- + All these commands execute a Lua chunk from either the command line (:lua and + :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua + interpreter, each chunk has its own scope and so only global variables are +! shared between command calls. All Lua default libraries are available. In +! addition, Lua "print" function has its output redirected to the Vim message +! area, with arguments separated by a white space instead of a tab. + + Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim + and manage buffers (|lua-buffer|) and windows (|lua-window|). However, +*************** +*** 108,116 **** + module also includes routines for buffer, window, and current line queries, + Vim evaluation and command execution, and others. + +! vim.isbuffer(value) Returns 'true' (boolean, not string) if +! "value" is a buffer userdata and 'false' +! otherwise (see |lua-buffer|). + + vim.buffer([arg]) If "arg" is a number, returns buffer with + number "arg" in the buffer list or, if "arg" +--- 109,117 ---- + module also includes routines for buffer, window, and current line queries, + Vim evaluation and command execution, and others. + +! vim.list() Returns an empty list (see |List|). +! +! vim.dict() Returns an empty dictionary (see |Dictionary|). + + vim.buffer([arg]) If "arg" is a number, returns buffer with + number "arg" in the buffer list or, if "arg" +*************** +*** 121,136 **** + 'true' returns the first buffer in the buffer + list or else the current buffer. + +- vim.iswindow(value) Returns 'true' (boolean, not string) if +- "value" is a window userdata and +- 'false' otherwise (see |lua-window|). +- + vim.window([arg]) If "arg" is a number, returns window with + number "arg" or 'nil' (nil value, not string) + if not found. Otherwise, if "toboolean(arg)" + is 'true' returns the first window or else the + current window. + + vim.command({cmd}) Executes the vim (ex-mode) command {cmd}. + Examples: > + :lua vim.command"set tw=60" +--- 122,142 ---- + 'true' returns the first buffer in the buffer + list or else the current buffer. + + vim.window([arg]) If "arg" is a number, returns window with + number "arg" or 'nil' (nil value, not string) + if not found. Otherwise, if "toboolean(arg)" + is 'true' returns the first window or else the + current window. + ++ vim.type({arg}) Returns the type of {arg}. It is equivalent to ++ Lua's "type" function, but returns "list", ++ "dict", "buffer", or "window" if {arg} is a ++ list, dictionary, buffer, or window, ++ respectively. Examples: > ++ :lua l = vim.list() ++ :lua print(type(l), vim.type(l)) ++ :" userdata list ++ < + vim.command({cmd}) Executes the vim (ex-mode) command {cmd}. + Examples: > + :lua vim.command"set tw=60" +*************** +*** 141,147 **** + Vim strings and numbers are directly converted + to Lua strings and numbers respectively. Vim + lists and dictionaries are converted to Lua +! tables (lists become integer-keyed tables). + Examples: > + :lua tw = vim.eval"&tw" + :lua print(vim.eval"{'a': 'one'}".a) +--- 147,153 ---- + Vim strings and numbers are directly converted + to Lua strings and numbers respectively. Vim + lists and dictionaries are converted to Lua +! userdata (see |lua-list| and |lua-dict|). + Examples: > + :lua tw = vim.eval"&tw" + :lua print(vim.eval"{'a': 'one'}".a) +*************** +*** 157,163 **** + + + ============================================================================== +! 3. Buffer userdata *lua-buffer* + + Buffer userdata represent vim buffers. A buffer userdata "b" has the following + properties and methods: +--- 163,234 ---- + + + ============================================================================== +! 3. List userdata *lua-list* +! +! List userdata represent vim lists, and the interface tries to follow closely +! Vim's syntax for lists. Since lists are objects, changes in list references in +! Lua are reflected in Vim and vice-versa. A list "l" has the following +! properties and methods: +! +! Properties +! ---------- +! o "#l" is the number of items in list "l", equivalent to "len(l)" +! in Vim. +! o "l[k]" returns the k-th item in "l"; "l" is zero-indexed, as in Vim. +! To modify the k-th item, simply do "l[k] = newitem"; in +! particular, "l[k] = nil" removes the k-th item from "l". +! o "l()" returns an iterator for "l". +! +! Methods +! ------- +! o "l:add(item)" appends "item" to the end of "l". +! o "l:insert(item[, pos])" inserts "item" at (optional) +! position "pos" in the list. The default value for "pos" is 0. +! +! Examples: +! > +! :let l = [1, 'item'] +! :lua l = vim.eval('l') -- same 'l' +! :lua l:add(vim.list()) +! :lua l[0] = math.pi +! :echo l[0] " 3.141593 +! :lua l[0] = nil -- remove first item +! :lua l:insert(true, 1) +! :lua print(l, #l, l[0], l[1], l[-1]) +! :lua for item in l() do print(item) end +! < +! +! ============================================================================== +! 4. Dict userdata *lua-dict* +! +! Similarly to list userdata, dict userdata represent vim dictionaries; since +! dictionaries are also objects, references are kept between Lua and Vim. A dict +! "d" has the following properties: +! +! Properties +! ---------- +! o "#d" is the number of items in dict "d", equivalent to "len(d)" +! in Vim. +! o "d.key" or "d['key']" returns the value at entry "key" in "d". +! To modify the entry at this key, simply do "d.key = newvalue"; in +! particular, "d.key = nil" removes the entry from "d". +! o "d()" returns an iterator for "d" and is equivalent to "items(d)" in +! Vim. +! +! Examples: +! > +! :let d = {'n':10} +! :lua d = vim.eval('d') -- same 'd' +! :lua print(d, d.n, #d) +! :let d.self = d +! :lua for k, v in d() do print(d, k, v) end +! :lua d.x = math.pi +! :lua d.self = nil -- remove entry +! :echo d +! < +! +! ============================================================================== +! 5. Buffer userdata *lua-buffer* + + Buffer userdata represent vim buffers. A buffer userdata "b" has the following + properties and methods: +*************** +*** 209,215 **** + < + + ============================================================================== +! 4. Window userdata *lua-window* + + Window objects represent vim windows. A window userdata "w" has the following + properties and methods: +--- 280,286 ---- + < + + ============================================================================== +! 6. Window userdata *lua-window* + + Window objects represent vim windows. A window userdata "w" has the following + properties and methods: +*************** +*** 241,244 **** + < + + ============================================================================== +! vim:tw=78:ts=8:ft=help:norl: +--- 312,340 ---- + < + + ============================================================================== +! 7. The luaeval function *lua-luaeval* +! +! The (dual) equivalent of "vim.eval" for passing Lua values to Vim is +! "luaeval". "luaeval" takes an expression string and an optional argument and +! returns the result of the expression. It is semantically equivalent in Lua to: +! > +! local chunkheader = "local _A = select(1, ...) return " +! function luaeval (expstr, arg) +! local chunk = assert(loadstring(chunkheader .. expstr, "luaeval")) +! return chunk(arg) -- return typval +! end +! < +! Note that "_A" receives the argument to "luaeval". Examples: > +! +! :echo luaeval('math.pi') +! :lua a = vim.list():add('newlist') +! :let a = luaeval('a') +! :echo a[0] " 'newlist' +! :function Rand(x,y) " random uniform between x and y +! : return luaeval('(_A.y-_A.x)*math.random()+_A.x', {'x':a:x,'y':a:y}) +! : endfunction +! :echo Rand(1,10) +! +! +! ============================================================================== +! vim:tw=78:ts=8:noet:ft=help:norl: +*** ../vim-7.3.489/src/eval.c 2012-03-28 16:49:25.000000000 +0200 +--- src/eval.c 2012-04-05 16:41:35.000000000 +0200 +*************** +*** 622,627 **** +--- 622,630 ---- + static void f_log __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_log10 __ARGS((typval_T *argvars, typval_T *rettv)); + #endif ++ #ifdef FEAT_LUA ++ static void f_luaeval __ARGS((typval_T *argvars, typval_T *rettv)); ++ #endif + static void f_map __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_maparg __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 6777,6782 **** +--- 6780,6789 ---- + /* v: vars */ + set_ref_in_ht(&vimvarht, copyID); + ++ #ifdef FEAT_LUA ++ set_ref_in_lua(copyID); ++ #endif ++ + /* + * 2. Free lists and dictionaries that are not referenced. + */ +*************** +*** 7946,7951 **** +--- 7953,7961 ---- + {"log", 1, 1, f_log}, + {"log10", 1, 1, f_log10}, + #endif ++ #ifdef FEAT_LUA ++ {"luaeval", 1, 2, f_luaeval}, ++ #endif + {"map", 2, 2, f_map}, + {"maparg", 1, 4, f_maparg}, + {"mapcheck", 1, 3, f_mapcheck}, +*************** +*** 13626,13631 **** +--- 13636,13658 ---- + } + #endif + ++ #ifdef FEAT_LUA ++ /* ++ * "luaeval()" function ++ */ ++ static void ++ f_luaeval(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ char_u *str; ++ char_u buf[NUMBUFLEN]; ++ ++ str = get_tv_string_buf(&argvars[0], buf); ++ do_luaeval(str, argvars + 1, rettv); ++ } ++ #endif ++ + /* + * "map()" function + */ +*** ../vim-7.3.489/src/if_lua.c 2011-12-08 16:00:12.000000000 +0100 +--- src/if_lua.c 2012-04-05 16:41:35.000000000 +0200 +*************** +*** 1,4 **** +! /* vi:set ts=8 sts=4 sw=4: + * + * VIM - Vi IMproved by Bram Moolenaar + * +--- 1,4 ---- +! /* vi:set ts=8 sts=4 sw=4 noet: + * + * VIM - Vi IMproved by Bram Moolenaar + * +*************** +*** 21,35 **** +--- 21,53 ---- + + #define LUAVIM_CHUNKNAME "vim chunk" + #define LUAVIM_NAME "vim" ++ #define LUAVIM_EVALNAME "luaeval" ++ #define LUAVIM_EVALHEADER "local _A=select(1,...) return " + + typedef buf_T *luaV_Buffer; + typedef win_T *luaV_Window; ++ typedef dict_T *luaV_Dict; ++ typedef list_T *luaV_List; + typedef void (*msgfunc_T)(char_u *); + ++ static const char LUAVIM_DICT[] = "dict"; ++ static const char LUAVIM_LIST[] = "list"; + static const char LUAVIM_BUFFER[] = "buffer"; + static const char LUAVIM_WINDOW[] = "window"; + static const char LUAVIM_FREE[] = "luaV_free"; ++ static const char LUAVIM_LUAEVAL[] = "luaV_luaeval"; ++ static const char LUAVIM_SETREF[] = "luaV_setref"; + ++ /* most functions are closures with a cache table as first upvalue; ++ * get/setudata manage references to vim userdata in cache table through ++ * object pointers (light userdata) */ ++ #define luaV_getudata(L, v) \ ++ lua_pushlightuserdata((L), (void *) (v)); \ ++ lua_rawget((L), lua_upvalueindex(1)) ++ #define luaV_setudata(L, v) \ ++ lua_pushlightuserdata((L), (void *) (v)); \ ++ lua_pushvalue((L), -2); \ ++ lua_rawset((L), lua_upvalueindex(1)) + #define luaV_getfield(L, s) \ + lua_pushlightuserdata((L), (void *)(s)); \ + lua_rawget((L), LUA_REGISTRYINDEX) +*************** +*** 38,43 **** +--- 56,70 ---- + #define luaV_msg(L) luaV_msgfunc((L), (msgfunc_T) msg) + #define luaV_emsg(L) luaV_msgfunc((L), (msgfunc_T) emsg) + ++ static luaV_List *luaV_pushlist (lua_State *L, list_T *lis); ++ static luaV_Dict *luaV_pushdict (lua_State *L, dict_T *dic); ++ ++ #if LUA_VERSION_NUM <= 501 ++ #define luaV_openlib(L, l, n) luaL_openlib(L, NULL, l, n) ++ #define luaL_typeerror luaL_typerror ++ #else ++ #define luaV_openlib luaL_setfuncs ++ #endif + + #ifdef DYNAMIC_LUA + +*************** +*** 54,85 **** + #endif + + /* lauxlib */ + #define luaL_register dll_luaL_register + #define luaL_typerror dll_luaL_typerror + #define luaL_checklstring dll_luaL_checklstring + #define luaL_checkinteger dll_luaL_checkinteger + #define luaL_optinteger dll_luaL_optinteger + #define luaL_checktype dll_luaL_checktype + #define luaL_error dll_luaL_error +- #define luaL_loadfile dll_luaL_loadfile +- #define luaL_loadbuffer dll_luaL_loadbuffer + #define luaL_newstate dll_luaL_newstate + #define luaL_buffinit dll_luaL_buffinit +- #define luaL_prepbuffer dll_luaL_prepbuffer + #define luaL_addlstring dll_luaL_addlstring + #define luaL_pushresult dll_luaL_pushresult + /* lua */ + #define lua_close dll_lua_close + #define lua_gettop dll_lua_gettop + #define lua_settop dll_lua_settop + #define lua_pushvalue dll_lua_pushvalue + #define lua_replace dll_lua_replace + #define lua_isnumber dll_lua_isnumber + #define lua_isstring dll_lua_isstring + #define lua_type dll_lua_type + #define lua_rawequal dll_lua_rawequal +- #define lua_tonumber dll_lua_tonumber +- #define lua_tointeger dll_lua_tointeger + #define lua_toboolean dll_lua_toboolean + #define lua_tolstring dll_lua_tolstring + #define lua_touserdata dll_lua_touserdata +--- 81,134 ---- + #endif + + /* lauxlib */ ++ #if LUA_VERSION_NUM <= 501 + #define luaL_register dll_luaL_register ++ #define luaL_prepbuffer dll_luaL_prepbuffer ++ #define luaL_openlib dll_luaL_openlib + #define luaL_typerror dll_luaL_typerror ++ #define luaL_loadfile dll_luaL_loadfile ++ #define luaL_loadbuffer dll_luaL_loadbuffer ++ #else ++ #define luaL_prepbuffsize dll_luaL_prepbuffsize ++ #define luaL_setfuncs dll_luaL_setfuncs ++ #define luaL_loadfilex dll_luaL_loadfilex ++ #define luaL_loadbufferx dll_luaL_loadbufferx ++ #define luaL_argerror dll_luaL_argerror ++ #endif + #define luaL_checklstring dll_luaL_checklstring + #define luaL_checkinteger dll_luaL_checkinteger + #define luaL_optinteger dll_luaL_optinteger + #define luaL_checktype dll_luaL_checktype + #define luaL_error dll_luaL_error + #define luaL_newstate dll_luaL_newstate + #define luaL_buffinit dll_luaL_buffinit + #define luaL_addlstring dll_luaL_addlstring + #define luaL_pushresult dll_luaL_pushresult + /* lua */ ++ #if LUA_VERSION_NUM <= 501 ++ #define lua_tonumber dll_lua_tonumber ++ #define lua_tointeger dll_lua_tointeger ++ #define lua_call dll_lua_call ++ #define lua_pcall dll_lua_pcall ++ #else ++ #define lua_tonumberx dll_lua_tonumberx ++ #define lua_tointegerx dll_lua_tointegerx ++ #define lua_callk dll_lua_callk ++ #define lua_pcallk dll_lua_pcallk ++ #define lua_getglobal dll_lua_getglobal ++ #define lua_setglobal dll_lua_setglobal ++ #define lua_typename dll_lua_typename ++ #endif + #define lua_close dll_lua_close + #define lua_gettop dll_lua_gettop + #define lua_settop dll_lua_settop + #define lua_pushvalue dll_lua_pushvalue + #define lua_replace dll_lua_replace ++ #define lua_remove dll_lua_remove + #define lua_isnumber dll_lua_isnumber + #define lua_isstring dll_lua_isstring + #define lua_type dll_lua_type + #define lua_rawequal dll_lua_rawequal + #define lua_toboolean dll_lua_toboolean + #define lua_tolstring dll_lua_tolstring + #define lua_touserdata dll_lua_touserdata +*************** +*** 94,109 **** + #define lua_pushlightuserdata dll_lua_pushlightuserdata + #define lua_getfield dll_lua_getfield + #define lua_rawget dll_lua_rawget + #define lua_createtable dll_lua_createtable + #define lua_newuserdata dll_lua_newuserdata + #define lua_getmetatable dll_lua_getmetatable + #define lua_setfield dll_lua_setfield + #define lua_rawset dll_lua_rawset + #define lua_rawseti dll_lua_rawseti +- #define lua_remove dll_lua_remove + #define lua_setmetatable dll_lua_setmetatable +- #define lua_call dll_lua_call +- #define lua_pcall dll_lua_pcall + /* libs */ + #define luaopen_base dll_luaopen_base + #define luaopen_table dll_luaopen_table +--- 143,156 ---- + #define lua_pushlightuserdata dll_lua_pushlightuserdata + #define lua_getfield dll_lua_getfield + #define lua_rawget dll_lua_rawget ++ #define lua_rawgeti dll_lua_rawgeti + #define lua_createtable dll_lua_createtable + #define lua_newuserdata dll_lua_newuserdata + #define lua_getmetatable dll_lua_getmetatable + #define lua_setfield dll_lua_setfield + #define lua_rawset dll_lua_rawset + #define lua_rawseti dll_lua_rawseti + #define lua_setmetatable dll_lua_setmetatable + /* libs */ + #define luaopen_base dll_luaopen_base + #define luaopen_table dll_luaopen_table +*************** +*** 116,147 **** + #define luaL_openlibs dll_luaL_openlibs + + /* lauxlib */ + void (*dll_luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l); + int (*dll_luaL_typerror) (lua_State *L, int narg, const char *tname); + const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l); + lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg); + lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def); + void (*dll_luaL_checktype) (lua_State *L, int narg, int t); + int (*dll_luaL_error) (lua_State *L, const char *fmt, ...); +- int (*dll_luaL_loadfile) (lua_State *L, const char *filename); +- int (*dll_luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, const char *name); + lua_State *(*dll_luaL_newstate) (void); + void (*dll_luaL_buffinit) (lua_State *L, luaL_Buffer *B); +- char *(*dll_luaL_prepbuffer) (luaL_Buffer *B); + void (*dll_luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); + void (*dll_luaL_pushresult) (luaL_Buffer *B); + /* lua */ + void (*dll_lua_close) (lua_State *L); + int (*dll_lua_gettop) (lua_State *L); + void (*dll_lua_settop) (lua_State *L, int idx); + void (*dll_lua_pushvalue) (lua_State *L, int idx); + void (*dll_lua_replace) (lua_State *L, int idx); + int (*dll_lua_isnumber) (lua_State *L, int idx); + int (*dll_lua_isstring) (lua_State *L, int idx); + int (*dll_lua_type) (lua_State *L, int idx); + int (*dll_lua_rawequal) (lua_State *L, int idx1, int idx2); +- lua_Number (*dll_lua_tonumber) (lua_State *L, int idx); +- lua_Integer (*dll_lua_tointeger) (lua_State *L, int idx); + int (*dll_lua_toboolean) (lua_State *L, int idx); + const char *(*dll_lua_tolstring) (lua_State *L, int idx, size_t *len); + void *(*dll_lua_touserdata) (lua_State *L, int idx); +--- 163,218 ---- + #define luaL_openlibs dll_luaL_openlibs + + /* lauxlib */ ++ #if LUA_VERSION_NUM <= 501 + void (*dll_luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l); ++ char *(*dll_luaL_prepbuffer) (luaL_Buffer *B); ++ void (*dll_luaL_openlib) (lua_State *L, const char *libname, const luaL_Reg *l, int nup); + int (*dll_luaL_typerror) (lua_State *L, int narg, const char *tname); ++ int (*dll_luaL_loadfile) (lua_State *L, const char *filename); ++ int (*dll_luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, const char *name); ++ #else ++ char *(*dll_luaL_prepbuffsize) (luaL_Buffer *B, size_t sz); ++ void (*dll_luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup); ++ int (*dll_luaL_loadfilex) (lua_State *L, const char *filename, const char *mode); ++ int (*dll_luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, const char *name, const char *mode); ++ int (*dll_luaL_argerror) (lua_State *L, int numarg, const char *extramsg); ++ #endif + const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l); + lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg); + lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def); + void (*dll_luaL_checktype) (lua_State *L, int narg, int t); + int (*dll_luaL_error) (lua_State *L, const char *fmt, ...); + lua_State *(*dll_luaL_newstate) (void); + void (*dll_luaL_buffinit) (lua_State *L, luaL_Buffer *B); + void (*dll_luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); + void (*dll_luaL_pushresult) (luaL_Buffer *B); + /* lua */ ++ #if LUA_VERSION_NUM <= 501 ++ lua_Number (*dll_lua_tonumber) (lua_State *L, int idx); ++ lua_Integer (*dll_lua_tointeger) (lua_State *L, int idx); ++ void (*dll_lua_call) (lua_State *L, int nargs, int nresults); ++ int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); ++ #else ++ lua_Number (*dll_lua_tonumberx) (lua_State *L, int idx, int *isnum); ++ lua_Integer (*dll_lua_tointegerx) (lua_State *L, int idx, int *isnum); ++ void (*dll_lua_callk) (lua_State *L, int nargs, int nresults, int ctx, ++ lua_CFunction k); ++ int (*dll_lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, ++ int ctx, lua_CFunction k); ++ void (*dll_lua_getglobal) (lua_State *L, const char *var); ++ void (*dll_lua_setglobal) (lua_State *L, const char *var); ++ const char *(*dll_lua_typename) (lua_State *L, int tp); ++ #endif + void (*dll_lua_close) (lua_State *L); + int (*dll_lua_gettop) (lua_State *L); + void (*dll_lua_settop) (lua_State *L, int idx); + void (*dll_lua_pushvalue) (lua_State *L, int idx); + void (*dll_lua_replace) (lua_State *L, int idx); ++ void (*dll_lua_remove) (lua_State *L, int idx); + int (*dll_lua_isnumber) (lua_State *L, int idx); + int (*dll_lua_isstring) (lua_State *L, int idx); + int (*dll_lua_type) (lua_State *L, int idx); + int (*dll_lua_rawequal) (lua_State *L, int idx1, int idx2); + int (*dll_lua_toboolean) (lua_State *L, int idx); + const char *(*dll_lua_tolstring) (lua_State *L, int idx, size_t *len); + void *(*dll_lua_touserdata) (lua_State *L, int idx); +*************** +*** 156,171 **** + void (*dll_lua_pushlightuserdata) (lua_State *L, void *p); + void (*dll_lua_getfield) (lua_State *L, int idx, const char *k); + void (*dll_lua_rawget) (lua_State *L, int idx); + void (*dll_lua_createtable) (lua_State *L, int narr, int nrec); + void *(*dll_lua_newuserdata) (lua_State *L, size_t sz); + int (*dll_lua_getmetatable) (lua_State *L, int objindex); + void (*dll_lua_setfield) (lua_State *L, int idx, const char *k); + void (*dll_lua_rawset) (lua_State *L, int idx); + void (*dll_lua_rawseti) (lua_State *L, int idx, int n); +- void (*dll_lua_remove) (lua_State *L, int idx); + int (*dll_lua_setmetatable) (lua_State *L, int objindex); +- void (*dll_lua_call) (lua_State *L, int nargs, int nresults); +- int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); + /* libs */ + int (*dll_luaopen_base) (lua_State *L); + int (*dll_luaopen_table) (lua_State *L); +--- 227,240 ---- + void (*dll_lua_pushlightuserdata) (lua_State *L, void *p); + void (*dll_lua_getfield) (lua_State *L, int idx, const char *k); + void (*dll_lua_rawget) (lua_State *L, int idx); ++ void (*dll_lua_rawgeti) (lua_State *L, int idx, int n); + void (*dll_lua_createtable) (lua_State *L, int narr, int nrec); + void *(*dll_lua_newuserdata) (lua_State *L, size_t sz); + int (*dll_lua_getmetatable) (lua_State *L, int objindex); + void (*dll_lua_setfield) (lua_State *L, int idx, const char *k); + void (*dll_lua_rawset) (lua_State *L, int idx); + void (*dll_lua_rawseti) (lua_State *L, int idx, int n); + int (*dll_lua_setmetatable) (lua_State *L, int objindex); + /* libs */ + int (*dll_luaopen_base) (lua_State *L); + int (*dll_luaopen_table) (lua_State *L); +*************** +*** 185,216 **** + + static const luaV_Reg luaV_dll[] = { + /* lauxlib */ + {"luaL_register", (luaV_function) &dll_luaL_register}, + {"luaL_typerror", (luaV_function) &dll_luaL_typerror}, + {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring}, + {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger}, + {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger}, + {"luaL_checktype", (luaV_function) &dll_luaL_checktype}, + {"luaL_error", (luaV_function) &dll_luaL_error}, +- {"luaL_loadfile", (luaV_function) &dll_luaL_loadfile}, +- {"luaL_loadbuffer", (luaV_function) &dll_luaL_loadbuffer}, + {"luaL_newstate", (luaV_function) &dll_luaL_newstate}, + {"luaL_buffinit", (luaV_function) &dll_luaL_buffinit}, +- {"luaL_prepbuffer", (luaV_function) &dll_luaL_prepbuffer}, + {"luaL_addlstring", (luaV_function) &dll_luaL_addlstring}, + {"luaL_pushresult", (luaV_function) &dll_luaL_pushresult}, + /* lua */ + {"lua_close", (luaV_function) &dll_lua_close}, + {"lua_gettop", (luaV_function) &dll_lua_gettop}, + {"lua_settop", (luaV_function) &dll_lua_settop}, + {"lua_pushvalue", (luaV_function) &dll_lua_pushvalue}, + {"lua_replace", (luaV_function) &dll_lua_replace}, + {"lua_isnumber", (luaV_function) &dll_lua_isnumber}, + {"lua_isstring", (luaV_function) &dll_lua_isstring}, + {"lua_type", (luaV_function) &dll_lua_type}, + {"lua_rawequal", (luaV_function) &dll_lua_rawequal}, +- {"lua_tonumber", (luaV_function) &dll_lua_tonumber}, +- {"lua_tointeger", (luaV_function) &dll_lua_tointeger}, + {"lua_toboolean", (luaV_function) &dll_lua_toboolean}, + {"lua_tolstring", (luaV_function) &dll_lua_tolstring}, + {"lua_touserdata", (luaV_function) &dll_lua_touserdata}, +--- 254,307 ---- + + static const luaV_Reg luaV_dll[] = { + /* lauxlib */ ++ #if LUA_VERSION_NUM <= 501 + {"luaL_register", (luaV_function) &dll_luaL_register}, ++ {"luaL_prepbuffer", (luaV_function) &dll_luaL_prepbuffer}, ++ {"luaL_openlib", (luaV_function) &dll_luaL_openlib}, + {"luaL_typerror", (luaV_function) &dll_luaL_typerror}, ++ {"luaL_loadfile", (luaV_function) &dll_luaL_loadfile}, ++ {"luaL_loadbuffer", (luaV_function) &dll_luaL_loadbuffer}, ++ #else ++ {"luaL_prepbuffsize", (luaV_function) &dll_luaL_prepbuffsize}, ++ {"luaL_setfuncs", (luaV_function) &dll_luaL_setfuncs}, ++ {"luaL_loadfilex", (luaV_function) &dll_luaL_loadfilex}, ++ {"luaL_loadbufferx", (luaV_function) &dll_luaL_loadbufferx}, ++ {"luaL_argerror", (luaV_function) &dll_luaL_argerror}, ++ #endif + {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring}, + {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger}, + {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger}, + {"luaL_checktype", (luaV_function) &dll_luaL_checktype}, + {"luaL_error", (luaV_function) &dll_luaL_error}, + {"luaL_newstate", (luaV_function) &dll_luaL_newstate}, + {"luaL_buffinit", (luaV_function) &dll_luaL_buffinit}, + {"luaL_addlstring", (luaV_function) &dll_luaL_addlstring}, + {"luaL_pushresult", (luaV_function) &dll_luaL_pushresult}, + /* lua */ ++ #if LUA_VERSION_NUM <= 501 ++ {"lua_tonumber", (luaV_function) &dll_lua_tonumber}, ++ {"lua_tointeger", (luaV_function) &dll_lua_tointeger}, ++ {"lua_call", (luaV_function) &dll_lua_call}, ++ {"lua_pcall", (luaV_function) &dll_lua_pcall}, ++ #else ++ {"lua_tonumberx", (luaV_function) &dll_lua_tonumberx}, ++ {"lua_tointegerx", (luaV_function) &dll_lua_tointegerx}, ++ {"lua_callk", (luaV_function) &dll_lua_callk}, ++ {"lua_pcallk", (luaV_function) &dll_lua_pcallk}, ++ {"lua_getglobal", (luaV_function) &dll_lua_getglobal}, ++ {"lua_setglobal", (luaV_function) &dll_lua_setglobal}, ++ {"lua_typename", (luaV_function) &dll_lua_typename}, ++ #endif + {"lua_close", (luaV_function) &dll_lua_close}, + {"lua_gettop", (luaV_function) &dll_lua_gettop}, + {"lua_settop", (luaV_function) &dll_lua_settop}, + {"lua_pushvalue", (luaV_function) &dll_lua_pushvalue}, + {"lua_replace", (luaV_function) &dll_lua_replace}, ++ {"lua_remove", (luaV_function) &dll_lua_remove}, + {"lua_isnumber", (luaV_function) &dll_lua_isnumber}, + {"lua_isstring", (luaV_function) &dll_lua_isstring}, + {"lua_type", (luaV_function) &dll_lua_type}, + {"lua_rawequal", (luaV_function) &dll_lua_rawequal}, + {"lua_toboolean", (luaV_function) &dll_lua_toboolean}, + {"lua_tolstring", (luaV_function) &dll_lua_tolstring}, + {"lua_touserdata", (luaV_function) &dll_lua_touserdata}, +*************** +*** 225,240 **** + {"lua_pushlightuserdata", (luaV_function) &dll_lua_pushlightuserdata}, + {"lua_getfield", (luaV_function) &dll_lua_getfield}, + {"lua_rawget", (luaV_function) &dll_lua_rawget}, + {"lua_createtable", (luaV_function) &dll_lua_createtable}, + {"lua_newuserdata", (luaV_function) &dll_lua_newuserdata}, + {"lua_getmetatable", (luaV_function) &dll_lua_getmetatable}, + {"lua_setfield", (luaV_function) &dll_lua_setfield}, + {"lua_rawset", (luaV_function) &dll_lua_rawset}, + {"lua_rawseti", (luaV_function) &dll_lua_rawseti}, +- {"lua_remove", (luaV_function) &dll_lua_remove}, + {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable}, +- {"lua_call", (luaV_function) &dll_lua_call}, +- {"lua_pcall", (luaV_function) &dll_lua_pcall}, + /* libs */ + {"luaopen_base", (luaV_function) &dll_luaopen_base}, + {"luaopen_table", (luaV_function) &dll_luaopen_table}, +--- 316,329 ---- + {"lua_pushlightuserdata", (luaV_function) &dll_lua_pushlightuserdata}, + {"lua_getfield", (luaV_function) &dll_lua_getfield}, + {"lua_rawget", (luaV_function) &dll_lua_rawget}, ++ {"lua_rawgeti", (luaV_function) &dll_lua_rawgeti}, + {"lua_createtable", (luaV_function) &dll_lua_createtable}, + {"lua_newuserdata", (luaV_function) &dll_lua_newuserdata}, + {"lua_getmetatable", (luaV_function) &dll_lua_getmetatable}, + {"lua_setfield", (luaV_function) &dll_lua_setfield}, + {"lua_rawset", (luaV_function) &dll_lua_rawset}, + {"lua_rawseti", (luaV_function) &dll_lua_rawseti}, + {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable}, + /* libs */ + {"luaopen_base", (luaV_function) &dll_luaopen_base}, + {"luaopen_table", (luaV_function) &dll_luaopen_table}, +*************** +*** 294,299 **** +--- 383,398 ---- + + #endif /* DYNAMIC_LUA */ + ++ #if LUA_VERSION_NUM > 501 ++ static int ++ luaL_typeerror (lua_State *L, int narg, const char *tname) ++ { ++ const char *msg = lua_pushfstring(L, "%s expected, got %s", ++ tname, luaL_typename(L, narg)); ++ return luaL_argerror(L, narg, msg); ++ } ++ #endif ++ + + /* ======= Internal ======= */ + +*************** +*** 327,343 **** + } + + static void * + luaV_checkudata(lua_State *L, int ud, const char *tname) + { + void *p = luaV_toudata(L, ud, tname); +! if (p == NULL) luaL_typerror(L, ud, tname); + return p; + } + + static void + luaV_pushtypval(lua_State *L, typval_T *tv) + { +! if (tv == NULL) luaL_error(L, "null type"); + switch (tv->v_type) + { + case VAR_STRING: +--- 426,460 ---- + } + + static void * ++ luaV_checkcache(lua_State *L, void *p) ++ { ++ luaV_getudata(L, p); ++ if (lua_isnil(L, -1)) luaL_error(L, "invalid object"); ++ lua_pop(L, 1); ++ return p; ++ } ++ ++ #define luaV_unbox(L,luatyp,ud) (*((luatyp *) lua_touserdata((L),(ud)))) ++ ++ #define luaV_checkvalid(L,luatyp,ud) \ ++ luaV_checkcache((L), (void *) luaV_unbox((L),luatyp,(ud))) ++ ++ static void * + luaV_checkudata(lua_State *L, int ud, const char *tname) + { + void *p = luaV_toudata(L, ud, tname); +! if (p == NULL) luaL_typeerror(L, ud, tname); + return p; + } + + static void + luaV_pushtypval(lua_State *L, typval_T *tv) + { +! if (tv == NULL) +! { +! lua_pushnil(L); +! return; +! } + switch (tv->v_type) + { + case VAR_STRING: +*************** +*** 351,418 **** + lua_pushnumber(L, (lua_Number) tv->vval.v_float); + break; + #endif +! case VAR_LIST: { +! list_T *l = tv->vval.v_list; + +! if (l != NULL) + { +! /* check cache */ +! lua_pushlightuserdata(L, (void *) l); +! lua_rawget(L, LUA_ENVIRONINDEX); +! if (lua_isnil(L, -1)) /* not interned? */ + { +! listitem_T *li; +! int n = 0; +! lua_pop(L, 1); /* nil */ +! lua_newtable(L); +! lua_pushlightuserdata(L, (void *) l); +! lua_pushvalue(L, -2); +! lua_rawset(L, LUA_ENVIRONINDEX); +! for (li = l->lv_first; li != NULL; li = li->li_next) +! { +! luaV_pushtypval(L, &li->li_tv); +! lua_rawseti(L, -2, ++n); +! } + } +! } +! else lua_pushnil(L); +! break; +! } +! case VAR_DICT: { +! dict_T *d = tv->vval.v_dict; +! +! if (d != NULL) +! { +! /* check cache */ +! lua_pushlightuserdata(L, (void *) d); +! lua_rawget(L, LUA_ENVIRONINDEX); +! if (lua_isnil(L, -1)) /* not interned? */ + { +! hashtab_T *ht = &d->dv_hashtab; +! hashitem_T *hi; +! int n = ht->ht_used; /* remaining items */ +! lua_pop(L, 1); /* nil */ +! lua_newtable(L); +! lua_pushlightuserdata(L, (void *) d); +! lua_pushvalue(L, -2); +! lua_rawset(L, LUA_ENVIRONINDEX); +! for (hi = ht->ht_array; n > 0; hi++) +! { +! if (!HASHITEM_EMPTY(hi)) +! { +! dictitem_T *di = dict_lookup(hi); +! luaV_pushtypval(L, &di->di_tv); +! lua_setfield(L, -2, (char *) hi->hi_key); +! n--; +! } +! } + } + } +- else lua_pushnil(L); + break; + } + default: +! luaL_error(L, "invalid type"); + } + } + +--- 468,537 ---- + lua_pushnumber(L, (lua_Number) tv->vval.v_float); + break; + #endif +! case VAR_LIST: +! luaV_pushlist(L, tv->vval.v_list); +! break; +! case VAR_DICT: +! luaV_pushdict(L, tv->vval.v_dict); +! break; +! default: +! lua_pushnil(L); +! } +! } + +! /* converts lua value at 'pos' to typval 'tv' */ +! static void +! luaV_totypval (lua_State *L, int pos, typval_T *tv) +! { +! switch(lua_type(L, pos)) { +! case LUA_TBOOLEAN: +! tv->v_type = VAR_NUMBER; +! tv->vval.v_number = (varnumber_T) lua_toboolean(L, pos); +! break; +! case LUA_TSTRING: +! tv->v_type = VAR_STRING; +! tv->vval.v_string = vim_strsave((char_u *) lua_tostring(L, pos)); +! break; +! case LUA_TNUMBER: +! #ifdef FEAT_FLOAT +! tv->v_type = VAR_FLOAT; +! tv->vval.v_float = (float_T) lua_tonumber(L, pos); +! #else +! tv->v_type = VAR_NUMBER; +! tv->vval.v_number = (varnumber_T) lua_tointeger(L, pos); +! #endif +! break; +! case LUA_TUSERDATA: { +! void *p = lua_touserdata(L, pos); +! if (lua_getmetatable(L, pos)) /* has metatable? */ + { +! /* check list */ +! luaV_getfield(L, LUAVIM_LIST); +! if (lua_rawequal(L, -1, -2)) + { +! tv->v_type = VAR_LIST; +! tv->vval.v_list = *((luaV_List *) p); +! ++tv->vval.v_list->lv_refcount; +! lua_pop(L, 2); /* MTs */ +! return; + } +! /* check dict */ +! luaV_getfield(L, LUAVIM_DICT); +! if (lua_rawequal(L, -1, -3)) + { +! tv->v_type = VAR_DICT; +! tv->vval.v_dict = *((luaV_Dict *) p); +! ++tv->vval.v_dict->dv_refcount; +! lua_pop(L, 3); /* MTs */ +! return; + } ++ lua_pop(L, 3); /* MTs */ + } + break; + } + default: +! tv->v_type = VAR_NUMBER; +! tv->vval.v_number = 0; + } + } + +*************** +*** 481,569 **** + lua_pop(L, 2); /* original and modified strings */ + } + + +! /* ======= Buffer type ======= */ + +! static luaV_Buffer * +! luaV_newbuffer(lua_State *L, buf_T *buf) + { +! luaV_Buffer *b = (luaV_Buffer *) lua_newuserdata(L, sizeof(luaV_Buffer)); +! *b = buf; +! lua_pushlightuserdata(L, (void *) buf); +! lua_pushvalue(L, -2); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[buf] = udata */ +! /* to avoid GC, store as key in env */ +! lua_pushvalue(L, -1); +! lua_pushboolean(L, 1); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = true */ +! /* set metatable */ +! luaV_getfield(L, LUAVIM_BUFFER); + lua_setmetatable(L, -2); +! return b; + } + +! static luaV_Buffer * +! luaV_pushbuffer (lua_State *L, buf_T *buf) + { +! luaV_Buffer *b = NULL; +! if (buf == NULL) +! lua_pushnil(L); +! else { +! lua_pushlightuserdata(L, (void *) buf); +! lua_rawget(L, LUA_ENVIRONINDEX); +! if (lua_isnil(L, -1)) /* not interned? */ + { +! lua_pop(L, 1); +! b = luaV_newbuffer(L, buf); + } + else +! b = (luaV_Buffer *) lua_touserdata(L, -1); + } +! return b; + } + +! /* Buffer metamethods */ + + static int +! luaV_buffer_tostring(lua_State *L) + { +! lua_pushfstring(L, "%s: %p", LUAVIM_BUFFER, lua_touserdata(L, 1)); + return 1; + } + + static int + luaV_buffer_len(lua_State *L) + { +! luaV_Buffer *b = lua_touserdata(L, 1); +! lua_pushinteger(L, (*b)->b_ml.ml_line_count); + return 1; + } + + static int + luaV_buffer_call(lua_State *L) + { +! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1); + lua_settop(L, 1); +! set_curbuf(*b, DOBUF_SPLIT); + return 1; + } + + static int + luaV_buffer_index(lua_State *L) + { +! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1); + linenr_T n = (linenr_T) lua_tointeger(L, 2); +! if (n > 0 && n <= (*b)->b_ml.ml_line_count) +! luaV_pushline(L, *b, n); + else if (lua_isstring(L, 2)) + { + const char *s = lua_tostring(L, 2); + if (strncmp(s, "name", 4) == 0) +! lua_pushstring(L, (char *) (*b)->b_sfname); + else if (strncmp(s, "fname", 5) == 0) +! lua_pushstring(L, (char *) (*b)->b_ffname); + else if (strncmp(s, "number", 6) == 0) +! lua_pushinteger(L, (*b)->b_fnum); + /* methods */ + else if (strncmp(s, "insert", 6) == 0 + || strncmp(s, "next", 4) == 0 +--- 600,1107 ---- + lua_pop(L, 2); /* original and modified strings */ + } + ++ #define luaV_newtype(typ,tname,luatyp,luatname) \ ++ static luatyp * \ ++ luaV_new##tname (lua_State *L, typ *obj) \ ++ { \ ++ luatyp *o = (luatyp *) lua_newuserdata(L, sizeof(luatyp)); \ ++ *o = obj; \ ++ luaV_setudata(L, obj); /* cache[obj] = udata */ \ ++ luaV_getfield(L, luatname); \ ++ lua_setmetatable(L, -2); \ ++ return o; \ ++ } ++ ++ #define luaV_pushtype(typ,tname,luatyp) \ ++ static luatyp * \ ++ luaV_push##tname (lua_State *L, typ *obj) \ ++ { \ ++ luatyp *o = NULL; \ ++ if (obj == NULL) \ ++ lua_pushnil(L); \ ++ else { \ ++ luaV_getudata(L, obj); \ ++ if (lua_isnil(L, -1)) /* not interned? */ \ ++ { \ ++ lua_pop(L, 1); \ ++ o = luaV_new##tname(L, obj); \ ++ } \ ++ else \ ++ o = (luatyp *) lua_touserdata(L, -1); \ ++ } \ ++ return o; \ ++ } ++ ++ #define luaV_type_tostring(tname,luatname) \ ++ static int \ ++ luaV_##tname##_tostring (lua_State *L) \ ++ { \ ++ lua_pushfstring(L, "%s: %p", luatname, lua_touserdata(L, 1)); \ ++ return 1; \ ++ } ++ + +! /* adapted from eval.c */ +! +! #define listitem_alloc() (listitem_T *)alloc(sizeof(listitem_T)) +! +! static listitem_T * +! list_find (list_T *l, long n) +! { +! listitem_T *li; +! if (l == NULL || n < -l->lv_len || n >= l->lv_len) +! return NULL; +! if (n < 0) /* search backward? */ +! for (li = l->lv_last; n < -1; li = li->li_prev) +! n++; +! else /* search forward */ +! for (li = l->lv_first; n > 0; li = li->li_next) +! n--; +! return li; +! } + +! static void +! list_remove (list_T *l, listitem_T *li) + { +! listwatch_T *lw; +! --l->lv_len; +! /* fix watchers */ +! for (lw = l->lv_watch; lw != NULL; lw = lw->lw_next) +! if (lw->lw_item == li) +! lw->lw_item = li->li_next; +! /* fix list pointers */ +! if (li->li_next == NULL) /* last? */ +! l->lv_last = li->li_prev; +! else +! li->li_next->li_prev = li->li_prev; +! if (li->li_prev == NULL) /* first? */ +! l->lv_first = li->li_next; +! else +! li->li_prev->li_next = li->li_next; +! l->lv_idx_item = NULL; +! } +! +! static void +! list_append(list_T *l, listitem_T *item) +! { +! if (l->lv_last == NULL) /* empty list? */ +! l->lv_first = item; +! else +! l->lv_last->li_next = item; +! item->li_prev = l->lv_last; +! item->li_next = NULL; +! l->lv_last = item; +! ++l->lv_len; +! } +! +! static int +! list_insert_tv(list_T *l, typval_T *tv, listitem_T *item) +! { +! listitem_T *ni = listitem_alloc(); +! +! if (ni == NULL) +! return FAIL; +! copy_tv(tv, &ni->li_tv); +! if (item == NULL) +! list_append(l, ni); +! else +! { +! ni->li_prev = item->li_prev; +! ni->li_next = item; +! if (item->li_prev == NULL) +! { +! l->lv_first = ni; +! ++l->lv_idx; +! } +! else +! { +! item->li_prev->li_next = ni; +! l->lv_idx_item = NULL; +! } +! item->li_prev = ni; +! ++l->lv_len; +! } +! return OK; +! } +! +! /* set references */ +! +! static void set_ref_in_tv (typval_T *tv, int copyID); +! +! static void +! set_ref_in_dict(dict_T *d, int copyID) +! { +! hashtab_T *ht = &d->dv_hashtab; +! int n = ht->ht_used; +! hashitem_T *hi; +! for (hi = ht->ht_array; n > 0; ++hi) +! if (!HASHITEM_EMPTY(hi)) +! { +! dictitem_T *di = dict_lookup(hi); +! set_ref_in_tv(&di->di_tv, copyID); +! --n; +! } +! } +! +! static void +! set_ref_in_list(list_T *l, int copyID) +! { +! listitem_T *li; +! for (li = l->lv_first; li != NULL; li = li->li_next) +! set_ref_in_tv(&li->li_tv, copyID); +! } +! +! static void +! set_ref_in_tv(typval_T *tv, int copyID) +! { +! if (tv->v_type == VAR_LIST) +! { +! list_T *l = tv->vval.v_list; +! if (l != NULL && l->lv_copyID != copyID) +! { +! l->lv_copyID = copyID; +! set_ref_in_list(l, copyID); +! } +! } +! else if (tv->v_type == VAR_DICT) +! { +! dict_T *d = tv->vval.v_dict; +! if (d != NULL && d->dv_copyID != copyID) +! { +! d->dv_copyID = copyID; +! set_ref_in_dict(d, copyID); +! } +! } +! } +! +! +! /* ======= List type ======= */ +! +! static luaV_List * +! luaV_newlist (lua_State *L, list_T *lis) +! { +! luaV_List *l = (luaV_List *) lua_newuserdata(L, sizeof(luaV_List)); +! *l = lis; +! lis->lv_refcount++; /* reference in Lua */ +! luaV_setudata(L, lis); /* cache[lis] = udata */ +! luaV_getfield(L, LUAVIM_LIST); + lua_setmetatable(L, -2); +! return l; + } + +! luaV_pushtype(list_T, list, luaV_List) +! luaV_type_tostring(list, LUAVIM_LIST) +! +! static int +! luaV_list_gc (lua_State *L) + { +! list_unref(luaV_unbox(L, luaV_List, 1)); +! return 0; +! } +! +! static int +! luaV_list_len (lua_State *L) +! { +! list_T *l = luaV_unbox(L, luaV_List, 1); +! lua_pushinteger(L, (l == NULL) ? 0 : (int) l->lv_len); +! return 1; +! } +! +! static int +! luaV_list_iter (lua_State *L) +! { +! listitem_T *li = (listitem_T *) lua_touserdata(L, lua_upvalueindex(2)); +! if (li == NULL) return 0; +! luaV_pushtypval(L, &li->li_tv); +! lua_pushlightuserdata(L, (void *) li->li_next); +! lua_replace(L, lua_upvalueindex(2)); +! return 1; +! } +! +! static int +! luaV_list_call (lua_State *L) +! { +! list_T *l = luaV_unbox(L, luaV_List, 1); +! lua_pushvalue(L, lua_upvalueindex(1)); /* pass cache table along */ +! lua_pushlightuserdata(L, (void *) l->lv_first); +! lua_pushcclosure(L, luaV_list_iter, 2); +! return 1; +! } +! +! static int +! luaV_list_index (lua_State *L) +! { +! list_T *l = luaV_unbox(L, luaV_List, 1); +! if (lua_isnumber(L, 2)) /* list item? */ +! { +! listitem_T *li = list_find(l, (long) luaL_checkinteger(L, 2)); +! if (li == NULL) +! lua_pushnil(L); +! else +! luaV_pushtypval(L, &li->li_tv); +! } +! else if (lua_isstring(L, 2)) /* method? */ +! { +! const char *s = lua_tostring(L, 2); +! if (strncmp(s, "add", 3) == 0 +! || strncmp(s, "insert", 6) == 0 +! || strncmp(s, "extend", 6) == 0) + { +! lua_getmetatable(L, 1); +! lua_getfield(L, -1, s); + } + else +! lua_pushnil(L); + } +! else +! lua_pushnil(L); +! return 1; + } + +! static int +! luaV_list_newindex (lua_State *L) +! { +! list_T *l = luaV_unbox(L, luaV_List, 1); +! long n = (long) luaL_checkinteger(L, 2); +! listitem_T *li; +! if (l->lv_lock) +! luaL_error(L, "list is locked"); +! li = list_find(l, n); +! if (li == NULL) return 0; +! if (lua_isnil(L, 3)) /* remove? */ +! { +! list_remove(l, li); +! clear_tv(&li->li_tv); +! vim_free(li); +! } +! else +! { +! typval_T v; +! luaV_totypval(L, 3, &v); +! clear_tv(&li->li_tv); +! copy_tv(&v, &li->li_tv); +! } +! return 0; +! } + + static int +! luaV_list_add (lua_State *L) + { +! luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST); +! list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis); +! listitem_T *li; +! if (l->lv_lock) +! luaL_error(L, "list is locked"); +! li = listitem_alloc(); +! if (li != NULL) +! { +! typval_T v; +! lua_settop(L, 2); +! luaV_totypval(L, 2, &v); +! copy_tv(&v, &li->li_tv); +! list_append(l, li); +! } +! lua_settop(L, 1); + return 1; + } + + static int ++ luaV_list_insert (lua_State *L) ++ { ++ luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST); ++ list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis); ++ long pos = luaL_optlong(L, 3, 0); ++ listitem_T *li = NULL; ++ typval_T v; ++ if (l->lv_lock) ++ luaL_error(L, "list is locked"); ++ if (pos < l->lv_len) ++ { ++ li = list_find(l, pos); ++ if (li == NULL) ++ luaL_error(L, "invalid position"); ++ } ++ lua_settop(L, 2); ++ luaV_totypval(L, 2, &v); ++ list_insert_tv(l, &v, li); ++ lua_settop(L, 1); ++ return 1; ++ } ++ ++ static const luaL_Reg luaV_List_mt[] = { ++ {"__tostring", luaV_list_tostring}, ++ {"__gc", luaV_list_gc}, ++ {"__len", luaV_list_len}, ++ {"__call", luaV_list_call}, ++ {"__index", luaV_list_index}, ++ {"__newindex", luaV_list_newindex}, ++ {"add", luaV_list_add}, ++ {"insert", luaV_list_insert}, ++ {NULL, NULL} ++ }; ++ ++ ++ /* ======= Dict type ======= */ ++ ++ static luaV_Dict * ++ luaV_newdict (lua_State *L, dict_T *dic) ++ { ++ luaV_Dict *d = (luaV_Dict *) lua_newuserdata(L, sizeof(luaV_Dict)); ++ *d = dic; ++ dic->dv_refcount++; /* reference in Lua */ ++ luaV_setudata(L, dic); /* cache[dic] = udata */ ++ luaV_getfield(L, LUAVIM_DICT); ++ lua_setmetatable(L, -2); ++ return d; ++ } ++ ++ luaV_pushtype(dict_T, dict, luaV_Dict) ++ luaV_type_tostring(dict, LUAVIM_DICT) ++ ++ static int ++ luaV_dict_gc (lua_State *L) ++ { ++ dict_unref(luaV_unbox(L, luaV_Dict, 1)); ++ return 0; ++ } ++ ++ static int ++ luaV_dict_len (lua_State *L) ++ { ++ dict_T *d = luaV_unbox(L, luaV_Dict, 1); ++ lua_pushinteger(L, (d == NULL) ? 0 : (int) d->dv_hashtab.ht_used); ++ return 1; ++ } ++ ++ static int ++ luaV_dict_iter (lua_State *L) ++ { ++ hashitem_T *hi = (hashitem_T *) lua_touserdata(L, lua_upvalueindex(2)); ++ int n = lua_tointeger(L, lua_upvalueindex(3)); ++ dictitem_T *di; ++ if (n <= 0) return 0; ++ while (HASHITEM_EMPTY(hi)) hi++; ++ di = dict_lookup(hi); ++ lua_pushstring(L, (char *) hi->hi_key); ++ luaV_pushtypval(L, &di->di_tv); ++ lua_pushlightuserdata(L, (void *) (hi + 1)); ++ lua_replace(L, lua_upvalueindex(2)); ++ lua_pushinteger(L, n - 1); ++ lua_replace(L, lua_upvalueindex(3)); ++ return 2; ++ } ++ ++ static int ++ luaV_dict_call (lua_State *L) ++ { ++ dict_T *d = luaV_unbox(L, luaV_Dict, 1); ++ hashtab_T *ht = &d->dv_hashtab; ++ lua_pushvalue(L, lua_upvalueindex(1)); /* pass cache table along */ ++ lua_pushlightuserdata(L, (void *) ht->ht_array); ++ lua_pushinteger(L, ht->ht_used); /* # remaining items */ ++ lua_pushcclosure(L, luaV_dict_iter, 3); ++ return 1; ++ } ++ ++ static int ++ luaV_dict_index (lua_State *L) ++ { ++ dict_T *d = luaV_unbox(L, luaV_Dict, 1); ++ char_u *key = (char_u *) luaL_checkstring(L, 2); ++ dictitem_T *di = dict_find(d, key, -1); ++ if (di == NULL) ++ lua_pushnil(L); ++ else ++ luaV_pushtypval(L, &di->di_tv); ++ return 1; ++ } ++ ++ static int ++ luaV_dict_newindex (lua_State *L) ++ { ++ dict_T *d = luaV_unbox(L, luaV_Dict, 1); ++ char_u *key = (char_u *) luaL_checkstring(L, 2); ++ dictitem_T *di; ++ if (d->dv_lock) ++ luaL_error(L, "dict is locked"); ++ di = dict_find(d, key, -1); ++ if (di == NULL) /* non-existing key? */ ++ { ++ if (lua_isnil(L, 3)) return 0; ++ di = dictitem_alloc(key); ++ if (di == NULL) return 0; ++ if (dict_add(d, di) == FAIL) ++ { ++ vim_free(di); ++ return 0; ++ } ++ } ++ else ++ clear_tv(&di->di_tv); ++ if (lua_isnil(L, 3)) /* remove? */ ++ { ++ hashitem_T *hi = hash_find(&d->dv_hashtab, di->di_key); ++ hash_remove(&d->dv_hashtab, hi); ++ dictitem_free(di); ++ } ++ else { ++ typval_T v; ++ luaV_totypval(L, 3, &v); ++ copy_tv(&v, &di->di_tv); ++ } ++ return 0; ++ } ++ ++ static const luaL_Reg luaV_Dict_mt[] = { ++ {"__tostring", luaV_dict_tostring}, ++ {"__gc", luaV_dict_gc}, ++ {"__len", luaV_dict_len}, ++ {"__call", luaV_dict_call}, ++ {"__index", luaV_dict_index}, ++ {"__newindex", luaV_dict_newindex}, ++ {NULL, NULL} ++ }; ++ ++ ++ /* ======= Buffer type ======= */ ++ ++ luaV_newtype(buf_T, buffer, luaV_Buffer, LUAVIM_BUFFER) ++ luaV_pushtype(buf_T, buffer, luaV_Buffer) ++ luaV_type_tostring(buffer, LUAVIM_BUFFER) ++ ++ static int + luaV_buffer_len(lua_State *L) + { +! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); +! lua_pushinteger(L, b->b_ml.ml_line_count); + return 1; + } + + static int + luaV_buffer_call(lua_State *L) + { +! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); + lua_settop(L, 1); +! set_curbuf(b, DOBUF_SPLIT); + return 1; + } + + static int + luaV_buffer_index(lua_State *L) + { +! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); + linenr_T n = (linenr_T) lua_tointeger(L, 2); +! if (n > 0 && n <= b->b_ml.ml_line_count) +! luaV_pushline(L, b, n); + else if (lua_isstring(L, 2)) + { + const char *s = lua_tostring(L, 2); + if (strncmp(s, "name", 4) == 0) +! lua_pushstring(L, (char *) b->b_sfname); + else if (strncmp(s, "fname", 5) == 0) +! lua_pushstring(L, (char *) b->b_ffname); + else if (strncmp(s, "number", 6) == 0) +! lua_pushinteger(L, b->b_fnum); + /* methods */ + else if (strncmp(s, "insert", 6) == 0 + || strncmp(s, "next", 4) == 0 +*************** +*** 584,600 **** + static int + luaV_buffer_newindex(lua_State *L) + { +! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1); + linenr_T n = (linenr_T) luaL_checkinteger(L, 2); + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! if (n < 1 || n > (*b)->b_ml.ml_line_count) + luaL_error(L, "invalid line number"); + if (lua_isnil(L, 3)) /* delete line */ + { + buf_T *buf = curbuf; +! curbuf = *b; + if (u_savedel(n, 1L) == FAIL) + { + curbuf = buf; +--- 1122,1138 ---- + static int + luaV_buffer_newindex(lua_State *L) + { +! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); + linenr_T n = (linenr_T) luaL_checkinteger(L, 2); + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! if (n < 1 || n > b->b_ml.ml_line_count) + luaL_error(L, "invalid line number"); + if (lua_isnil(L, 3)) /* delete line */ + { + buf_T *buf = curbuf; +! curbuf = b; + if (u_savedel(n, 1L) == FAIL) + { + curbuf = buf; +*************** +*** 607,613 **** + } + else { + deleted_lines_mark(n, 1L); +! if (*b == curwin->w_buffer) /* fix cursor in current window? */ + { + if (curwin->w_cursor.lnum >= n) + { +--- 1145,1151 ---- + } + else { + deleted_lines_mark(n, 1L); +! if (b == curwin->w_buffer) /* fix cursor in current window? */ + { + if (curwin->w_cursor.lnum >= n) + { +*************** +*** 627,633 **** + else if (lua_isstring(L, 3)) /* update line */ + { + buf_T *buf = curbuf; +! curbuf = *b; + if (u_savesub(n) == FAIL) + { + curbuf = buf; +--- 1165,1171 ---- + else if (lua_isstring(L, 3)) /* update line */ + { + buf_T *buf = curbuf; +! curbuf = b; + if (u_savesub(n) == FAIL) + { + curbuf = buf; +*************** +*** 640,646 **** + } + else changed_bytes(n, 0); + curbuf = buf; +! if (*b == curwin->w_buffer) + check_cursor_col(); + } + else +--- 1178,1184 ---- + } + else changed_bytes(n, 0); + curbuf = buf; +! if (b == curwin->w_buffer) + check_cursor_col(); + } + else +*************** +*** 651,658 **** + static int + luaV_buffer_insert(lua_State *L) + { +! luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! linenr_T last = (*b)->b_ml.ml_line_count; + linenr_T n = (linenr_T) luaL_optinteger(L, 3, last); + buf_T *buf; + luaL_checktype(L, 2, LUA_TSTRING); +--- 1189,1197 ---- + static int + luaV_buffer_insert(lua_State *L) + { +! luaV_Buffer *lb = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! buf_T *b = (buf_T *) luaV_checkcache(L, (void *) *lb); +! linenr_T last = b->b_ml.ml_line_count; + linenr_T n = (linenr_T) luaL_optinteger(L, 3, last); + buf_T *buf; + luaL_checktype(L, 2, LUA_TSTRING); +*************** +*** 664,670 **** + if (n > last) n = last; + /* insert */ + buf = curbuf; +! curbuf = *b; + if (u_save(n, n + 1) == FAIL) + { + curbuf = buf; +--- 1203,1209 ---- + if (n > last) n = last; + /* insert */ + buf = curbuf; +! curbuf = b; + if (u_save(n, n + 1) == FAIL) + { + curbuf = buf; +*************** +*** 686,692 **** + luaV_buffer_next(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! luaV_pushbuffer(L, (*b)->b_next); + return 1; + } + +--- 1225,1232 ---- + luaV_buffer_next(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! buf_T *buf = (buf_T *) luaV_checkcache(L, (void *) *b); +! luaV_pushbuffer(L, buf->b_next); + return 1; + } + +*************** +*** 694,700 **** + luaV_buffer_previous(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! luaV_pushbuffer(L, (*b)->b_prev); + return 1; + } + +--- 1234,1241 ---- + luaV_buffer_previous(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! buf_T *buf = (buf_T *) luaV_checkcache(L, (void *) *b); +! luaV_pushbuffer(L, buf->b_prev); + return 1; + } + +*************** +*** 702,709 **** + luaV_buffer_isvalid(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! lua_pushlightuserdata(L, (void *) (*b)); +! lua_rawget(L, LUA_ENVIRONINDEX); + lua_pushboolean(L, !lua_isnil(L, -1)); + return 1; + } +--- 1243,1249 ---- + luaV_buffer_isvalid(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! luaV_getudata(L, *b); + lua_pushboolean(L, !lua_isnil(L, -1)); + return 1; + } +*************** +*** 724,801 **** + + /* ======= Window type ======= */ + +! static luaV_Window * +! luaV_newwindow(lua_State *L, win_T *win) +! { +! luaV_Window *w = (luaV_Window *) lua_newuserdata(L, sizeof(luaV_Window)); +! *w = win; +! lua_pushlightuserdata(L, (void *) win); +! lua_pushvalue(L, -2); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[win] = udata */ +! /* to avoid GC, store as key in env */ +! lua_pushvalue(L, -1); +! lua_pushboolean(L, 1); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = true */ +! /* set metatable */ +! luaV_getfield(L, LUAVIM_WINDOW); +! lua_setmetatable(L, -2); +! return w; +! } +! +! static luaV_Window * +! luaV_pushwindow(lua_State *L, win_T *win) +! { +! luaV_Window *w = NULL; +! if (win == NULL) +! lua_pushnil(L); +! else { +! lua_pushlightuserdata(L, (void *) win); +! lua_rawget(L, LUA_ENVIRONINDEX); +! if (lua_isnil(L, -1)) /* not interned? */ +! { +! lua_pop(L, 1); +! w = luaV_newwindow(L, win); +! } +! else w = (luaV_Window *) lua_touserdata(L, -1); +! } +! return w; +! } +! +! /* Window metamethods */ +! +! static int +! luaV_window_tostring(lua_State *L) +! { +! lua_pushfstring(L, "%s: %p", LUAVIM_WINDOW, lua_touserdata(L, 1)); +! return 1; +! } + + static int + luaV_window_call(lua_State *L) + { +! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1); + lua_settop(L, 1); +! win_goto(*w); + return 1; + } + + static int + luaV_window_index(lua_State *L) + { +! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1); + const char *s = luaL_checkstring(L, 2); + if (strncmp(s, "buffer", 6) == 0) +! luaV_pushbuffer(L, (*w)->w_buffer); + else if (strncmp(s, "line", 4) == 0) +! lua_pushinteger(L, (*w)->w_cursor.lnum); + else if (strncmp(s, "col", 3) == 0) +! lua_pushinteger(L, (*w)->w_cursor.col + 1); + #ifdef FEAT_VERTSPLIT + else if (strncmp(s, "width", 5) == 0) +! lua_pushinteger(L, W_WIDTH((*w))); + #endif + else if (strncmp(s, "height", 6) == 0) +! lua_pushinteger(L, (*w)->w_height); + /* methods */ + else if (strncmp(s, "next", 4) == 0 + || strncmp(s, "previous", 8) == 0 +--- 1264,1299 ---- + + /* ======= Window type ======= */ + +! luaV_newtype(win_T, window, luaV_Window, LUAVIM_WINDOW) +! luaV_pushtype(win_T, window, luaV_Window) +! luaV_type_tostring(window, LUAVIM_WINDOW) + + static int + luaV_window_call(lua_State *L) + { +! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1); + lua_settop(L, 1); +! win_goto(w); + return 1; + } + + static int + luaV_window_index(lua_State *L) + { +! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1); + const char *s = luaL_checkstring(L, 2); + if (strncmp(s, "buffer", 6) == 0) +! luaV_pushbuffer(L, w->w_buffer); + else if (strncmp(s, "line", 4) == 0) +! lua_pushinteger(L, w->w_cursor.lnum); + else if (strncmp(s, "col", 3) == 0) +! lua_pushinteger(L, w->w_cursor.col + 1); + #ifdef FEAT_VERTSPLIT + else if (strncmp(s, "width", 5) == 0) +! lua_pushinteger(L, W_WIDTH(w)); + #endif + else if (strncmp(s, "height", 6) == 0) +! lua_pushinteger(L, w->w_height); + /* methods */ + else if (strncmp(s, "next", 4) == 0 + || strncmp(s, "previous", 8) == 0 +*************** +*** 812,818 **** + static int + luaV_window_newindex (lua_State *L) + { +! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1); + const char *s = luaL_checkstring(L, 2); + int v = luaL_checkinteger(L, 3); + if (strncmp(s, "line", 4) == 0) +--- 1310,1316 ---- + static int + luaV_window_newindex (lua_State *L) + { +! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1); + const char *s = luaL_checkstring(L, 2); + int v = luaL_checkinteger(L, 3); + if (strncmp(s, "line", 4) == 0) +*************** +*** 820,828 **** + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! if (v < 1 || v > (*w)->w_buffer->b_ml.ml_line_count) + luaL_error(L, "line out of range"); +! (*w)->w_cursor.lnum = v; + update_screen(VALID); + } + else if (strncmp(s, "col", 3) == 0) +--- 1318,1326 ---- + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! if (v < 1 || v > w->w_buffer->b_ml.ml_line_count) + luaL_error(L, "line out of range"); +! w->w_cursor.lnum = v; + update_screen(VALID); + } + else if (strncmp(s, "col", 3) == 0) +*************** +*** 830,836 **** + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! (*w)->w_cursor.col = v - 1; + update_screen(VALID); + } + #ifdef FEAT_VERTSPLIT +--- 1328,1334 ---- + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! w->w_cursor.col = v - 1; + update_screen(VALID); + } + #ifdef FEAT_VERTSPLIT +*************** +*** 840,846 **** + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +! curwin = *w; + win_setwidth(v); + curwin = win; + } +--- 1338,1344 ---- + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +! curwin = w; + win_setwidth(v); + curwin = win; + } +*************** +*** 851,857 **** + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +! curwin = *w; + win_setheight(v); + curwin = win; + } +--- 1349,1355 ---- + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +! curwin = w; + win_setheight(v); + curwin = win; + } +*************** +*** 864,870 **** + luaV_window_next(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! luaV_pushwindow(L, (*w)->w_next); + return 1; + } + +--- 1362,1369 ---- + luaV_window_next(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! win_T *win = (win_T *) luaV_checkcache(L, (void *) *w); +! luaV_pushwindow(L, win->w_next); + return 1; + } + +*************** +*** 872,878 **** + luaV_window_previous(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! luaV_pushwindow(L, (*w)->w_prev); + return 1; + } + +--- 1371,1378 ---- + luaV_window_previous(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! win_T *win = (win_T *) luaV_checkcache(L, (void *) *w); +! luaV_pushwindow(L, win->w_prev); + return 1; + } + +*************** +*** 880,887 **** + luaV_window_isvalid(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! lua_pushlightuserdata(L, (void *) (*w)); +! lua_rawget(L, LUA_ENVIRONINDEX); + lua_pushboolean(L, !lua_isnil(L, -1)); + return 1; + } +--- 1380,1386 ---- + luaV_window_isvalid(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! luaV_getudata(L, *w); + lua_pushboolean(L, !lua_isnil(L, -1)); + return 1; + } +*************** +*** 983,988 **** +--- 1482,1509 ---- + } + + static int ++ luaV_list(lua_State *L) ++ { ++ list_T *l = list_alloc(); ++ if (l == NULL) ++ lua_pushnil(L); ++ else ++ luaV_newlist(L, l); ++ return 1; ++ } ++ ++ static int ++ luaV_dict(lua_State *L) ++ { ++ dict_T *d = dict_alloc(); ++ if (d == NULL) ++ lua_pushnil(L); ++ else ++ luaV_newdict(L, d); ++ return 1; ++ } ++ ++ static int + luaV_buffer(lua_State *L) + { + buf_T *buf; +*************** +*** 1008,1022 **** + break; + } + } +- if (buf == NULL) /* not found? */ +- lua_pushnil(L); +- else +- luaV_pushbuffer(L, buf); + } +! else { + buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */ +! luaV_pushbuffer(L, buf); +! } + return 1; + } + +--- 1529,1538 ---- + break; + } + } + } +! else + buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */ +! luaV_pushbuffer(L, buf); + return 1; + } + +*************** +*** 1029,1043 **** + int n = lua_tointeger(L, 1); + for (win = firstwin; win != NULL; win = win->w_next, n--) + if (n == 1) break; +- if (win == NULL) /* not found? */ +- lua_pushnil(L); +- else +- luaV_pushwindow(L, win); + } +! else { + win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */ +! luaV_pushwindow(L, win); +! } + return 1; + } + +--- 1545,1554 ---- + int n = lua_tointeger(L, 1); + for (win = firstwin; win != NULL; win = win->w_next, n--) + if (n == 1) break; + } +! else + win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */ +! luaV_pushwindow(L, win); + return 1; + } + +*************** +*** 1054,1086 **** + } + + static int +! luaV_isbuffer(lua_State *L) +! { +! lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_BUFFER) != NULL); +! return 1; +! } +! +! static int +! luaV_iswindow(lua_State *L) + { +! lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_WINDOW) != NULL); +! return 1; +! } +! +! /* for freeing buffer and window objects; lightuserdata as arg */ +! static int +! luaV_free(lua_State *L) +! { +! lua_pushvalue(L, 1); /* lightudata */ +! lua_rawget(L, LUA_ENVIRONINDEX); +! if (!lua_isnil(L, -1)) + { +! lua_pushnil(L); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = nil */ +! lua_pushnil(L); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[lightudata] = nil */ + } +! return 0; + } + + static const luaL_Reg luaV_module[] = { +--- 1565,1606 ---- + } + + static int +! luaV_type(lua_State *L) + { +! luaL_checkany(L, 1); +! if (lua_type(L, 1) == LUA_TUSERDATA) /* check vim udata? */ + { +! lua_settop(L, 1); +! if (lua_getmetatable(L, 1)) +! { +! luaV_getfield(L, LUAVIM_LIST); +! if (lua_rawequal(L, -1, 2)) +! { +! lua_pushstring(L, "list"); +! return 1; +! } +! luaV_getfield(L, LUAVIM_DICT); +! if (lua_rawequal(L, -1, 2)) +! { +! lua_pushstring(L, "dict"); +! return 1; +! } +! luaV_getfield(L, LUAVIM_BUFFER); +! if (lua_rawequal(L, -1, 2)) +! { +! lua_pushstring(L, "buffer"); +! return 1; +! } +! luaV_getfield(L, LUAVIM_WINDOW); +! if (lua_rawequal(L, -1, 2)) +! { +! lua_pushstring(L, "window"); +! return 1; +! } +! } + } +! lua_pushstring(L, luaL_typename(L, 1)); /* fallback */ +! return 1; + } + + static const luaL_Reg luaV_module[] = { +*************** +*** 1088,1111 **** + {"eval", luaV_eval}, + {"beep", luaV_beep}, + {"line", luaV_line}, + {"buffer", luaV_buffer}, + {"window", luaV_window}, + {"open", luaV_open}, +! {"isbuffer", luaV_isbuffer}, +! {"iswindow", luaV_iswindow}, + {NULL, NULL} + }; + + static int + luaopen_vim(lua_State *L) + { +! /* set environment */ + lua_newtable(L); + lua_newtable(L); +! lua_pushliteral(L, "v"); + lua_setfield(L, -2, "__mode"); +! lua_setmetatable(L, -2); +! lua_replace(L, LUA_ENVIRONINDEX); + /* print */ + lua_pushcfunction(L, luaV_print); + lua_setglobal(L, "print"); +--- 1608,1695 ---- + {"eval", luaV_eval}, + {"beep", luaV_beep}, + {"line", luaV_line}, ++ {"list", luaV_list}, ++ {"dict", luaV_dict}, + {"buffer", luaV_buffer}, + {"window", luaV_window}, + {"open", luaV_open}, +! {"type", luaV_type}, + {NULL, NULL} + }; + ++ /* for freeing list, dict, buffer and window objects; lightuserdata as arg */ ++ static int ++ luaV_free(lua_State *L) ++ { ++ lua_pushnil(L); ++ luaV_setudata(L, lua_touserdata(L, 1)); ++ return 0; ++ } ++ ++ static int ++ luaV_luaeval (lua_State *L) ++ { ++ luaL_Buffer b; ++ size_t l; ++ const char *str = lua_tolstring(L, 1, &l); ++ typval_T *arg = (typval_T *) lua_touserdata(L, 2); ++ typval_T *rettv = (typval_T *) lua_touserdata(L, 3); ++ luaL_buffinit(L, &b); ++ luaL_addlstring(&b, LUAVIM_EVALHEADER, sizeof(LUAVIM_EVALHEADER) - 1); ++ luaL_addlstring(&b, str, l); ++ luaL_pushresult(&b); ++ str = lua_tolstring(L, -1, &l); ++ if (luaL_loadbuffer(L, str, l, LUAVIM_EVALNAME)) /* compile error? */ ++ { ++ luaV_emsg(L); ++ return 0; ++ } ++ luaV_pushtypval(L, arg); ++ if (lua_pcall(L, 1, 1, 0)) /* running error? */ ++ { ++ luaV_emsg(L); ++ return 0; ++ } ++ luaV_totypval(L, -1, rettv); ++ return 0; ++ } ++ ++ static int ++ luaV_setref (lua_State *L) ++ { ++ int copyID = lua_tointeger(L, 1); ++ typval_T tv; ++ luaV_getfield(L, LUAVIM_LIST); ++ luaV_getfield(L, LUAVIM_DICT); ++ lua_pushnil(L); ++ while (lua_next(L, lua_upvalueindex(1)) != 0) /* traverse cache table */ ++ { ++ lua_getmetatable(L, -1); ++ if (lua_rawequal(L, -1, 2)) /* list? */ ++ { ++ tv.v_type = VAR_LIST; ++ tv.vval.v_list = (list_T *) lua_touserdata(L, 4); /* key */ ++ } ++ else if (lua_rawequal(L, -1, 3)) /* dict? */ ++ { ++ tv.v_type = VAR_DICT; ++ tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */ ++ } ++ lua_pop(L, 2); /* metatable and value */ ++ set_ref_in_tv(&tv, copyID); ++ } ++ return 0; ++ } ++ + static int + luaopen_vim(lua_State *L) + { +! /* set cache table */ + lua_newtable(L); + lua_newtable(L); +! lua_pushstring(L, "v"); + lua_setfield(L, -2, "__mode"); +! lua_setmetatable(L, -2); /* cache is weak-valued */ + /* print */ + lua_pushcfunction(L, luaV_print); + lua_setglobal(L, "print"); +*************** +*** 1116,1129 **** + lua_pop(L, 1); + /* free */ + lua_pushlightuserdata(L, (void *) LUAVIM_FREE); +! lua_pushcfunction(L, luaV_free); + lua_rawset(L, LUA_REGISTRYINDEX); + /* register */ + luaV_newmetatable(L, LUAVIM_BUFFER); +! luaL_register(L, NULL, luaV_Buffer_mt); + luaV_newmetatable(L, LUAVIM_WINDOW); +! luaL_register(L, NULL, luaV_Window_mt); +! luaL_register(L, LUAVIM_NAME, luaV_module); + return 0; + } + +--- 1700,1735 ---- + lua_pop(L, 1); + /* free */ + lua_pushlightuserdata(L, (void *) LUAVIM_FREE); +! lua_pushvalue(L, 1); /* cache table */ +! lua_pushcclosure(L, luaV_free, 1); +! lua_rawset(L, LUA_REGISTRYINDEX); +! /* luaeval */ +! lua_pushlightuserdata(L, (void *) LUAVIM_LUAEVAL); +! lua_pushvalue(L, 1); /* cache table */ +! lua_pushcclosure(L, luaV_luaeval, 1); +! lua_rawset(L, LUA_REGISTRYINDEX); +! /* setref */ +! lua_pushlightuserdata(L, (void *) LUAVIM_SETREF); +! lua_pushvalue(L, 1); /* cache table */ +! lua_pushcclosure(L, luaV_setref, 1); + lua_rawset(L, LUA_REGISTRYINDEX); + /* register */ ++ luaV_newmetatable(L, LUAVIM_LIST); ++ lua_pushvalue(L, 1); ++ luaV_openlib(L, luaV_List_mt, 1); ++ luaV_newmetatable(L, LUAVIM_DICT); ++ lua_pushvalue(L, 1); ++ luaV_openlib(L, luaV_Dict_mt, 1); + luaV_newmetatable(L, LUAVIM_BUFFER); +! lua_pushvalue(L, 1); /* cache table */ +! luaV_openlib(L, luaV_Buffer_mt, 1); + luaV_newmetatable(L, LUAVIM_WINDOW); +! lua_pushvalue(L, 1); /* cache table */ +! luaV_openlib(L, luaV_Window_mt, 1); +! lua_newtable(L); /* vim table */ +! lua_pushvalue(L, 1); /* cache table */ +! luaV_openlib(L, luaV_module, 1); +! lua_setglobal(L, LUAVIM_NAME); + return 0; + } + +*************** +*** 1154,1160 **** + static lua_State *L = NULL; + + static int +! lua_is_open(void) + { + return L != NULL; + } +--- 1760,1766 ---- + static lua_State *L = NULL; + + static int +! lua_isopen(void) + { + return L != NULL; + } +*************** +*** 1162,1168 **** + static int + lua_init(void) + { +! if (L == NULL) + { + #ifdef DYNAMIC_LUA + if (!lua_enabled(TRUE)) +--- 1768,1774 ---- + static int + lua_init(void) + { +! if (!lua_isopen()) + { + #ifdef DYNAMIC_LUA + if (!lua_enabled(TRUE)) +*************** +*** 1179,1185 **** + void + lua_end(void) + { +! if (L != NULL) + { + lua_close(L); + L = NULL; +--- 1785,1791 ---- + void + lua_end(void) + { +! if (lua_isopen()) + { + lua_close(L); + L = NULL; +*************** +*** 1273,1295 **** + } + } + +! /* buffer */ + void +! lua_buffer_free(buf_T *buf) + { +! if (!lua_is_open()) return; +! luaV_getfield(L, LUAVIM_FREE); +! lua_pushlightuserdata(L, (void *) buf); +! lua_call(L, 1, 0); + } + +- /* window */ + void +! lua_window_free(win_T *win) + { +! if (!lua_is_open()) return; +! luaV_getfield(L, LUAVIM_FREE); +! lua_pushlightuserdata(L, (void *) win); + lua_call(L, 1, 0); + } + +--- 1879,1914 ---- + } + } + +! #define luaV_freetype(typ,tname) \ +! void \ +! lua_##tname##_free(typ *o) \ +! { \ +! if (!lua_isopen()) return; \ +! luaV_getfield(L, LUAVIM_FREE); \ +! lua_pushlightuserdata(L, (void *) o); \ +! lua_call(L, 1, 0); \ +! } +! +! luaV_freetype(buf_T, buffer) +! luaV_freetype(win_T, window) +! + void +! do_luaeval (char_u *str, typval_T *arg, typval_T *rettv) + { +! lua_init(); +! luaV_getfield(L, LUAVIM_LUAEVAL); +! lua_pushstring(L, (char *) str); +! lua_pushlightuserdata(L, (void *) arg); +! lua_pushlightuserdata(L, (void *) rettv); +! lua_call(L, 3, 0); + } + + void +! set_ref_in_lua (int copyID) + { +! if (!lua_isopen()) return; +! luaV_getfield(L, LUAVIM_SETREF); +! lua_pushinteger(L, copyID); + lua_call(L, 1, 0); + } + +*** ../vim-7.3.489/src/proto/if_lua.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/if_lua.pro 2012-04-05 16:41:35.000000000 +0200 +*************** +*** 6,9 **** +--- 6,11 ---- + void ex_luafile __ARGS((exarg_T *eap)); + void lua_buffer_free __ARGS((buf_T *buf)); + void lua_window_free __ARGS((win_T *win)); ++ void do_luaeval __ARGS((char_u *str, typval_T *arg, typval_T *rettv)); ++ void set_ref_in_lua __ARGS((int copyID)); + /* vim: set ft=c : */ +*** ../vim-7.3.489/src/version.c 2012-04-05 16:07:01.000000000 +0200 +--- src/version.c 2012-04-05 16:52:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 490, + /**/ + +-- +Even got a Datapoint 3600(?) with a DD50 connector instead of the +usual DB25... what a nightmare trying to figure out the pinout +for *that* with no spex... + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.491 b/source/ap/vim/patches/7.3.491 new file mode 100644 index 00000000..b675722e --- /dev/null +++ b/source/ap/vim/patches/7.3.491 @@ -0,0 +1,235 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.491 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.491 +Problem: No tests for Lua. +Solution: Add some simple tests for Lua. (Luis Carvalho) +Files: src/testdir/test1.in, src/testdir/test85.in, src/testdir/test85.ok + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + + +*** ../vim-7.3.490/src/testdir/test1.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test1.in 2012-04-05 16:37:37.000000000 +0200 +*************** +*** 15,20 **** +--- 15,21 ---- + be set like small.vim above. mbyte.vim is sourced by tests that require the + +multi_byte feature. + Similar logic is applied to the +mzscheme feature, using mzscheme.vim. ++ Similar logic is applied to the +lua feature, using lua.vim. + + STARTTEST + :" Write a single line to test.out to check if testing works at all. +*************** +*** 28,37 **** +--- 29,45 ---- + qa! + :w! mbyte.vim + :w! mzscheme.vim ++ :w! lua.vim ++ :" + :" If +multi_byte feature supported, make mbyte.vim empty. + :if has("multi_byte") | sp another | w! mbyte.vim | q | endif ++ :" + :" If +mzscheme feature supported, make mzscheme.vim empty. + :if has("mzscheme") | sp another | w! mzscheme.vim | q | endif ++ :" ++ :" If +lua feature supported, make lua.vim empty. ++ :if has("lua") | sp another | w! lua.vim | q | endif ++ :" + :" If +eval feature supported quit here, leaving tiny.vim and small.vim empty. + :" Otherwise write small.vim to skip the test. + :if 1 | q! | endif +*** ../vim-7.3.490/src/testdir/test85.in 2012-04-05 16:56:12.000000000 +0200 +--- src/testdir/test85.in 2012-04-05 16:44:00.000000000 +0200 +*************** +*** 0 **** +--- 1,42 ---- ++ Test for Lua interface and luaeval() function ++ ++ STARTTEST ++ :so small.vim ++ :so lua.vim ++ :set nocompatible viminfo+=nviminfo ++ :lua l = vim.list():add"item0":add"dictionary with list OK":add"item2" ++ :lua h = vim.dict(); h.list = l ++ :call garbagecollect() ++ /^1 ++ :" change buffer contents ++ :lua curbuf = vim.buffer() ++ :lua curline = vim.eval"line('.')" ++ :lua curbuf[curline] = "1 changed line 1" ++ :" scalar test ++ :let tmp_string = luaeval('"string"') ++ :let tmp_1000 = luaeval('1000') ++ :if printf("%s%.0f", tmp_string, tmp_1000) == "string1000" ++ :let scalar_res = "OK" ++ :else ++ :let scalar_res = "FAILED" ++ :endif ++ :call append(search("^1"), "scalar test " . scalar_res) ++ :" dictionary containing a list ++ :let tmp = luaeval("h").list[1] ++ :/^2/put =tmp ++ :" circular list (at the same time test lists containing lists) ++ :lua l[2] = l ++ :let l2 = luaeval("h").list ++ :if l2[2] == l2 ++ :let res = "OK" ++ :else ++ :let res = "FAILED" ++ :endif ++ :call setline(search("^3"), "circular test " . res) ++ :?^1?,$w! test.out ++ :qa! ++ ENDTEST ++ ++ 1 line 1 ++ 2 line 2 ++ 3 line 3 +*** ../vim-7.3.490/src/testdir/test85.ok 2012-04-05 16:56:12.000000000 +0200 +--- src/testdir/test85.ok 2012-04-05 16:18:56.000000000 +0200 +*************** +*** 0 **** +--- 1,5 ---- ++ 1 changed line 1 ++ scalar test OK ++ 2 line 2 ++ dictionary with list OK ++ circular test OK +*** ../vim-7.3.490/src/testdir/Make_amiga.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_amiga.mak 2012-04-05 16:21:55.000000000 +0200 +*************** +*** 13,18 **** +--- 13,19 ---- + # test25 uses symbolic link + # test27 can't edit file with "*" + # test52 only for Win32 ++ # test85 no Lua interface + + SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ + test7.out test8.out test9.out \ +*** ../vim-7.3.490/src/testdir/Make_dos.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_dos.mak 2012-04-05 16:22:16.000000000 +0200 +*************** +*** 30,36 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS32 = test50.out test70.out + +--- 30,36 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.490/src/testdir/Make_ming.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_ming.mak 2012-04-05 16:22:25.000000000 +0200 +*************** +*** 50,56 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS32 = test50.out test70.out + +--- 50,56 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.490/src/testdir/Make_os2.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_os2.mak 2012-04-05 16:22:38.000000000 +0200 +*************** +*** 13,18 **** +--- 13,19 ---- + # test25 uses symbolic link + # test27 can't edit file with "*" in file name + # test52 only for Win32 ++ # test85 no Lua interface + + SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ + test7.out test8.out test9.out \ +*** ../vim-7.3.490/src/testdir/Make_vms.mms 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_vms.mms 2012-04-05 16:23:08.000000000 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2012 Mar 28 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2012 Apr 05 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 89,94 **** +--- 89,95 ---- + # with too many dots). + # + # Test 72: unknown reason ++ # Test 85: no Lua interface + + .IFDEF WANT_GUI + SCRIPT_GUI = test16.out +*** ../vim-7.3.490/src/testdir/Makefile 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Makefile 2012-04-05 16:21:13.000000000 +0200 +*************** +*** 27,33 **** + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS_GUI = test16.out + +--- 27,33 ---- + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.490/src/version.c 2012-04-05 16:53:56.000000000 +0200 +--- src/version.c 2012-04-05 16:55:27.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 491, + /**/ + +-- +You had connectors? Eeee, when I were a lad we 'ad to carry the +bits between the computer and the terminal with a spoon... + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.492 b/source/ap/vim/patches/7.3.492 new file mode 100644 index 00000000..b32b6f68 --- /dev/null +++ b/source/ap/vim/patches/7.3.492 @@ -0,0 +1,718 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.492 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.492 +Problem: Can't indent conditions separately from function arguments. +Solution: Add the 'k' flag in 'cino. (Lech Lorens) +Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, + src/testdir/test3.ok + + +*** ../vim-7.3.491/runtime/doc/indent.txt 2011-06-26 03:16:58.000000000 +0200 +--- runtime/doc/indent.txt 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 459,464 **** +--- 460,481 ---- + a_short_line(argument, a_short_line(argument, + argument); argument); + < ++ *cino-k* ++ kN When in unclosed parentheses which follow "if", "for" or ++ "while" and N is non-zero, overrides the behaviour defined by ++ "(N": causes the indent to be N characters relative to the outer ++ context (i.e. the line where "if", "for" or "while" is). Has ++ no effect on deeper levels of nesting. Affects flags like "wN" ++ only for the "if", "for" and "while" conditions. If 0, defaults ++ to behaviour defined by the "(N" flag. (default: 0). ++ ++ cino=(0 cino=(0,ks > ++ if (condition1 if (condition1 ++ && condition2) && condition2) ++ action(); action(); ++ function(argument1 function(argument1 ++ && argument2); && argument2); ++ < + *cino-m* + mN When N is non-zero, line up a line starting with a closing + parentheses with the first character of the line with the +*************** +*** 527,540 **** + + *cino-#* + #N When N is non-zero recognize shell/Perl comments, starting with +! '#'. Default N is zero: don't recognizes '#' comments. Note + that lines starting with # will still be seen as preprocessor + lines. + + + The defaults, spelled out in full, are: + cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, +! c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0 + + Vim puts a line in column 1 if: + - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. +--- 546,559 ---- + + *cino-#* + #N When N is non-zero recognize shell/Perl comments, starting with +! '#'. Default N is zero: don't recognize '#' comments. Note + that lines starting with # will still be seen as preprocessor + lines. + + + The defaults, spelled out in full, are: + cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, +! c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0 + + Vim puts a line in column 1 if: + - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. +*** ../vim-7.3.491/src/misc1.c 2012-02-29 13:49:03.000000000 +0100 +--- src/misc1.c 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 5771,5776 **** +--- 5771,5822 ---- + } + + /* ++ * Check whether in "p" there is an "if", "for" or "while" before offset. ++ * Return 0 if there is none. ++ * Otherwise return !0 and update "*poffset" to point to the place where the ++ * string was found. ++ */ ++ static int ++ cin_is_if_for_while_before_offset(line, offset, poffset) ++ char_u *line; ++ size_t offset; ++ int *poffset; ++ { ++ ++ if (offset-- < 2) ++ return 0; ++ while (offset > 2 && vim_iswhite(line[offset])) ++ --offset; ++ ++ offset -= 1; ++ if (!STRNCMP(line + offset, "if", 2)) ++ goto probablyFound; ++ ++ if (offset >= 1) ++ { ++ offset -= 1; ++ if (!STRNCMP(line + offset, "for", 3)) ++ goto probablyFound; ++ ++ if (offset >= 2) ++ { ++ offset -= 2; ++ if (!STRNCMP(line + offset, "while", 5)) ++ goto probablyFound; ++ } ++ } ++ ++ return 0; ++ probablyFound: ++ if (!offset || !vim_isIDc(line[offset - 1])) ++ { ++ *poffset = offset; ++ return 1; ++ } ++ return 0; ++ } ++ ++ /* + * Return TRUE if we are at the end of a do-while. + * do + * nothing; +*************** +*** 6124,6130 **** + + /* + * Find the matching '(', failing if it is in a comment. +! * Return NULL of no match found. + */ + static pos_T * + find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */ +--- 6170,6176 ---- + + /* + * Find the matching '(', failing if it is in a comment. +! * Return NULL if no match found. + */ + static pos_T * + find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */ +*************** +*** 6393,6398 **** +--- 6439,6450 ---- + */ + int ind_cpp_namespace = 0; + ++ /* ++ * handle continuation lines containing conditions of if(), for() and ++ * while() ++ */ ++ int ind_if_for_while = 0; ++ + pos_T cur_curpos; + int amount; + int scope_amount; +*************** +*** 6437,6442 **** +--- 6489,6495 ---- + int cont_amount = 0; /* amount for continuation line */ + int original_line_islabel; + int added_to_amount = 0; ++ int is_if_for_while = 0; + + for (options = curbuf->b_p_cino; *options; ) + { +*************** +*** 6509,6514 **** +--- 6562,6568 ---- + case 'l': ind_keep_case_label = n; break; + case '#': ind_hash_comment = n; break; + case 'N': ind_cpp_namespace = n; break; ++ case 'k': ind_if_for_while = n; break; + } + if (*options == ',') + ++options; +*************** +*** 6812,6817 **** +--- 6866,6900 ---- + if (amount == -1) + { + int ignore_paren_col = 0; ++ int is_if_for_while = 0; ++ ++ if (ind_if_for_while) ++ { ++ /* Look for the outermost opening parenthesis on this line ++ * and check whether it belongs to an "if", "for" or "while". */ ++ ++ pos_T cursor_save = curwin->w_cursor; ++ pos_T outermost; ++ char_u *line; ++ int look_col; ++ ++ trypos = &our_paren_pos; ++ do { ++ outermost = *trypos; ++ curwin->w_cursor.lnum = outermost.lnum; ++ curwin->w_cursor.col = outermost.col; ++ ++ trypos = find_match_paren(ind_maxparen, ind_maxcomment); ++ } while (trypos && trypos->lnum == outermost.lnum); ++ ++ curwin->w_cursor = cursor_save; ++ ++ line = ml_get(outermost.lnum); ++ ++ is_if_for_while = ++ cin_is_if_for_while_before_offset(line, outermost.col, ++ &outermost.col); ++ } + + amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment); + look = skipwhite(look); +*************** +*** 6836,6842 **** + curwin->w_cursor.lnum = save_lnum; + look = ml_get(our_paren_pos.lnum) + look_col; + } +! if (theline[0] == ')' || ind_unclosed == 0 + || (!ind_unclosed_noignore && *look == '(' + && ignore_paren_col == 0)) + { +--- 6919,6925 ---- + curwin->w_cursor.lnum = save_lnum; + look = ml_get(our_paren_pos.lnum) + look_col; + } +! if (theline[0] == ')' || (ind_unclosed == 0 && is_if_for_while == 0) + || (!ind_unclosed_noignore && *look == '(' + && ignore_paren_col == 0)) + { +*************** +*** 6907,6913 **** + { + /* Line up with the start of the matching paren line. */ + } +! else if (ind_unclosed == 0 || (!ind_unclosed_noignore + && *look == '(' && ignore_paren_col == 0)) + { + if (cur_amount != MAXCOL) +--- 6990,6997 ---- + { + /* Line up with the start of the matching paren line. */ + } +! else if ((ind_unclosed == 0 && is_if_for_while == 0) +! || (!ind_unclosed_noignore + && *look == '(' && ignore_paren_col == 0)) + { + if (cur_amount != MAXCOL) +*************** +*** 6943,6949 **** + if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL) + amount += ind_unclosed2; + else +! amount += ind_unclosed; + } + /* + * For a line starting with ')' use the minimum of the two +--- 7027,7038 ---- + if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL) + amount += ind_unclosed2; + else +! { +! if (is_if_for_while) +! amount += ind_if_for_while; +! else +! amount += ind_unclosed; +! } + } + /* + * For a line starting with ')' use the minimum of the two +*** ../vim-7.3.491/src/testdir/test3.in 2011-12-14 20:21:29.000000000 +0100 +--- src/testdir/test3.in 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 1574,1579 **** +--- 1574,1793 ---- + } + + STARTTEST ++ :set cino=k2s,(0 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ STARTTEST ++ :set cino=k2s,(s ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ STARTTEST ++ :set cino=k2s,(s,U1 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ ++ STARTTEST ++ :set cino=k2s,(0,W4 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ ++ a_long_line( ++ argument, ++ argument); ++ a_short_line(argument, ++ argument); ++ } ++ ++ STARTTEST ++ :set cino=k2s,u2 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ } ++ ++ STARTTEST ++ :set cino=k2s,(0,w1 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ STARTTEST ++ :set cino=k2,(s ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ } ++ ++ STARTTEST + :set cino=N-s + /^NAMESPACESTART + =/^NAMESPACEEND +*** ../vim-7.3.491/src/testdir/test3.ok 2011-12-14 20:21:29.000000000 +0100 +--- src/testdir/test3.ok 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 1411,1416 **** +--- 1411,1602 ---- + } + + ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ ++ a_long_line( ++ argument, ++ argument); ++ a_short_line(argument, ++ argument); ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ } ++ ++ + NAMESPACESTART + /* valid namespaces with normal indent */ + namespace +*** ../vim-7.3.491/src/version.c 2012-04-05 16:56:38.000000000 +0200 +--- src/version.c 2012-04-05 17:14:18.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 492, + /**/ + +-- +You were lucky to have a LAKE! There were a hundred and sixty of +us living in a small shoebox in the middle of the road. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.493 b/source/ap/vim/patches/7.3.493 new file mode 100644 index 00000000..ff662b25 --- /dev/null +++ b/source/ap/vim/patches/7.3.493 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.493 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.493 (after 7.3.492) +Problem: Two unused variables. +Solution: Remove them. (Hong Xu) +Files: src/misc1.c + + +*** ../vim-7.3.492/src/misc1.c 2012-04-05 17:17:38.000000000 +0200 +--- src/misc1.c 2012-04-06 13:49:39.000000000 +0200 +*************** +*** 6489,6495 **** + int cont_amount = 0; /* amount for continuation line */ + int original_line_islabel; + int added_to_amount = 0; +- int is_if_for_while = 0; + + for (options = curbuf->b_p_cino; *options; ) + { +--- 6489,6494 ---- +*************** +*** 6876,6882 **** + pos_T cursor_save = curwin->w_cursor; + pos_T outermost; + char_u *line; +- int look_col; + + trypos = &our_paren_pos; + do { +--- 6875,6880 ---- +*** ../vim-7.3.492/src/version.c 2012-04-05 17:17:38.000000000 +0200 +--- src/version.c 2012-04-06 13:50:21.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 493, + /**/ + +-- +Not too long ago, compress was something you did to garbage... + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.494 b/source/ap/vim/patches/7.3.494 new file mode 100644 index 00000000..81bd24b7 --- /dev/null +++ b/source/ap/vim/patches/7.3.494 @@ -0,0 +1,186 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.494 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.494 (after 7.3.491) +Problem: Can't compile with Lua 9.1 or dynamic Lua. +Solution: Fix dll_ methods. Fix luado(). (Muraoka Taro, Luis Carvalho) +Files: src/if_lua.c + + +*** ../vim-7.3.493/src/if_lua.c 2012-04-05 16:53:56.000000000 +0200 +--- src/if_lua.c 2012-04-06 14:24:06.000000000 +0200 +*************** +*** 95,100 **** +--- 95,101 ---- + #define luaL_loadbufferx dll_luaL_loadbufferx + #define luaL_argerror dll_luaL_argerror + #endif ++ #define luaL_checkany dll_luaL_checkany + #define luaL_checklstring dll_luaL_checklstring + #define luaL_checkinteger dll_luaL_checkinteger + #define luaL_optinteger dll_luaL_optinteger +*************** +*** 117,124 **** + #define lua_pcallk dll_lua_pcallk + #define lua_getglobal dll_lua_getglobal + #define lua_setglobal dll_lua_setglobal +- #define lua_typename dll_lua_typename + #endif + #define lua_close dll_lua_close + #define lua_gettop dll_lua_gettop + #define lua_settop dll_lua_settop +--- 118,125 ---- + #define lua_pcallk dll_lua_pcallk + #define lua_getglobal dll_lua_getglobal + #define lua_setglobal dll_lua_setglobal + #endif ++ #define lua_typename dll_lua_typename + #define lua_close dll_lua_close + #define lua_gettop dll_lua_gettop + #define lua_settop dll_lua_settop +*************** +*** 151,156 **** +--- 152,158 ---- + #define lua_rawset dll_lua_rawset + #define lua_rawseti dll_lua_rawseti + #define lua_setmetatable dll_lua_setmetatable ++ #define lua_next dll_lua_next + /* libs */ + #define luaopen_base dll_luaopen_base + #define luaopen_table dll_luaopen_table +*************** +*** 177,182 **** +--- 179,185 ---- + int (*dll_luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, const char *name, const char *mode); + int (*dll_luaL_argerror) (lua_State *L, int numarg, const char *extramsg); + #endif ++ void (*dll_luaL_checkany) (lua_State *L, int narg); + const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l); + lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg); + lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def); +*************** +*** 201,208 **** + int ctx, lua_CFunction k); + void (*dll_lua_getglobal) (lua_State *L, const char *var); + void (*dll_lua_setglobal) (lua_State *L, const char *var); +- const char *(*dll_lua_typename) (lua_State *L, int tp); + #endif + void (*dll_lua_close) (lua_State *L); + int (*dll_lua_gettop) (lua_State *L); + void (*dll_lua_settop) (lua_State *L, int idx); +--- 204,211 ---- + int ctx, lua_CFunction k); + void (*dll_lua_getglobal) (lua_State *L, const char *var); + void (*dll_lua_setglobal) (lua_State *L, const char *var); + #endif ++ const char *(*dll_lua_typename) (lua_State *L, int tp); + void (*dll_lua_close) (lua_State *L); + int (*dll_lua_gettop) (lua_State *L); + void (*dll_lua_settop) (lua_State *L, int idx); +*************** +*** 235,240 **** +--- 238,244 ---- + void (*dll_lua_rawset) (lua_State *L, int idx); + void (*dll_lua_rawseti) (lua_State *L, int idx, int n); + int (*dll_lua_setmetatable) (lua_State *L, int objindex); ++ int (*dll_lua_next) (lua_State *L, int idx); + /* libs */ + int (*dll_luaopen_base) (lua_State *L); + int (*dll_luaopen_table) (lua_State *L); +*************** +*** 268,273 **** +--- 272,278 ---- + {"luaL_loadbufferx", (luaV_function) &dll_luaL_loadbufferx}, + {"luaL_argerror", (luaV_function) &dll_luaL_argerror}, + #endif ++ {"luaL_checkany", (luaV_function) &dll_luaL_checkany}, + {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring}, + {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger}, + {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger}, +*************** +*** 290,297 **** + {"lua_pcallk", (luaV_function) &dll_lua_pcallk}, + {"lua_getglobal", (luaV_function) &dll_lua_getglobal}, + {"lua_setglobal", (luaV_function) &dll_lua_setglobal}, +- {"lua_typename", (luaV_function) &dll_lua_typename}, + #endif + {"lua_close", (luaV_function) &dll_lua_close}, + {"lua_gettop", (luaV_function) &dll_lua_gettop}, + {"lua_settop", (luaV_function) &dll_lua_settop}, +--- 295,302 ---- + {"lua_pcallk", (luaV_function) &dll_lua_pcallk}, + {"lua_getglobal", (luaV_function) &dll_lua_getglobal}, + {"lua_setglobal", (luaV_function) &dll_lua_setglobal}, + #endif ++ {"lua_typename", (luaV_function) &dll_lua_typename}, + {"lua_close", (luaV_function) &dll_lua_close}, + {"lua_gettop", (luaV_function) &dll_lua_gettop}, + {"lua_settop", (luaV_function) &dll_lua_settop}, +*************** +*** 324,329 **** +--- 329,335 ---- + {"lua_rawset", (luaV_function) &dll_lua_rawset}, + {"lua_rawseti", (luaV_function) &dll_lua_rawseti}, + {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable}, ++ {"lua_next", (luaV_function) &dll_lua_next}, + /* libs */ + {"luaopen_base", (luaV_function) &dll_luaopen_base}, + {"luaopen_table", (luaV_function) &dll_luaopen_table}, +*************** +*** 1828,1834 **** + } + luaV_setrange(L, eap->line1, eap->line2); + luaL_buffinit(L, &b); +! luaL_addlstring(&b, "return function(line) ", 22); /* header */ + luaL_addlstring(&b, s, strlen(s)); + luaL_addlstring(&b, " end", 4); /* footer */ + luaL_pushresult(&b); +--- 1834,1840 ---- + } + luaV_setrange(L, eap->line1, eap->line2); + luaL_buffinit(L, &b); +! luaL_addlstring(&b, "return function(line, linenr) ", 30); /* header */ + luaL_addlstring(&b, s, strlen(s)); + luaL_addlstring(&b, " end", 4); /* footer */ + luaL_pushresult(&b); +*************** +*** 1845,1851 **** + { + lua_pushvalue(L, -1); /* function */ + luaV_pushline(L, curbuf, l); /* current line as arg */ +! if (lua_pcall(L, 1, 1, 0)) + { + luaV_emsg(L); + break; +--- 1851,1858 ---- + { + lua_pushvalue(L, -1); /* function */ + luaV_pushline(L, curbuf, l); /* current line as arg */ +! lua_pushinteger(L, l); /* current line number as arg */ +! if (lua_pcall(L, 2, 1, 0)) + { + luaV_emsg(L); + break; +*** ../vim-7.3.493/src/version.c 2012-04-06 13:56:00.000000000 +0200 +--- src/version.c 2012-04-06 14:25:11.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 494, + /**/ + +-- +Why doesn't Tarzan have a beard? + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.495 b/source/ap/vim/patches/7.3.495 new file mode 100644 index 00000000..54c23062 --- /dev/null +++ b/source/ap/vim/patches/7.3.495 @@ -0,0 +1,124 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.4 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.495 (after 7.3.492) +Problem: Compiler warnings. +Solution: Add function declaration. Remove "offset" argument. +Files: src/misc1.c + + +*** ../vim-7.3.494/src/misc1.c 2012-04-06 13:56:00.000000000 +0200 +--- src/misc1.c 2012-04-09 20:25:58.000000000 +0200 +*************** +*** 4972,4977 **** +--- 4972,4978 ---- + static int cin_iselse __ARGS((char_u *)); + static int cin_isdo __ARGS((char_u *)); + static int cin_iswhileofdo __ARGS((char_u *, linenr_T, int)); ++ static int cin_is_if_for_while_before_offset __ARGS((char_u *line, int *poffset)); + static int cin_iswhileofdo_end __ARGS((int terminated, int ind_maxparen, int ind_maxcomment)); + static int cin_isbreak __ARGS((char_u *)); + static int cin_is_cpp_baseclass __ARGS((colnr_T *col)); +*************** +*** 5771,5787 **** + } + + /* +! * Check whether in "p" there is an "if", "for" or "while" before offset. + * Return 0 if there is none. + * Otherwise return !0 and update "*poffset" to point to the place where the + * string was found. + */ + static int +! cin_is_if_for_while_before_offset(line, offset, poffset) + char_u *line; +- size_t offset; + int *poffset; + { + + if (offset-- < 2) + return 0; +--- 5772,5788 ---- + } + + /* +! * Check whether in "p" there is an "if", "for" or "while" before "*poffset". + * Return 0 if there is none. + * Otherwise return !0 and update "*poffset" to point to the place where the + * string was found. + */ + static int +! cin_is_if_for_while_before_offset(line, poffset) + char_u *line; + int *poffset; + { ++ int offset = *poffset; + + if (offset-- < 2) + return 0; +*************** +*** 5805,5812 **** + goto probablyFound; + } + } +- + return 0; + probablyFound: + if (!offset || !vim_isIDc(line[offset - 1])) + { +--- 5806,5813 ---- + goto probablyFound; + } + } + return 0; ++ + probablyFound: + if (!offset || !vim_isIDc(line[offset - 1])) + { +*************** +*** 6890,6897 **** + line = ml_get(outermost.lnum); + + is_if_for_while = +! cin_is_if_for_while_before_offset(line, outermost.col, +! &outermost.col); + } + + amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment); +--- 6891,6897 ---- + line = ml_get(outermost.lnum); + + is_if_for_while = +! cin_is_if_for_while_before_offset(line, &outermost.col); + } + + amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment); +*** ../vim-7.3.494/src/version.c 2012-04-06 14:30:55.000000000 +0200 +--- src/version.c 2012-04-09 20:41:44.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 495, + /**/ + +-- + [clop clop] +GUARD #1: Halt! Who goes there? +ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of + Camelot. King of the Britons, defeator of the Saxons, sovereign of + all England! +GUARD #1: Pull the other one! + 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 /// diff --git a/source/ap/vim/patches/7.3.496 b/source/ap/vim/patches/7.3.496 new file mode 100644 index 00000000..8b110517 --- /dev/null +++ b/source/ap/vim/patches/7.3.496 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.496 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.496 +Problem: MS-DOS: When "diff" trips over difference in line separators some + tests fail. +Solution: Make some .ok files use unix line separators. (David Pope) +Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak + + +*** ../vim-7.3.495/src/testdir/Make_dos.mak 2012-04-05 16:56:38.000000000 +0200 +--- src/testdir/Make_dos.mak 2012-04-09 21:23:43.000000000 +0200 +*************** +*** 52,58 **** + + fixff: + -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok +! -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q dotest.in + + clean: + -del *.out +--- 52,59 ---- + + fixff: + -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok +! -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \ +! dotest.in test60.ok test71.ok test74.ok + + clean: + -del *.out +*** ../vim-7.3.495/src/testdir/Make_ming.mak 2012-04-05 16:56:38.000000000 +0200 +--- src/testdir/Make_ming.mak 2012-04-09 21:25:55.000000000 +0200 +*************** +*** 75,80 **** +--- 75,82 ---- + + fixff: + -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok ++ -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \ ++ dotest.in test60.ok test71.ok test74.ok + + clean: + -$(DEL) *.out +*** ../vim-7.3.495/src/version.c 2012-04-09 20:42:20.000000000 +0200 +--- src/version.c 2012-04-13 19:10:04.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 496, + /**/ + +-- +There are 2 kinds of people in my world: those who know Unix, Perl, Vim, GNU, +Linux, etc, and those who know COBOL. It gets very difficult for me at +parties, not knowing which group to socialise with :-) + Sitaram Chamarty + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.497 b/source/ap/vim/patches/7.3.497 new file mode 100644 index 00000000..5cbffc4a --- /dev/null +++ b/source/ap/vim/patches/7.3.497 @@ -0,0 +1,50 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.497 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.497 +Problem: Crash when doing ":python print" and compiled with gcc and + the optimizer enabled. +Solution: Avoid the crash, doesn't really fix the problem. (Christian + Brabandt) +Files: src/if_py_both.h + + +*** ../vim-7.3.496/src/if_py_both.h 2012-02-04 20:17:21.000000000 +0100 +--- src/if_py_both.h 2012-04-20 13:24:31.000000000 +0200 +*************** +*** 77,82 **** +--- 77,87 ---- + 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); +*** ../vim-7.3.496/src/version.c 2012-04-13 19:11:16.000000000 +0200 +--- src/version.c 2012-04-20 13:26:22.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 497, + /**/ + +-- +There can't be a crisis today, my schedule is already full. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.498 b/source/ap/vim/patches/7.3.498 new file mode 100644 index 00000000..aa9c621e --- /dev/null +++ b/source/ap/vim/patches/7.3.498 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.498 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.498 +Problem: The behavior of the "- register changes depending on value of + the 'clipboard' option. (Szamotulski) +Solution: Also set the "- register when the register is "*" or "+". + (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.3.497/src/ops.c 2012-03-23 14:16:19.000000000 +0100 +--- src/ops.c 2012-04-20 13:36:32.000000000 +0200 +*************** +*** 1720,1728 **** + did_yank = TRUE; + } + +! /* Yank into small delete register when no register specified and the +! * delete is within one line. */ +! if (oap->regname == 0 && oap->motion_type != MLINE + && oap->line_count == 1) + { + oap->regname = '-'; +--- 1720,1733 ---- + did_yank = TRUE; + } + +! /* Yank into small delete register when no named register specified +! * and the delete is within one line. */ +! if (( +! #ifdef FEAT_CLIPBOARD +! ((clip_unnamed & CLIP_UNNAMED) && oap->regname == '*') || +! ((clip_unnamed & CLIP_UNNAMED_PLUS) && oap->regname == '+') || +! #endif +! oap->regname == 0) && oap->motion_type != MLINE + && oap->line_count == 1) + { + oap->regname = '-'; +*** ../vim-7.3.497/src/version.c 2012-04-20 13:31:16.000000000 +0200 +--- src/version.c 2012-04-20 13:45:26.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 498, + /**/ + +-- +Did you ever stop to think... and forget to start again? + -- Steven Wright + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.499 b/source/ap/vim/patches/7.3.499 new file mode 100644 index 00000000..4e45e4fb --- /dev/null +++ b/source/ap/vim/patches/7.3.499 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.499 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.499 +Problem: When using any interface language when Vim is waiting for a child + process it gets confused by a child process started through the + interface. +Solution: Always used waitpid() instead of wait(). (Yasuhiro Matsumoto) +Files: src/os_unix.c + + +*** ../vim-7.3.498/src/os_unix.c 2012-02-05 22:51:27.000000000 +0100 +--- src/os_unix.c 2012-04-20 15:47:17.000000000 +0200 +*************** +*** 3734,3757 **** + + while (wait_pid != child) + { +! # ifdef _THREAD_SAFE +! /* Ugly hack: when compiled with Python threads are probably +! * used, in which case wait() sometimes hangs for no obvious +! * reason. Use waitpid() instead and loop (like the GUI). */ +! # ifdef __NeXT__ + wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0); +! # else + wait_pid = waitpid(child, status, WNOHANG); +! # endif + if (wait_pid == 0) + { + /* Wait for 1/100 sec before trying again. */ + mch_delay(10L, TRUE); + continue; + } +- # else +- wait_pid = wait(status); +- # endif + if (wait_pid <= 0 + # ifdef ECHILD + && errno == ECHILD +--- 3734,3754 ---- + + while (wait_pid != child) + { +! /* When compiled with Python threads are probably used, in which case +! * wait() sometimes hangs for no obvious reason. Use waitpid() +! * instead and loop (like the GUI). Also needed for other interfaces, +! * they might call system(). */ +! # ifdef __NeXT__ + wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0); +! # else + wait_pid = waitpid(child, status, WNOHANG); +! # endif + if (wait_pid == 0) + { + /* Wait for 1/100 sec before trying again. */ + mch_delay(10L, TRUE); + continue; + } + if (wait_pid <= 0 + # ifdef ECHILD + && errno == ECHILD +*** ../vim-7.3.498/src/version.c 2012-04-20 13:46:02.000000000 +0200 +--- src/version.c 2012-04-20 15:54:05.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 499, + /**/ + +-- +It's not hard to meet expenses, they're everywhere. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.500 b/source/ap/vim/patches/7.3.500 new file mode 100644 index 00000000..b3b6a375 --- /dev/null +++ b/source/ap/vim/patches/7.3.500 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.500 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.500 +Problem: Ming makefile unconditionally sets WINVER. +Solution: Only defined when not already defined. (Yasuhiro Matsumoto) +Files: src/Make_ming.mak + + +*** ../vim-7.3.499/src/Make_ming.mak 2012-03-28 17:43:06.000000000 +0200 +--- src/Make_ming.mak 2012-04-20 16:03:50.000000000 +0200 +*************** +*** 51,57 **** +--- 51,59 ---- + # set to yes to enable OLE support + OLE=no + # Set the default $(WINVER) to make it work with pre-Win2k ++ ifndef WINVER + WINVER = 0x0400 ++ endif + # Set to yes to enable Cscope support + CSCOPE=yes + # Set to yes to enable Netbeans support +*** ../vim-7.3.499/src/version.c 2012-04-20 15:55:10.000000000 +0200 +--- src/version.c 2012-04-20 16:12:34.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 500, + /**/ + +-- +Life is a gift, living is an art. (Bram Moolenaar) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.501 b/source/ap/vim/patches/7.3.501 new file mode 100644 index 00000000..a74b0288 --- /dev/null +++ b/source/ap/vim/patches/7.3.501 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.501 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.501 +Problem: Error for "flush" not being defined when using Ruby command. +Solution: Defined "flush" as a no-op method. (Kent Sibilev) +Files: src/if_ruby.c + + +*** ../vim-7.3.500/src/if_ruby.c 2011-08-04 19:34:55.000000000 +0200 +--- src/if_ruby.c 2012-04-20 16:18:56.000000000 +0200 +*************** +*** 1238,1243 **** +--- 1238,1248 ---- + return Qnil; + } + ++ static VALUE f_nop(VALUE self) ++ { ++ return Qnil; ++ } ++ + static VALUE f_p(int argc, VALUE *argv, VALUE self UNUSED) + { + int i; +*************** +*** 1259,1264 **** +--- 1264,1270 ---- + + rb_stdout = rb_obj_alloc(rb_cObject); + rb_define_singleton_method(rb_stdout, "write", vim_message, 1); ++ rb_define_singleton_method(rb_stdout, "flush", f_nop, 0); + rb_define_global_function("p", f_p, -1); + } + +*** ../vim-7.3.500/src/version.c 2012-04-20 16:13:21.000000000 +0200 +--- src/version.c 2012-04-20 16:19:03.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 501, + /**/ + +-- +Q: What do you call a fish without an eye? +A: fsh! +Q: What do you call a deer with no eyes? +A: no eye deer. +Q: What do you call a deer with no eyes and no legs? +A: still no eye deer. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.502 b/source/ap/vim/patches/7.3.502 new file mode 100644 index 00000000..c9710abf --- /dev/null +++ b/source/ap/vim/patches/7.3.502 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.502 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.502 +Problem: Netbeans insert halfway a line actually appends to the line. +Solution: Insert halfway the line. (Brian Victor) +Files: src/netbeans.c + + +*** ../vim-7.3.501/src/netbeans.c 2012-01-10 22:31:26.000000000 +0100 +--- src/netbeans.c 2012-04-20 19:44:31.000000000 +0200 +*************** +*** 1812,1825 **** + char_u *oldline = ml_get(lnum); + char_u *newline; + +! /* Insert halfway a line. For simplicity we assume we +! * need to append to the line. */ + newline = alloc_check( + (unsigned)(STRLEN(oldline) + len + 1)); + if (newline != NULL) + { +! STRCPY(newline, oldline); + STRCAT(newline, args); + ml_replace(lnum, newline, FALSE); + } + } +--- 1812,1826 ---- + char_u *oldline = ml_get(lnum); + char_u *newline; + +! /* Insert halfway a line. */ + newline = alloc_check( + (unsigned)(STRLEN(oldline) + len + 1)); + if (newline != NULL) + { +! mch_memmove(newline, oldline, (size_t)pos->col); +! newline[pos->col] = NUL; + STRCAT(newline, args); ++ STRCAT(newline, oldline + pos->col); + ml_replace(lnum, newline, FALSE); + } + } +*** ../vim-7.3.501/src/version.c 2012-04-20 18:05:42.000000000 +0200 +--- src/version.c 2012-04-20 19:46:48.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 502, + /**/ + +-- +Time flies like an arrow. +Fruit flies like a banana. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.503 b/source/ap/vim/patches/7.3.503 new file mode 100644 index 00000000..5b776ae0 --- /dev/null +++ b/source/ap/vim/patches/7.3.503 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.503 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.503 (after 7.3.501) +Problem: Warning for unused argument. +Solution: Add UNUSED. +Files: src/if_ruby.c + + +*** ../vim-7.3.502/src/if_ruby.c 2012-04-20 18:05:42.000000000 +0200 +--- src/if_ruby.c 2012-04-25 12:26:38.000000000 +0200 +*************** +*** 1238,1244 **** + return Qnil; + } + +! static VALUE f_nop(VALUE self) + { + return Qnil; + } +--- 1238,1244 ---- + return Qnil; + } + +! static VALUE f_nop(VALUE self UNUSED) + { + return Qnil; + } +*** ../vim-7.3.502/src/version.c 2012-04-20 19:47:00.000000000 +0200 +--- src/version.c 2012-04-25 12:27:30.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 503, + /**/ + +-- +Why isn't there mouse-flavored cat food? + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.504 b/source/ap/vim/patches/7.3.504 new file mode 100644 index 00000000..75227906 --- /dev/null +++ b/source/ap/vim/patches/7.3.504 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.504 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.504 +Problem: Commands in help files are not highlighted. +Solution: Allow for commands in backticks. Adjust CTRL-] to remove the + backticks. +Files: src/ex_cmds.c + + +*** ../vim-7.3.503/src/ex_cmds.c 2012-04-05 16:04:58.000000000 +0200 +--- src/ex_cmds.c 2012-04-25 12:51:41.000000000 +0200 +*************** +*** 3421,3427 **** + * and re-attach to buffer, perhaps. + */ + if (curwin->w_s == &(curwin->w_buffer->b_s)) +! curwin->w_s = &(buf->b_s); + #endif + curwin->w_buffer = buf; + curbuf = buf; +--- 3421,3427 ---- + * and re-attach to buffer, perhaps. + */ + if (curwin->w_s == &(curwin->w_buffer->b_s)) +! curwin->w_s = &(buf->b_s); + #endif + curwin->w_buffer = buf; + curbuf = buf; +*************** +*** 5965,5970 **** +--- 5965,5993 ---- + break; + } + *d = NUL; ++ ++ if (*IObuff == '`') ++ { ++ if (d > IObuff + 2 && d[-1] == '`') ++ { ++ /* remove the backticks from `command` */ ++ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff)); ++ d[-2] = NUL; ++ } ++ else if (d > IObuff + 3 && d[-2] == '`' && d[-1] == ',') ++ { ++ /* remove the backticks and comma from `command`, */ ++ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff)); ++ d[-3] = NUL; ++ } ++ else if (d > IObuff + 4 && d[-3] == '`' ++ && d[-2] == '\\' && d[-1] == '.') ++ { ++ /* remove the backticks and dot from `command`\. */ ++ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff)); ++ d[-4] = NUL; ++ } ++ } + } + } + +*** ../vim-7.3.503/src/version.c 2012-04-25 12:28:05.000000000 +0200 +--- src/version.c 2012-04-25 12:46:43.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 504, + /**/ + +-- +TIM: That is not an ordinary rabbit ... 'tis the most foul cruel and + bad-tempered thing you ever set eyes on. +ROBIN: You tit. I soiled my armour I was so scared! + "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 /// diff --git a/source/ap/vim/patches/7.3.505 b/source/ap/vim/patches/7.3.505 new file mode 100644 index 00000000..1a8a7ea3 --- /dev/null +++ b/source/ap/vim/patches/7.3.505 @@ -0,0 +1,116 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.505 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.505 +Problem: Test 11 fails on MS-Windows in some versions. +Solution: Fix #ifdefs for whether filtering through a pipe is possible. Move + setting b_no_eol_lnum back to where it was before patch 7.3.124. + (David Pope) +Files: src/feature.h, src/eval.c, src/ex_cmds.c, src/fileio.c + + +*** ../vim-7.3.504/src/feature.h 2011-10-20 21:09:25.000000000 +0200 +--- src/feature.h 2012-04-25 16:44:26.000000000 +0200 +*************** +*** 1316,1318 **** +--- 1316,1326 ---- + #ifdef FEAT_NORMAL + # define FEAT_PERSISTENT_UNDO + #endif ++ ++ /* ++ * +filterpipe ++ */ ++ #if (defined(UNIX) && !defined(USE_SYSTEM)) \ ++ || (defined(WIN3264) && defined(FEAT_GUI_W32)) ++ # define FEAT_FILTERPIPE ++ #endif +*** ../vim-7.3.504/src/eval.c 2012-04-05 16:53:55.000000000 +0200 +--- src/eval.c 2012-04-25 16:43:53.000000000 +0200 +*************** +*** 12090,12096 **** + #ifdef FEAT_SEARCHPATH + "file_in_path", + #endif +! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264) + "filterpipe", + #endif + #ifdef FEAT_FIND_ID +--- 12090,12096 ---- + #ifdef FEAT_SEARCHPATH + "file_in_path", + #endif +! #ifdef FEAT_FILTERPIPE + "filterpipe", + #endif + #ifdef FEAT_FIND_ID +*** ../vim-7.3.504/src/ex_cmds.c 2012-04-25 12:57:23.000000000 +0200 +--- src/ex_cmds.c 2012-04-25 16:46:02.000000000 +0200 +*************** +*** 1113,1119 **** + if (do_out) + shell_flags |= SHELL_DOOUT; + +! #if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264) + if (!do_in && do_out && !p_stmp) + { + /* Use a pipe to fetch stdout of the command, do not use a temp file. */ +--- 1113,1119 ---- + if (do_out) + shell_flags |= SHELL_DOOUT; + +! #ifdef FEAT_FILTERPIPE + if (!do_in && do_out && !p_stmp) + { + /* Use a pipe to fetch stdout of the command, do not use a temp file. */ +*** ../vim-7.3.504/src/fileio.c 2012-02-29 18:22:03.000000000 +0100 +--- src/fileio.c 2012-04-25 16:40:37.000000000 +0200 +*************** +*** 2655,2664 **** + } + #endif + +- /* Reset now, following writes should not omit the EOL. Also, the line +- * number will become invalid because of edits. */ +- curbuf->b_no_eol_lnum = 0; +- + if (recoverymode && error) + return FAIL; + return OK; +--- 2655,2660 ---- +*************** +*** 5098,5103 **** +--- 5094,5101 ---- + { + aco_save_T aco; + ++ curbuf->b_no_eol_lnum = 0; /* in case it was set by the previous read */ ++ + /* + * Apply POST autocommands. + * Careful: The autocommands may call buf_write() recursively! +*** ../vim-7.3.504/src/version.c 2012-04-25 12:57:23.000000000 +0200 +--- src/version.c 2012-04-25 16:49:50.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 505, + /**/ + +-- +Lose weight, NEVER Diet again with + The "Invisible Weight Loss Patch" + (spam e-mail) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.506 b/source/ap/vim/patches/7.3.506 new file mode 100644 index 00000000..32be6fd1 --- /dev/null +++ b/source/ap/vim/patches/7.3.506 @@ -0,0 +1,100 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.506 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.506 +Problem: GTK gives an error when selecting a non-existent file. +Solution: Add a handler to avoid the error. (Christian Brabandt) +Files: src/gui_gtk.c + + +*** ../vim-7.3.505/src/gui_gtk.c 2011-06-26 04:48:56.000000000 +0200 +--- src/gui_gtk.c 2012-04-25 17:08:58.000000000 +0200 +*************** +*** 90,95 **** +--- 90,100 ---- + static void entry_activate_cb(GtkWidget *widget, gpointer data); + static void entry_changed_cb(GtkWidget *entry, GtkWidget *dialog); + static void find_replace_cb(GtkWidget *widget, gpointer data); ++ static void recent_func_log_func( ++ const gchar *log_domain, ++ GLogLevelFlags log_level, ++ const gchar *message, ++ gpointer user_data); + + #if defined(FEAT_TOOLBAR) + /* +*************** +*** 839,844 **** +--- 844,851 ---- + GtkWidget *fc; + #endif + char_u dirbuf[MAXPATHL]; ++ guint log_handler; ++ const gchar *domain = "Gtk"; + + title = CONVERT_TO_UTF8(title); + +*************** +*** 853,858 **** +--- 860,870 ---- + /* If our pointer is currently hidden, then we should show it. */ + gui_mch_mousehide(FALSE); + ++ /* Hack: The GTK file dialog warns when it can't access a new file, this ++ * makes it shut up. http://bugzilla.gnome.org/show_bug.cgi?id=664587 */ ++ log_handler = g_log_set_handler(domain, G_LOG_LEVEL_WARNING, ++ recent_func_log_func, NULL); ++ + #ifdef USE_FILE_CHOOSER + /* We create the dialog each time, so that the button text can be "Open" + * or "Save" according to the action. */ +*************** +*** 916,921 **** +--- 928,934 ---- + gtk_widget_show(gui.filedlg); + gtk_main(); + #endif ++ g_log_remove_handler(domain, log_handler); + + CONVERT_TO_UTF8_FREE(title); + if (gui.browse_fname == NULL) +*************** +*** 1882,1884 **** +--- 1895,1908 ---- + * backwards compatibility anyway. */ + do_cmdline_cmd((char_u *)"emenu ToolBar.FindHelp"); + } ++ ++ static void ++ recent_func_log_func(const gchar *log_domain UNUSED, ++ GLogLevelFlags log_level UNUSED, ++ const gchar *message UNUSED, ++ gpointer user_data UNUSED) ++ { ++ /* We just want to suppress the warnings. */ ++ /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */ ++ } ++ +*** ../vim-7.3.505/src/version.c 2012-04-25 16:50:44.000000000 +0200 +--- src/version.c 2012-04-25 17:08:28.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 506, + /**/ + +-- +Compilation process failed successfully. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.507 b/source/ap/vim/patches/7.3.507 new file mode 100644 index 00000000..c96561c3 --- /dev/null +++ b/source/ap/vim/patches/7.3.507 @@ -0,0 +1,149 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.507 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.507 +Problem: When exiting with unsaved changes, selecting an existing file in + the file dialog, there is no dialog to ask whether the existing + file should be overwritten. (Felipe G. Nievinski) +Solution: Call check_overwrite() before writing. (Christian Brabandt) +Files: src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds.pro + + +*** ../vim-7.3.506/src/ex_cmds.c 2012-04-25 16:50:44.000000000 +0200 +--- src/ex_cmds.c 2012-04-25 17:19:53.000000000 +0200 +*************** +*** 25,31 **** + static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing)); + #endif + +- static int check_overwrite __ARGS((exarg_T *eap, buf_T *buf, char_u *fname, char_u *ffname, int other)); + static int check_readonly __ARGS((int *forceit, buf_T *buf)); + #ifdef FEAT_AUTOCMD + static void delbuf_msg __ARGS((char_u *name)); +--- 25,30 ---- +*************** +*** 2722,2728 **** + * May set eap->forceit if a dialog says it's OK to overwrite. + * Return OK if it's OK, FAIL if it is not. + */ +! static int + check_overwrite(eap, buf, fname, ffname, other) + exarg_T *eap; + buf_T *buf; +--- 2721,2727 ---- + * May set eap->forceit if a dialog says it's OK to overwrite. + * Return OK if it's OK, FAIL if it is not. + */ +! int + check_overwrite(eap, buf, fname, ffname, other) + exarg_T *eap; + buf_T *buf; +*** ../vim-7.3.506/src/ex_cmds2.c 2012-03-23 18:39:10.000000000 +0100 +--- src/ex_cmds2.c 2012-04-25 17:24:37.000000000 +0200 +*************** +*** 1489,1494 **** +--- 1489,1495 ---- + char_u buff[DIALOG_MSG_SIZE]; + int ret; + buf_T *buf2; ++ exarg_T ea; + + dialog_msg(buff, _("Save changes to \"%s\"?"), + (buf->b_fname != NULL) ? +*************** +*** 1498,1510 **** + else + ret = vim_dialog_yesnocancel(VIM_QUESTION, NULL, buff, 1); + + if (ret == VIM_YES) + { + #ifdef FEAT_BROWSE + /* May get file name, when there is none */ + browse_save_fname(buf); + #endif +! if (buf->b_fname != NULL) /* didn't hit Cancel */ + (void)buf_write_all(buf, FALSE); + } + else if (ret == VIM_NO) +--- 1499,1517 ---- + else + ret = vim_dialog_yesnocancel(VIM_QUESTION, NULL, buff, 1); + ++ /* Init ea pseudo-structure, this is needed for the check_overwrite() ++ * function. */ ++ ea.append = ea.forceit = FALSE; ++ + if (ret == VIM_YES) + { + #ifdef FEAT_BROWSE + /* May get file name, when there is none */ + browse_save_fname(buf); + #endif +! if (buf->b_fname != NULL && check_overwrite(&ea, buf, +! buf->b_fname, buf->b_ffname, FALSE) == OK) +! /* didn't hit Cancel */ + (void)buf_write_all(buf, FALSE); + } + else if (ret == VIM_NO) +*************** +*** 1532,1538 **** + /* May get file name, when there is none */ + browse_save_fname(buf2); + #endif +! if (buf2->b_fname != NULL) /* didn't hit Cancel */ + (void)buf_write_all(buf2, FALSE); + #ifdef FEAT_AUTOCMD + /* an autocommand may have deleted the buffer */ +--- 1539,1547 ---- + /* May get file name, when there is none */ + browse_save_fname(buf2); + #endif +! if (buf2->b_fname != NULL && check_overwrite(&ea, buf2, +! buf2->b_fname, buf2->b_ffname, FALSE) == OK) +! /* didn't hit Cancel */ + (void)buf_write_all(buf2, FALSE); + #ifdef FEAT_AUTOCMD + /* an autocommand may have deleted the buffer */ +*** ../vim-7.3.506/src/proto/ex_cmds.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/ex_cmds.pro 2012-04-25 17:25:47.000000000 +0200 +*************** +*** 23,28 **** +--- 23,29 ---- + void ex_update __ARGS((exarg_T *eap)); + void ex_write __ARGS((exarg_T *eap)); + int do_write __ARGS((exarg_T *eap)); ++ int check_overwrite __ARGS((exarg_T *eap, buf_T *buf, char_u *fname, char_u *ffname, int other)); + void ex_wnext __ARGS((exarg_T *eap)); + void do_wqall __ARGS((exarg_T *eap)); + int not_writing __ARGS((void)); +*** ../vim-7.3.506/src/version.c 2012-04-25 17:10:12.000000000 +0200 +--- src/version.c 2012-04-25 17:17:30.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 507, + /**/ + +-- +BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One. +ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O + Lord bless this thy hand grenade that with it thou mayest + blow thine enemies to tiny bits, in thy mercy. "and the Lord + did grin and people did feast upon the lambs and sloths and + carp and anchovies and orang-utans and breakfast cereals and + fruit bats and... +BROTHER MAYNARD: Skip a bit brother ... + "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 /// diff --git a/source/ap/vim/patches/7.3.508 b/source/ap/vim/patches/7.3.508 new file mode 100644 index 00000000..7b8e7b26 --- /dev/null +++ b/source/ap/vim/patches/7.3.508 @@ -0,0 +1,85 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.508 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.508 +Problem: Default for v:register is not set. +Solution: Init v:register in eval_init(). Correct for 'clipboard' before the + main loop. (Ingo Karkat) +Files: src/eval.c, src/main.c + + +*** ../vim-7.3.507/src/eval.c 2012-04-25 16:50:44.000000000 +0200 +--- src/eval.c 2012-04-25 17:56:41.000000000 +0200 +*************** +*** 880,885 **** +--- 880,886 ---- + hash_add(&compat_hashtab, p->vv_di.di_key); + } + set_vim_var_nr(VV_SEARCHFORWARD, 1L); ++ set_reg_var(0); /* default for v:register is not 0 but '"' */ + + #ifdef EBCDIC + /* +*** ../vim-7.3.507/src/main.c 2012-03-28 17:10:26.000000000 +0200 +--- src/main.c 2012-04-25 18:01:28.000000000 +0200 +*************** +*** 928,933 **** +--- 928,945 ---- + TIME_MSG("VimEnter autocommands"); + #endif + ++ #if defined(FEAT_EVAL) && defined(FEAT_CLIPBOARD) ++ /* Adjust default register name for "unnamed" in 'clipboard'. Can only be ++ * done after the clipboard is available and all initial commands that may ++ * modify the 'clipboard' setting have run; i.e. just before entering the ++ * main loop. */ ++ { ++ int default_regname = 0; ++ adjust_clip_reg(&default_regname); ++ set_reg_var(default_regname); ++ } ++ #endif ++ + #if defined(FEAT_DIFF) && defined(FEAT_SCROLLBIND) + /* When a startup script or session file setup for diff'ing and + * scrollbind, sync the scrollbind now. */ +*************** +*** 1357,1363 **** + { + apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, + buf->b_fname, FALSE, buf); +! buf->b_changedtick = -1; /* note that we did it already */ + /* start all over, autocommands may mess up the lists */ + next_tp = first_tabpage; + break; +--- 1369,1375 ---- + { + apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, + buf->b_fname, FALSE, buf); +! buf->b_changedtick = -1; /* note that we did it already */ + /* start all over, autocommands may mess up the lists */ + next_tp = first_tabpage; + break; +*** ../vim-7.3.507/src/version.c 2012-04-25 17:32:14.000000000 +0200 +--- src/version.c 2012-04-25 18:00:28.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 508, + /**/ + +-- +I wonder, do vegetarians eat fruit bats? + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.509 b/source/ap/vim/patches/7.3.509 new file mode 100644 index 00000000..8dfe9c09 --- /dev/null +++ b/source/ap/vim/patches/7.3.509 @@ -0,0 +1,304 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.509 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.509 +Problem: ":vimgrep" fails when 'autochdir' is set. +Solution: A more generic solution for changing directory. (Ben Fritz) +Files: src/quickfix.c + + +*** ../vim-7.3.508/src/quickfix.c 2012-03-07 20:13:44.000000000 +0100 +--- src/quickfix.c 2012-04-25 18:52:24.000000000 +0200 +*************** +*** 130,138 **** + static void qf_fill_buffer __ARGS((qf_info_T *qi)); + #endif + static char_u *get_mef_name __ARGS((void)); +! static buf_T *load_dummy_buffer __ARGS((char_u *fname)); +! static void wipe_dummy_buffer __ARGS((buf_T *buf)); +! static void unload_dummy_buffer __ARGS((buf_T *buf)); + static qf_info_T *ll_get_or_alloc_list __ARGS((win_T *)); + + /* Quickfix window check helper macro */ +--- 130,139 ---- + static void qf_fill_buffer __ARGS((qf_info_T *qi)); + #endif + static char_u *get_mef_name __ARGS((void)); +! static void restore_start_dir __ARGS((char_u *dirname_start)); +! static buf_T *load_dummy_buffer __ARGS((char_u *fname, char_u *dirname_start, char_u *resulting_dir)); +! static void wipe_dummy_buffer __ARGS((buf_T *buf, char_u *dirname_start)); +! static void unload_dummy_buffer __ARGS((buf_T *buf, char_u *dirname_start)); + static qf_info_T *ll_get_or_alloc_list __ARGS((win_T *)); + + /* Quickfix window check helper macro */ +*************** +*** 3237,3255 **** + + /* Load file into a buffer, so that 'fileencoding' is detected, + * autocommands applied, etc. */ +! buf = load_dummy_buffer(fname); +! +! /* When autocommands changed directory: go back. We assume it was +! * ":lcd %:p:h". */ +! mch_dirname(dirname_now, MAXPATHL); +! if (STRCMP(dirname_start, dirname_now) != 0) +! { +! exarg_T ea; +! +! ea.arg = dirname_start; +! ea.cmdidx = CMD_lcd; +! ex_cd(&ea); +! } + + p_mls = save_mls; + #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL) +--- 3238,3244 ---- + + /* Load file into a buffer, so that 'fileencoding' is detected, + * autocommands applied, etc. */ +! buf = load_dummy_buffer(fname, dirname_start, dirname_now); + + p_mls = save_mls; + #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL) +*************** +*** 3320,3326 **** + { + /* Never keep a dummy buffer if there is another buffer + * with the same name. */ +! wipe_dummy_buffer(buf); + buf = NULL; + } + else if (!cmdmod.hide +--- 3309,3315 ---- + { + /* Never keep a dummy buffer if there is another buffer + * with the same name. */ +! wipe_dummy_buffer(buf, dirname_start); + buf = NULL; + } + else if (!cmdmod.hide +*************** +*** 3336,3347 **** + * many swap files. */ + if (!found_match) + { +! wipe_dummy_buffer(buf); + buf = NULL; + } + else if (buf != first_match_buf || (flags & VGR_NOJUMP)) + { +! unload_dummy_buffer(buf); + buf = NULL; + } + } +--- 3325,3336 ---- + * many swap files. */ + if (!found_match) + { +! wipe_dummy_buffer(buf, dirname_start); + buf = NULL; + } + else if (buf != first_match_buf || (flags & VGR_NOJUMP)) + { +! unload_dummy_buffer(buf, dirname_start); + buf = NULL; + } + } +*************** +*** 3487,3499 **** + } + + /* +! * Load file "fname" into a dummy buffer and return the buffer pointer. + * Returns NULL if it fails. +- * Must call unload_dummy_buffer() or wipe_dummy_buffer() later! + */ + static buf_T * +! load_dummy_buffer(fname) + char_u *fname; + { + buf_T *newbuf; + buf_T *newbuf_to_wipe = NULL; +--- 3476,3523 ---- + } + + /* +! * Restore current working directory to "dirname_start" if they differ, taking +! * into account whether it is set locally or globally. +! */ +! static void +! restore_start_dir(dirname_start) +! char_u *dirname_start; +! { +! char_u *dirname_now = alloc(MAXPATHL); +! +! if (NULL != dirname_now) +! { +! mch_dirname(dirname_now, MAXPATHL); +! if (STRCMP(dirname_start, dirname_now) != 0) +! { +! /* If the directory has changed, change it back by building up an +! * appropriate ex command and executing it. */ +! exarg_T ea; +! +! ea.arg = dirname_start; +! ea.cmdidx = (curwin->w_localdir == NULL) ? CMD_cd : CMD_lcd; +! ex_cd(&ea); +! } +! } +! } +! +! /* +! * Load file "fname" into a dummy buffer and return the buffer pointer, +! * placing the directory resulting from the buffer load into the +! * "resulting_dir" pointer. "resulting_dir" must be allocated by the caller +! * prior to calling this function. Restores directory to "dirname_start" prior +! * to returning, if autocmds or the 'autochdir' option have changed it. +! * +! * If creating the dummy buffer does not fail, must call unload_dummy_buffer() +! * or wipe_dummy_buffer() later! +! * + * Returns NULL if it fails. + */ + static buf_T * +! load_dummy_buffer(fname, dirname_start, resulting_dir) + char_u *fname; ++ char_u *dirname_start; /* in: old directory */ ++ char_u *resulting_dir; /* out: new directory */ + { + buf_T *newbuf; + buf_T *newbuf_to_wipe = NULL; +*************** +*** 3548,3569 **** + wipe_buffer(newbuf_to_wipe, FALSE); + } + + if (!buf_valid(newbuf)) + return NULL; + if (failed) + { +! wipe_dummy_buffer(newbuf); + return NULL; + } + return newbuf; + } + + /* +! * Wipe out the dummy buffer that load_dummy_buffer() created. + */ + static void +! wipe_dummy_buffer(buf) + buf_T *buf; + { + if (curbuf != buf) /* safety check */ + { +--- 3572,3604 ---- + wipe_buffer(newbuf_to_wipe, FALSE); + } + ++ /* ++ * When autocommands/'autochdir' option changed directory: go back. ++ * Let the caller know what the resulting dir was first, in case it is ++ * important. ++ */ ++ mch_dirname(resulting_dir, MAXPATHL); ++ restore_start_dir(dirname_start); ++ + if (!buf_valid(newbuf)) + return NULL; + if (failed) + { +! wipe_dummy_buffer(newbuf, dirname_start); + return NULL; + } + return newbuf; + } + + /* +! * Wipe out the dummy buffer that load_dummy_buffer() created. Restores +! * directory to "dirname_start" prior to returning, if autocmds or the +! * 'autochdir' option have changed it. + */ + static void +! wipe_dummy_buffer(buf, dirname_start) + buf_T *buf; ++ char_u *dirname_start; + { + if (curbuf != buf) /* safety check */ + { +*************** +*** 3583,3600 **** + * new aborting error, interrupt, or uncaught exception. */ + leave_cleanup(&cs); + #endif + } + } + + /* +! * Unload the dummy buffer that load_dummy_buffer() created. + */ + static void +! unload_dummy_buffer(buf) + buf_T *buf; + { + if (curbuf != buf) /* safety check */ + close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE); + } + + #if defined(FEAT_EVAL) || defined(PROTO) +--- 3618,3645 ---- + * new aborting error, interrupt, or uncaught exception. */ + leave_cleanup(&cs); + #endif ++ /* When autocommands/'autochdir' option changed directory: go back. */ ++ restore_start_dir(dirname_start); + } + } + + /* +! * Unload the dummy buffer that load_dummy_buffer() created. Restores +! * directory to "dirname_start" prior to returning, if autocmds or the +! * 'autochdir' option have changed it. + */ + static void +! unload_dummy_buffer(buf, dirname_start) + buf_T *buf; ++ char_u *dirname_start; + { + if (curbuf != buf) /* safety check */ ++ { + close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE); ++ ++ /* When autocommands/'autochdir' option changed directory: go back. */ ++ restore_start_dir(dirname_start); ++ } + } + + #if defined(FEAT_EVAL) || defined(PROTO) +*** ../vim-7.3.508/src/version.c 2012-04-25 18:24:24.000000000 +0200 +--- src/version.c 2012-04-25 18:43:10.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 509, + /**/ + +-- + Arthur pulls Pin out. The MONK blesses the grenade as ... +ARTHUR: (quietly) One, two, five ... +GALAHAD: Three, sir! +ARTHUR: Three. + "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 /// diff --git a/source/ap/vim/patches/7.3.510 b/source/ap/vim/patches/7.3.510 new file mode 100644 index 00000000..afe10414 --- /dev/null +++ b/source/ap/vim/patches/7.3.510 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.510 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.510 +Problem: Test 77 fails on Solaris 7. (Michael Soyka) +Solution: Replace any tabs with spaces. +Files: src/testdir/test77.in + + +*** ../vim-7.3.509/src/testdir/test77.in 2011-03-22 18:10:34.000000000 +0100 +--- src/testdir/test77.in 2012-04-30 11:30:31.000000000 +0200 +*************** +*** 21,27 **** + :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile + ggdd + :w! Xtest +! :!cksum Xtest > test.out + :qa! + ENDTEST + +--- 21,29 ---- + :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile + ggdd + :w! Xtest +! :r !cksum Xtest +! :s/\s/ /g +! :.w! test.out + :qa! + ENDTEST + +*** ../vim-7.3.509/src/version.c 2012-04-25 18:57:17.000000000 +0200 +--- src/version.c 2012-04-30 11:33:35.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 510, + /**/ + +-- +SIGFUN -- signature too funny (core dumped) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.511 b/source/ap/vim/patches/7.3.511 new file mode 100644 index 00000000..a2b6dce0 --- /dev/null +++ b/source/ap/vim/patches/7.3.511 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.511 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.511 +Problem: Using a FileReadCmd autocommand that does ":e! {file}" may cause a + crash. (Christian Brabandt) +Solution: Properly restore curwin->w_s. +Files: src/fileio.c + + +*** ../vim-7.3.510/src/fileio.c 2012-04-25 16:50:44.000000000 +0200 +--- src/fileio.c 2012-04-30 17:04:22.000000000 +0200 +*************** +*** 8982,8987 **** +--- 8982,8991 ---- + && buf_valid(aco->new_curbuf) + && aco->new_curbuf->b_ml.ml_mfp != NULL) + { ++ # if defined(FEAT_SYN_HL) || defined(FEAT_SPELL) ++ if (curwin->w_s == &curbuf->b_s) ++ curwin->w_s = &aco->new_curbuf->b_s; ++ # endif + --curbuf->b_nwindows; + curbuf = aco->new_curbuf; + curwin->w_buffer = curbuf; +*** ../vim-7.3.510/src/version.c 2012-04-30 11:34:20.000000000 +0200 +--- src/version.c 2012-04-30 17:01:05.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 511, + /**/ + +-- +There is no right or wrong, there is only your personal opinion. + (Bram Moolenaar) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.512 b/source/ap/vim/patches/7.3.512 new file mode 100644 index 00000000..838ae3e2 --- /dev/null +++ b/source/ap/vim/patches/7.3.512 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.512 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.512 +Problem: undofile() returns a useless name when passed an empty string. +Solution: Return an empty string. (Christian Brabandt) +Files: src/eval.c + + +*** ../vim-7.3.511/src/eval.c 2012-04-25 18:24:24.000000000 +0200 +--- src/eval.c 2012-04-30 17:23:26.000000000 +0200 +*************** +*** 18259,18269 **** + rettv->v_type = VAR_STRING; + #ifdef FEAT_PERSISTENT_UNDO + { +! char_u *ffname = FullName_save(get_tv_string(&argvars[0]), FALSE); + +! if (ffname != NULL) +! rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); +! vim_free(ffname); + } + #else + rettv->vval.v_string = NULL; +--- 18259,18279 ---- + rettv->v_type = VAR_STRING; + #ifdef FEAT_PERSISTENT_UNDO + { +! char_u *fname = get_tv_string(&argvars[0]); + +! if (*fname == NUL) +! { +! /* If there is no file name there will be no undo file. */ +! rettv->vval.v_string = NULL; +! } +! else +! { +! char_u *ffname = FullName_save(fname, FALSE); +! +! if (ffname != NULL) +! rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); +! vim_free(ffname); +! } + } + #else + rettv->vval.v_string = NULL; +*** ../vim-7.3.511/src/version.c 2012-04-30 17:04:47.000000000 +0200 +--- src/version.c 2012-04-30 17:24:42.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 512, + /**/ + +-- +It is illegal for a driver to be blindfolded while operating a vehicle. + [real standing law in Alabama, 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 /// diff --git a/source/ap/vim/patches/7.3.513 b/source/ap/vim/patches/7.3.513 new file mode 100644 index 00000000..396969f5 --- /dev/null +++ b/source/ap/vim/patches/7.3.513 @@ -0,0 +1,129 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.513 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.513 +Problem: Cannot use CTRL-E and CTRL-Y with "r". +Solution: Make CTRL-E and CTRL-Y work like in Insert mode. (Christian + Brabandt) +Files: src/edit.c, src/normal.c, src/proto/edit.pro + + +*** ../vim-7.3.512/src/edit.c 2012-04-05 16:07:01.000000000 +0200 +--- src/edit.c 2012-04-30 17:53:47.000000000 +0200 +*************** +*** 253,259 **** + #ifdef FEAT_DIGRAPHS + static int ins_digraph __ARGS((void)); + #endif +- static int ins_copychar __ARGS((linenr_T lnum)); + static int ins_ctrl_ey __ARGS((int tc)); + #ifdef FEAT_SMARTINDENT + static void ins_try_si __ARGS((int c)); +--- 253,258 ---- +*************** +*** 9899,9905 **** + * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line. + * Returns the char to be inserted, or NUL if none found. + */ +! static int + ins_copychar(lnum) + linenr_T lnum; + { +--- 9898,9904 ---- + * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line. + * Returns the char to be inserted, or NUL if none found. + */ +! int + ins_copychar(lnum) + linenr_T lnum; + { +*** ../vim-7.3.512/src/normal.c 2012-03-28 12:59:53.000000000 +0200 +--- src/normal.c 2012-04-30 18:06:13.000000000 +0200 +*************** +*** 7070,7076 **** + for (n = cap->count1; n > 0; --n) + { + State = REPLACE; +! ins_char(cap->nchar); + State = old_State; + if (cap->ncharC1 != 0) + ins_char(cap->ncharC1); +--- 7070,7087 ---- + for (n = cap->count1; n > 0; --n) + { + State = REPLACE; +! if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y) +! { +! int c = ins_copychar(curwin->w_cursor.lnum +! + (cap->nchar == Ctrl_Y ? -1 : 1)); +! if (c != NUL) +! ins_char(c); +! else +! /* will be decremented further down */ +! ++curwin->w_cursor.col; +! } +! else +! ins_char(cap->nchar); + State = old_State; + if (cap->ncharC1 != 0) + ins_char(cap->ncharC1); +*************** +*** 7092,7098 **** + * line will be changed. + */ + ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE); +! ptr[curwin->w_cursor.col] = cap->nchar; + if (p_sm && msg_silent == 0) + showmatch(cap->nchar); + ++curwin->w_cursor.col; +--- 7103,7117 ---- + * line will be changed. + */ + ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE); +! if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y) +! { +! int c = ins_copychar(curwin->w_cursor.lnum +! + (cap->nchar == Ctrl_Y ? -1 : 1)); +! if (c != NUL) +! ptr[curwin->w_cursor.col] = c; +! } +! else +! ptr[curwin->w_cursor.col] = cap->nchar; + if (p_sm && msg_silent == 0) + showmatch(cap->nchar); + ++curwin->w_cursor.col; +*** ../vim-7.3.512/src/proto/edit.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/edit.pro 2012-04-30 17:54:41.000000000 +0200 +*************** +*** 39,42 **** +--- 39,43 ---- + int hkmap __ARGS((int c)); + void ins_scroll __ARGS((void)); + void ins_horscroll __ARGS((void)); ++ int ins_copychar __ARGS((linenr_T lnum)); + /* vim: set ft=c : */ +*** ../vim-7.3.512/src/version.c 2012-04-30 17:35:44.000000000 +0200 +--- src/version.c 2012-04-30 18:17:52.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 513, + /**/ + +-- +It is illegal for anyone to try and stop a child from playfully jumping over +puddles of water. + [real standing law in California, 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 /// diff --git a/source/ap/vim/patches/7.3.514 b/source/ap/vim/patches/7.3.514 new file mode 100644 index 00000000..79620f0e --- /dev/null +++ b/source/ap/vim/patches/7.3.514 @@ -0,0 +1,232 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.514 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.514 +Problem: No completion for :history command. +Solution: Add the completion and update the docs. Also fix ":behave" + completion. (Dominique Pelle) +Files: runtime/doc/cmdline.txt, runtime/doc/map.txt, src/ex_docmd.c, + src/ex_getln.c, src/vim.h + + +*** ../vim-7.3.513/runtime/doc/cmdline.txt 2010-08-15 21:57:17.000000000 +0200 +--- runtime/doc/cmdline.txt 2012-04-30 18:30:00.000000000 +0200 +*************** +*** 330,341 **** + + :his[tory] [{name}] [{first}][, [{last}]] + List the contents of history {name} which can be: +! c[md] or : command-line history +! s[earch] or / search string history +! e[xpr] or = expression register history +! i[nput] or @ input line history +! d[ebug] or > debug command history +! a[ll] all of the above + {not in Vi} + + If the numbers {first} and/or {last} are given, the respective +--- 330,341 ---- + + :his[tory] [{name}] [{first}][, [{last}]] + List the contents of history {name} which can be: +! c[md] or : command-line history +! s[earch] or / or ? search string history +! e[xpr] or = expression register history +! i[nput] or @ input line history +! d[ebug] or > debug command history +! a[ll] all of the above + {not in Vi} + + If the numbers {first} and/or {last} are given, the respective +*** ../vim-7.3.513/runtime/doc/map.txt 2011-07-20 16:36:35.000000000 +0200 +--- runtime/doc/map.txt 2012-04-30 18:30:00.000000000 +0200 +*************** +*** 1202,1207 **** +--- 1219,1225 ---- + + -complete=augroup autocmd groups + -complete=buffer buffer names ++ -complete=behave :behave suboptions + -complete=color color schemes + -complete=command Ex command (and arguments) + -complete=compiler compilers +*************** +*** 1216,1221 **** +--- 1234,1240 ---- + -complete=function function name + -complete=help help subjects + -complete=highlight highlight groups ++ -complete=history :history suboptions + -complete=locale locale names (as output of locale -a) + -complete=mapping mapping name + -complete=menu menus +*** ../vim-7.3.513/src/ex_docmd.c 2012-02-12 20:13:55.000000000 +0100 +--- src/ex_docmd.c 2012-04-30 18:33:27.000000000 +0200 +*************** +*** 3920,3927 **** +--- 3920,3935 ---- + #endif + case CMD_behave: + xp->xp_context = EXPAND_BEHAVE; ++ xp->xp_pattern = arg; + break; + ++ #if defined(FEAT_CMDHIST) ++ case CMD_history: ++ xp->xp_context = EXPAND_HISTORY; ++ xp->xp_pattern = arg; ++ break; ++ #endif ++ + #endif /* FEAT_CMDL_COMPL */ + + default: +*************** +*** 5329,5334 **** +--- 5337,5343 ---- + } command_complete[] = + { + {EXPAND_AUGROUP, "augroup"}, ++ {EXPAND_BEHAVE, "behave"}, + {EXPAND_BUFFERS, "buffer"}, + {EXPAND_COLORS, "color"}, + {EXPAND_COMMANDS, "command"}, +*************** +*** 5350,5357 **** + {EXPAND_FUNCTIONS, "function"}, + {EXPAND_HELP, "help"}, + {EXPAND_HIGHLIGHT, "highlight"}, + #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ +! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) + {EXPAND_LOCALES, "locale"}, + #endif + {EXPAND_MAPPINGS, "mapping"}, +--- 5359,5369 ---- + {EXPAND_FUNCTIONS, "function"}, + {EXPAND_HELP, "help"}, + {EXPAND_HIGHLIGHT, "highlight"}, ++ #if defined(FEAT_CMDHIST) ++ {EXPAND_HISTORY, "history"}, ++ #endif + #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ +! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) + {EXPAND_LOCALES, "locale"}, + #endif + {EXPAND_MAPPINGS, "mapping"}, +*** ../vim-7.3.513/src/ex_getln.c 2012-03-07 19:16:49.000000000 +0100 +--- src/ex_getln.c 2012-04-30 18:36:04.000000000 +0200 +*************** +*** 25,31 **** + int cmdlen; /* number of chars in command line */ + int cmdpos; /* current cursor position */ + int cmdspos; /* cursor column on screen */ +! int cmdfirstc; /* ':', '/', '?', '=' or NUL */ + int cmdindent; /* number of spaces before cmdline */ + char_u *cmdprompt; /* message in front of cmdline */ + int cmdattr; /* attributes for prompt */ +--- 25,31 ---- + int cmdlen; /* number of chars in command line */ + int cmdpos; /* current cursor position */ + int cmdspos; /* cursor column on screen */ +! int cmdfirstc; /* ':', '/', '?', '=', '>' or NUL */ + int cmdindent; /* number of spaces before cmdline */ + char_u *cmdprompt; /* message in front of cmdline */ + int cmdattr; /* attributes for prompt */ +*************** +*** 111,116 **** +--- 111,119 ---- + #ifdef FEAT_CMDL_COMPL + static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg)); + static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[])); ++ # ifdef FEAT_CMDHIST ++ static char_u *get_history_arg __ARGS((expand_T *xp, int idx)); ++ # endif + # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) + static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file)); + static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file)); +*************** +*** 4628,4633 **** +--- 4631,4639 ---- + { + {EXPAND_COMMANDS, get_command_name, FALSE, TRUE}, + {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE}, ++ #ifdef FEAT_CMDHIST ++ {EXPAND_HISTORY, get_history_arg, TRUE, TRUE}, ++ #endif + #ifdef FEAT_USR_CMDS + {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE}, + {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE}, +*************** +*** 5245,5250 **** +--- 5251,5284 ---- + NULL + }; + ++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO) ++ /* ++ * Function given to ExpandGeneric() to obtain the possible first ++ * arguments of the ":history command. ++ */ ++ static char_u * ++ get_history_arg(xp, idx) ++ expand_T *xp UNUSED; ++ int idx; ++ { ++ static char_u compl[2] = { NUL, NUL }; ++ char *short_names = ":=@>?/"; ++ int short_names_count = STRLEN(short_names); ++ int history_name_count = sizeof(history_names) / sizeof(char *) - 1; ++ ++ if (idx < short_names_count) ++ { ++ compl[0] = (char_u)short_names[idx]; ++ return compl; ++ } ++ if (idx < short_names_count + history_name_count) ++ return (char_u *)history_names[idx - short_names_count]; ++ if (idx == short_names_count + history_name_count) ++ return (char_u *)"all"; ++ return NULL; ++ } ++ #endif ++ + /* + * init_history() - Initialize the command line history. + * Also used to re-allocate the history when the size changes. +*** ../vim-7.3.513/src/vim.h 2012-03-23 16:25:13.000000000 +0100 +--- src/vim.h 2012-04-30 18:30:00.000000000 +0200 +*************** +*** 781,786 **** +--- 781,787 ---- + #define EXPAND_FILES_IN_PATH 38 + #define EXPAND_OWNSYNTAX 39 + #define EXPAND_LOCALES 40 ++ #define EXPAND_HISTORY 41 + + /* Values for exmode_active (0 is no exmode) */ + #define EXMODE_NORMAL 1 +*** ../vim-7.3.513/src/version.c 2012-04-30 18:18:43.000000000 +0200 +--- src/version.c 2012-04-30 18:36:19.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 514, + /**/ + +-- +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 /// diff --git a/source/ap/vim/patches/7.3.515 b/source/ap/vim/patches/7.3.515 new file mode 100644 index 00000000..dad6f617 --- /dev/null +++ b/source/ap/vim/patches/7.3.515 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.515 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.515 +Problem: 'wildignorecase' only applies to the last part of the path. +Solution: Also ignore case for letters earlier in the path. +Files: src/misc1.c + + +*** ../vim-7.3.514/src/misc1.c 2012-04-09 20:42:20.000000000 +0200 +--- src/misc1.c 2012-04-30 21:00:18.000000000 +0200 +*************** +*** 9461,9466 **** +--- 9461,9467 ---- + + /* + * Find the first part in the path name that contains a wildcard. ++ * When EW_ICASE is set every letter is considered to be a wildcard. + * Copy it into "buf", including the preceding characters. + */ + p = buf; +*************** +*** 9480,9486 **** + s = p + 1; + } + else if (path_end >= path + wildoff +! && vim_strchr((char_u *)"*?[{~$", *path_end) != NULL) + e = p; + #ifdef FEAT_MBYTE + if (has_mbyte) +--- 9481,9492 ---- + s = p + 1; + } + else if (path_end >= path + wildoff +! && (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL +! #ifndef CASE_INSENSITIVE_FILENAME +! || ((flags & EW_ICASE) +! && isalpha(PTR2CHAR(path_end))) +! #endif +! )) + e = p; + #ifdef FEAT_MBYTE + if (has_mbyte) +*** ../vim-7.3.514/src/version.c 2012-04-30 18:48:38.000000000 +0200 +--- src/version.c 2012-04-30 21:05:10.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 515, + /**/ + +-- +If an elephant is left tied to a parking meter, the parking fee has to be paid +just as it would for a vehicle. + [real standing law in Florida, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.516 b/source/ap/vim/patches/7.3.516 new file mode 100644 index 00000000..d43be5a0 --- /dev/null +++ b/source/ap/vim/patches/7.3.516 @@ -0,0 +1,94 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.516 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.516 +Problem: extend(o, o) may crash Vim. +Solution: Fix crash and add test. (Thinca and Hirohito Higashi) +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + + +*** ../vim-7.3.515/src/eval.c 2012-04-30 17:35:44.000000000 +0200 +--- src/eval.c 2012-05-18 12:02:44.000000000 +0200 +*************** +*** 10191,10197 **** + EMSG2(_("E737: Key already exists: %s"), hi2->hi_key); + break; + } +! else if (*action == 'f') + { + clear_tv(&di1->di_tv); + copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv); +--- 10191,10197 ---- + EMSG2(_("E737: Key already exists: %s"), hi2->hi_key); + break; + } +! else if (*action == 'f' && HI2DI(hi2) != di1) + { + clear_tv(&di1->di_tv); + copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv); +*** ../vim-7.3.515/src/testdir/test55.in 2010-11-10 20:31:24.000000000 +0100 +--- src/testdir/test55.in 2012-05-18 11:57:23.000000000 +0200 +*************** +*** 352,357 **** +--- 352,375 ---- + :let dict4copy = deepcopy(dict4) + :$put =(l == lcopy) + :$put =(dict4 == dict4copy) ++ :" ++ :" Pass the same List to extend() ++ :let l = [1, 2, 3, 4, 5] ++ :call extend(l, l) ++ :$put =string(l) ++ :" ++ :" Pass the same Dict to extend() ++ :let d = { 'a': {'b': 'B'}} ++ :call extend(d, d) ++ :$put =string(d) ++ :" ++ :" Pass the same Dict to extend() with "error" ++ :try ++ : call extend(d, d, "error") ++ :catch ++ : $put =v:exception[:15] . v:exception[-1:-1] ++ :endtry ++ :$put =string(d) + :endfun + :" + :call Test(1, 2, [3, 4], {5: 6}) " This may take a while +*** ../vim-7.3.515/src/testdir/test55.ok 2010-11-10 20:31:24.000000000 +0100 +--- src/testdir/test55.ok 2012-05-18 11:57:01.000000000 +0200 +*************** +*** 111,113 **** +--- 111,117 ---- + 0 + 1 + 1 ++ [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] ++ {'a': {'b': 'B'}} ++ Vim(call):E737: a ++ {'a': {'b': 'B'}} +*** ../vim-7.3.515/src/version.c 2012-04-30 21:09:38.000000000 +0200 +--- src/version.c 2012-05-18 12:04:54.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 516, + /**/ + +-- +I used to wonder about the meaning of life. But I looked it +up in the dictionary under "L" and there it was - the meaning +of life. It was less than I expected. - Dogbert + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.517 b/source/ap/vim/patches/7.3.517 new file mode 100644 index 00000000..343693ba --- /dev/null +++ b/source/ap/vim/patches/7.3.517 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.517 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.517 +Problem: Crash when using "vipvv". (Alexandre Provencio) +Solution: Don't let the text length become negative. +Files: src/ops.c + + +*** ../vim-7.3.516/src/ops.c 2012-04-20 13:46:02.000000000 +0200 +--- src/ops.c 2012-05-18 12:28:09.000000000 +0200 +*************** +*** 3042,3047 **** +--- 3042,3049 ---- + } + #endif + } ++ if (endcol == MAXCOL) ++ endcol = (colnr_T)STRLEN(p); + if (startcol > endcol + #ifdef FEAT_VIRTUALEDIT + || is_oneChar +*************** +*** 3050,3057 **** + bd.textlen = 0; + else + { +- if (endcol == MAXCOL) +- endcol = (colnr_T)STRLEN(p); + bd.textlen = endcol - startcol + oap->inclusive; + } + bd.textstart = p + startcol; +--- 3052,3057 ---- +*** ../vim-7.3.516/src/version.c 2012-05-18 12:06:58.000000000 +0200 +--- src/version.c 2012-05-18 12:48:51.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 517, + /**/ + +-- +BODY: I'm not dead! +CART DRIVER: 'Ere. He says he's not dead. +LARGE MAN: Yes he is. +BODY: I'm not! + "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 /// diff --git a/source/ap/vim/patches/7.3.518 b/source/ap/vim/patches/7.3.518 new file mode 100644 index 00000000..89429f0c --- /dev/null +++ b/source/ap/vim/patches/7.3.518 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.518 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.518 +Problem: When 'encoding' is a double-byte encoding ":helptags" may not find + tags correctly. +Solution: Use vim_strbyte() instead of vim_strchr(). (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + + +*** ../vim-7.3.517/src/ex_cmds.c 2012-04-25 17:32:14.000000000 +0200 +--- src/ex_cmds.c 2012-05-18 16:20:20.000000000 +0200 +*************** +*** 6535,6541 **** + p1 = vim_strchr(IObuff, '*'); /* find first '*' */ + while (p1 != NULL) + { +! p2 = vim_strchr(p1 + 1, '*'); /* find second '*' */ + if (p2 != NULL && p2 > p1 + 1) /* skip "*" and "**" */ + { + for (s = p1 + 1; s < p2; ++s) +--- 6535,6544 ---- + p1 = vim_strchr(IObuff, '*'); /* find first '*' */ + while (p1 != NULL) + { +! /* Use vim_strbyte() instead of vim_strchr() so that when +! * 'encoding' is dbcs it still works, don't find '*' in the +! * second byte. */ +! p2 = vim_strbyte(p1 + 1, '*'); /* find second '*' */ + if (p2 != NULL && p2 > p1 + 1) /* skip "*" and "**" */ + { + for (s = p1 + 1; s < p2; ++s) +*** ../vim-7.3.517/src/version.c 2012-05-18 12:49:33.000000000 +0200 +--- src/version.c 2012-05-18 16:23:50.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 518, + /**/ + +-- +If all you have is a hammer, everything looks like a nail. +When your hammer is C++, everything begins to look like a thumb. + -- Steve Hoflich, comp.lang.c++ + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.519 b/source/ap/vim/patches/7.3.519 new file mode 100644 index 00000000..846cea6b --- /dev/null +++ b/source/ap/vim/patches/7.3.519 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.519 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.519 +Problem: When completefunction returns it cannot indicate end of completion + mode. +Solution: Recognize completefunction returning -3. (Mtsushita Shougo) +Files: src/edit.c + + +*** ../vim-7.3.518/src/edit.c 2012-04-30 18:18:43.000000000 +0200 +--- src/edit.c 2012-05-18 16:35:06.000000000 +0200 +*************** +*** 5205,5213 **** + } + + /* Return value -2 means the user complete function wants to +! * cancel the complete without an error. */ + if (col == -2) + return FAIL; + + /* + * Reset extended parameters of completion, when start new +--- 5205,5221 ---- + } + + /* Return value -2 means the user complete function wants to +! * cancel the complete without an error. +! * Return value -3 does the same as -2 and leaves CTRL-X mode.*/ + if (col == -2) + return FAIL; ++ if (col == -3) ++ { ++ ctrl_x_mode = 0; ++ edit_submode = NULL; ++ msg_clr_cmdline(); ++ return FAIL; ++ } + + /* + * Reset extended parameters of completion, when start new +*** ../vim-7.3.518/src/version.c 2012-05-18 16:24:06.000000000 +0200 +--- src/version.c 2012-05-18 16:34:27.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 519, + /**/ + +-- +Looking at Perl through Lisp glasses, Perl looks atrocious. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.520 b/source/ap/vim/patches/7.3.520 new file mode 100644 index 00000000..9e2da8d7 --- /dev/null +++ b/source/ap/vim/patches/7.3.520 @@ -0,0 +1,140 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.520 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.520 +Problem: Gvim starts up slow on Unbuntu 12.04. +Solution: Move the call to gui_mch_init_check() to after fork(). (Yasuhiro + Matsumoto) Do check $DISPLAY being set. +Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro + + +*** ../vim-7.3.519/src/gui.c 2011-10-20 21:27:57.000000000 +0200 +--- src/gui.c 2012-05-18 16:53:14.000000000 +0200 +*************** +*** 270,275 **** +--- 270,281 ---- + } + /* Child */ + ++ #ifdef FEAT_GUI_GTK ++ /* Call gtk_init_check() here after fork(). See gui_init_check(). */ ++ if (gui_mch_init_check() != OK) ++ exit(1); ++ #endif ++ + # if defined(HAVE_SETSID) || defined(HAVE_SETPGID) + /* + * Change our process group. On some systems/shells a CTRL-C in the +*************** +*** 430,436 **** +--- 436,452 ---- + #ifdef ALWAYS_USE_GUI + result = OK; + #else ++ # ifdef FEAT_GUI_GTK ++ /* ++ * Note: Don't call gtk_init_check() before fork, it will be called after ++ * the fork. When calling it before fork, it make vim hang for a while. ++ * See gui_do_fork(). ++ * Use a simpler check if the GUI window can probably be opened. ++ */ ++ result = gui.dofork ? gui_mch_early_init_check() : gui_mch_init_check(); ++ # else + result = gui_mch_init_check(); ++ # endif + #endif + return result; + } +*** ../vim-7.3.519/src/gui_gtk_x11.c 2011-10-26 11:36:21.000000000 +0200 +--- src/gui_gtk_x11.c 2012-05-18 17:00:45.000000000 +0200 +*************** +*** 1414,1420 **** + } + + /* +! * Check if the GUI can be started. Called before gvimrc is sourced. + * Return OK or FAIL. + */ + int +--- 1414,1442 ---- + } + + /* +! * Check if the GUI can be started. Called before gvimrc is sourced and +! * before fork(). +! * Return OK or FAIL. +! */ +! int +! gui_mch_early_init_check(void) +! { +! char_u *p; +! +! /* Guess that when $DISPLAY isn't set the GUI can't start. */ +! p = mch_getenv((char_u *)"DISPLAY"); +! if (p == NULL || *p == NUL) +! { +! gui.dying = TRUE; +! EMSG(_((char *)e_opendisp)); +! return FAIL; +! } +! return OK; +! } +! +! /* +! * Check if the GUI can be started. Called before gvimrc is sourced but after +! * fork(). + * Return OK or FAIL. + */ + int +*************** +*** 3050,3056 **** + + for (i = 0; i < (int)N_SELECTION_TARGETS; ++i) + { +! /* OpenOffice tries to use TARGET_HTML and fails when it doesn't + * return something, instead of trying another target. Therefore only + * offer TARGET_HTML when it works. */ + if (!clip_html && selection_targets[i].info == TARGET_HTML) +--- 3072,3078 ---- + + for (i = 0; i < (int)N_SELECTION_TARGETS; ++i) + { +! /* OpenOffice tries to use TARGET_HTML and fails when we don't + * return something, instead of trying another target. Therefore only + * offer TARGET_HTML when it works. */ + if (!clip_html && selection_targets[i].info == TARGET_HTML) +*** ../vim-7.3.519/src/proto/gui_gtk_x11.pro 2011-08-10 17:44:41.000000000 +0200 +--- src/proto/gui_gtk_x11.pro 2012-05-18 16:54:28.000000000 +0200 +*************** +*** 4,9 **** +--- 4,10 ---- + void gui_mch_set_blinking __ARGS((long waittime, long on, long off)); + void gui_mch_stop_blink __ARGS((void)); + void gui_mch_start_blink __ARGS((void)); ++ int gui_mch_early_init_check __ARGS((void)); + int gui_mch_init_check __ARGS((void)); + void gui_mch_show_tabline __ARGS((int showit)); + int gui_mch_showing_tabline __ARGS((void)); +*** ../vim-7.3.519/src/version.c 2012-05-18 16:35:17.000000000 +0200 +--- src/version.c 2012-05-18 16:45:30.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 520, + /**/ + +-- +Bad programs can be written in any language. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.521 b/source/ap/vim/patches/7.3.521 new file mode 100644 index 00000000..efe7122b --- /dev/null +++ b/source/ap/vim/patches/7.3.521 @@ -0,0 +1,129 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.521 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.521 +Problem: Using "z=" on a multi-byte character may cause a crash. +Solution: Don't use strlen() on an int pointer. +Files: src/spell.c + + +*** ../vim-7.3.520/src/spell.c 2012-01-10 22:26:12.000000000 +0100 +--- src/spell.c 2012-05-18 18:01:58.000000000 +0200 +*************** +*** 14494,14506 **** + int p0 = -333; + int c0; + int did_white = FALSE; + + /* + * Convert the multi-byte string to a wide-character string. + * Remove accents, if wanted. We actually remove all non-word characters. + * But keep white space. + */ +! n = 0; + for (s = inword; *s != NUL; ) + { + t = s; +--- 14494,14508 ---- + int p0 = -333; + int c0; + int did_white = FALSE; ++ int wordlen; ++ + + /* + * Convert the multi-byte string to a wide-character string. + * Remove accents, if wanted. We actually remove all non-word characters. + * But keep white space. + */ +! wordlen = 0; + for (s = inword; *s != NUL; ) + { + t = s; +*************** +*** 14521,14532 **** + continue; + } + } +! word[n++] = c; + } +! word[n] = NUL; + + /* +! * This comes from Aspell phonet.cpp. + * Converted from C++ to C. Added support for multi-byte chars. + * Changed to keep spaces. + */ +--- 14523,14534 ---- + continue; + } + } +! word[wordlen++] = c; + } +! word[wordlen] = NUL; + + /* +! * This algorithm comes from Aspell phonet.cpp. + * Converted from C++ to C. Added support for multi-byte chars. + * Changed to keep spaces. + */ +*************** +*** 14711,14717 **** + } + if (k > k0) + mch_memmove(word + i + k0, word + i + k, +! sizeof(int) * (STRLEN(word + i + k) + 1)); + + /* new "actual letter" */ + c = word[i]; +--- 14713,14719 ---- + } + if (k > k0) + mch_memmove(word + i + k0, word + i + k, +! sizeof(int) * (wordlen - (i + k) + 1)); + + /* new "actual letter" */ + c = word[i]; +*************** +*** 14739,14745 **** + if (c != NUL) + wres[reslen++] = c; + mch_memmove(word, word + i + 1, +! sizeof(int) * (STRLEN(word + i + 1) + 1)); + i = 0; + z0 = 1; + } +--- 14741,14747 ---- + if (c != NUL) + wres[reslen++] = c; + mch_memmove(word, word + i + 1, +! sizeof(int) * (wordlen - (i + 1) + 1)); + i = 0; + z0 = 1; + } +*** ../vim-7.3.520/src/version.c 2012-05-18 17:03:14.000000000 +0200 +--- src/version.c 2012-05-18 18:06:29.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 521, + /**/ + +-- +OLD WOMAN: King of the WHO? +ARTHUR: The Britons. +OLD WOMAN: Who are the Britons? + "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 /// diff --git a/source/ap/vim/patches/7.3.522 b/source/ap/vim/patches/7.3.522 new file mode 100644 index 00000000..2f4d17ce --- /dev/null +++ b/source/ap/vim/patches/7.3.522 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.522 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.522 +Problem: Crash in vim_realloc() when using MEM_PROFILE. +Solution: Avoid using a NULL argument. (Dominique Pelle) +Files: src/eval.c + + +*** ../vim-7.3.521/src/eval.c 2012-05-18 12:06:58.000000000 +0200 +--- src/eval.c 2012-05-18 18:19:25.000000000 +0200 +*************** +*** 14643,14649 **** + long growmin = (long)((p - start) * 2 + prevlen); + prevsize = grow50pc > growmin ? grow50pc : growmin; + } +! if ((newprev = vim_realloc(prev, prevsize)) == NULL) + { + do_outofmem_msg((long_u)prevsize); + failed = TRUE; +--- 14643,14651 ---- + long growmin = (long)((p - start) * 2 + prevlen); + prevsize = grow50pc > growmin ? grow50pc : growmin; + } +! newprev = prev == NULL ? alloc(prevsize) +! : vim_realloc(prev, prevsize); +! if (newprev == NULL) + { + do_outofmem_msg((long_u)prevsize); + failed = TRUE; +*** ../vim-7.3.521/src/version.c 2012-05-18 18:07:57.000000000 +0200 +--- src/version.c 2012-05-18 18:33:36.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 522, + /**/ + +-- +ARTHUR: ... and I am your king .... +OLD WOMAN: Ooooh! I didn't know we had a king. I thought we were an + autonomous collective ... + "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 /// diff --git a/source/ap/vim/patches/7.3.523 b/source/ap/vim/patches/7.3.523 new file mode 100644 index 00000000..7eec3ea2 --- /dev/null +++ b/source/ap/vim/patches/7.3.523 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.523 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.523 +Problem: ":diffupdate" doesn't check for files changed elsewhere. +Solution: Add the ! flag. (Christian Brabandt) +Files: runtime/doc/diff.txt, src/diff.c, src/ex_cmds.h + + +*** ../vim-7.3.522/runtime/doc/diff.txt 2010-08-15 21:57:16.000000000 +0200 +--- runtime/doc/diff.txt 2012-05-18 18:41:49.000000000 +0200 +*************** +*** 178,184 **** + nodiff" before hiding it. + + *:diffu* *:diffupdate* +! :diffu[pdate] Update the diff highlighting and folds. + + Vim attempts to keep the differences updated when you make changes to the + text. This mostly takes care of inserted and deleted lines. Changes within a +--- 178,184 ---- + nodiff" before hiding it. + + *:diffu* *:diffupdate* +! :diffu[pdate][!] Update the diff highlighting and folds. + + Vim attempts to keep the differences updated when you make changes to the + text. This mostly takes care of inserted and deleted lines. Changes within a +*************** +*** 187,192 **** +--- 187,195 ---- + + :diffupdate + ++ If the ! is included Vim will check if the file was changed externally and ++ needs to be reloaded. It will prompt for each changed file, like `:checktime` ++ was used. + + Vim will show filler lines for lines that are missing in one window but are + present in another. These lines were inserted in another file or deleted in +*** ../vim-7.3.522/src/diff.c 2010-09-21 16:56:29.000000000 +0200 +--- src/diff.c 2012-05-18 18:45:09.000000000 +0200 +*************** +*** 783,788 **** +--- 783,797 ---- + goto theend; + } + ++ /* :diffupdate! */ ++ if (eap != NULL && eap->forceit) ++ for (idx_new = idx_orig; idx_new < DB_COUNT; ++idx_new) ++ { ++ buf = curtab->tp_diffbuf[idx_new]; ++ if (buf_valid(buf)) ++ buf_check_timestamp(buf, FALSE); ++ } ++ + /* Write the first buffer to a tempfile. */ + buf = curtab->tp_diffbuf[idx_orig]; + if (diff_write(buf, tmp_orig) == FAIL) +*** ../vim-7.3.522/src/ex_cmds.h 2012-02-13 00:01:38.000000000 +0100 +--- src/ex_cmds.h 2012-05-18 18:37:56.000000000 +0200 +*************** +*** 304,310 **** + EX(CMD_display, "display", ex_display, + EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_diffupdate, "diffupdate", ex_diffupdate, +! TRLBAR), + EX(CMD_diffget, "diffget", ex_diffgetput, + RANGE|EXTRA|TRLBAR|MODIFY), + EX(CMD_diffoff, "diffoff", ex_diffoff, +--- 304,310 ---- + EX(CMD_display, "display", ex_display, + EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_diffupdate, "diffupdate", ex_diffupdate, +! BANG|TRLBAR), + EX(CMD_diffget, "diffget", ex_diffgetput, + RANGE|EXTRA|TRLBAR|MODIFY), + EX(CMD_diffoff, "diffoff", ex_diffoff, +*** ../vim-7.3.522/src/version.c 2012-05-18 18:34:15.000000000 +0200 +--- src/version.c 2012-05-18 18:39:13.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 523 + /**/ + +-- +"The future's already arrived - it's just not evenly distributed yet." + -- William Gibson + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.524 b/source/ap/vim/patches/7.3.524 new file mode 100644 index 00000000..80d7baf6 --- /dev/null +++ b/source/ap/vim/patches/7.3.524 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.524 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.524 (after 7.3.523) +Problem: Missing comma. +Solution: Add the comma. +Files: src/version.c + + +*** ../vim-7.3.523/src/version.c 2012-05-18 18:47:11.000000000 +0200 +--- src/version.c 2012-05-18 21:52:26.000000000 +0200 +*************** +*** 715,721 **** + static int included_patches[] = + { /* Add new patch number below this line */ + /**/ +! 523 + /**/ + 522, + /**/ +--- 715,723 ---- + static int included_patches[] = + { /* Add new patch number below this line */ + /**/ +! 524, +! /**/ +! 523, + /**/ + 522, + /**/ + +-- +DENNIS: You can't expect to wield supreme executive power just 'cause some + watery tart threw a sword at you! + "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 /// diff --git a/source/ap/vim/patches/7.3.525 b/source/ap/vim/patches/7.3.525 new file mode 100644 index 00000000..c9741cbf --- /dev/null +++ b/source/ap/vim/patches/7.3.525 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.525 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.525 +Problem: Compiler warning on 64 bit MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/ex_getln.c + + +*** ../vim-7.3.524/src/ex_getln.c 2012-04-30 18:48:38.000000000 +0200 +--- src/ex_getln.c 2012-05-23 20:33:16.000000000 +0200 +*************** +*** 5263,5269 **** + { + static char_u compl[2] = { NUL, NUL }; + char *short_names = ":=@>?/"; +! int short_names_count = STRLEN(short_names); + int history_name_count = sizeof(history_names) / sizeof(char *) - 1; + + if (idx < short_names_count) +--- 5263,5269 ---- + { + static char_u compl[2] = { NUL, NUL }; + char *short_names = ":=@>?/"; +! int short_names_count = (int)STRLEN(short_names); + int history_name_count = sizeof(history_names) / sizeof(char *) - 1; + + if (idx < short_names_count) +*** ../vim-7.3.524/src/version.c 2012-05-18 21:53:29.000000000 +0200 +--- src/version.c 2012-05-25 11:01:51.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 525, + /**/ + +-- +For humans, honesty is a matter of degree. Engineers are always honest in +matters of technology and human relationships. That's why it's a good idea +to keep engineers away from customers, romantic interests, and other people +who can't handle the truth. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.526 b/source/ap/vim/patches/7.3.526 new file mode 100644 index 00000000..036d401f --- /dev/null +++ b/source/ap/vim/patches/7.3.526 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.526 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.526 +Problem: Confusing indenting for #ifdef. +Solution: Remove and add indent. (Elias Diem) +Files: src/normal.c + + +*** ../vim-7.3.525/src/normal.c 2012-04-30 18:18:43.000000000 +0200 +--- src/normal.c 2012-05-23 20:35:13.000000000 +0200 +*************** +*** 29,37 **** + static void set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount)); + #endif + static int +! # ifdef __BORLANDC__ +! _RTLENTRYF +! # endif + nv_compare __ARGS((const void *s1, const void *s2)); + static int find_command __ARGS((int cmdchar)); + static void op_colon __ARGS((oparg_T *oap)); +--- 29,37 ---- + static void set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount)); + #endif + static int +! #ifdef __BORLANDC__ +! _RTLENTRYF +! #endif + nv_compare __ARGS((const void *s1, const void *s2)); + static int find_command __ARGS((int cmdchar)); + static void op_colon __ARGS((oparg_T *oap)); +*** ../vim-7.3.525/src/version.c 2012-05-25 11:02:34.000000000 +0200 +--- src/version.c 2012-05-25 11:03:37.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 526, + /**/ + +-- +While it's true that many normal people whould prefer not to _date_ an +engineer, most normal people harbor an intense desire to _mate_ with them, +thus producing engineerlike children who will have high-paying jobs long +before losing their virginity. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.527 b/source/ap/vim/patches/7.3.527 new file mode 100644 index 00000000..0c6af2b0 --- /dev/null +++ b/source/ap/vim/patches/7.3.527 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.527 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=latin1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.527 +Problem: Clang complains about non-ASCII characters in a string. +Solution: Change to \x88 form. (Dominique Pelle) +Files: src/charset.c + + +*** ../vim-7.3.526/src/charset.c 2012-01-26 13:40:04.000000000 +0100 +--- src/charset.c 2012-05-25 11:49:58.000000000 +0200 +*************** +*** 1602,1611 **** + #define LATIN1LOWER 'l' + #define LATIN1UPPER 'U' + +- /* !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]%_'abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ */ + static char_u latin1flags[257] = " UUUUUUUUUUUUUUUUUUUUUUUUUU llllllllllllllllllllllllll UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll"; +! static char_u latin1upper[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ÷ØÙÚÛÜÝÞÿ"; +! static char_u latin1lower[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõö×øùúûüýþßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"; + + int + vim_islower(c) +--- 1602,1610 ---- + #define LATIN1LOWER 'l' + #define LATIN1UPPER 'U' + + static char_u latin1flags[257] = " UUUUUUUUUUUUUUUUUUUUUUUUUU llllllllllllllllllllllllll UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll"; +! static char_u latin1upper[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xf7\xd8\xd9\xda\xdb\xdc\xdd\xde\xff"; +! static char_u latin1lower[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xd7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"; + + int + vim_islower(c) +*** ../vim-7.3.526/src/version.c 2012-05-25 11:04:34.000000000 +0200 +--- src/version.c 2012-05-25 11:52:06.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 527, + /**/ + +-- +An alien life briefly visits earth. Just before departing it leaves a +message in the dust on the back of a white van. The world is shocked +and wants to know what it means. After months of studies the worlds +best linguistic scientists are able to decipher the message: "Wash me!". + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.528 b/source/ap/vim/patches/7.3.528 new file mode 100644 index 00000000..41084ad4 --- /dev/null +++ b/source/ap/vim/patches/7.3.528 @@ -0,0 +1,171 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.528 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.528 +Problem: Crash when closing last window in a tab. (Alex Efros) +Solution: Use common code in close_last_window_tabpage(). (Christian + Brabandt) +Files: src/window.c + + +*** ../vim-7.3.527/src/window.c 2012-03-16 19:07:54.000000000 +0100 +--- src/window.c 2012-05-25 12:25:16.000000000 +0200 +*************** +*** 23,28 **** +--- 23,29 ---- + static void win_totop __ARGS((int size, int flags)); + static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height)); + static int last_window __ARGS((void)); ++ static int close_last_window_tabpage __ARGS((win_T *win, int free_buf, tabpage_T *prev_curtab)); + static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp)); + static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp)); + static tabpage_T *alt_tabpage __ARGS((void)); +*************** +*** 2105,2110 **** +--- 2106,2147 ---- + } + + /* ++ * Close the possibly last window in a tab page. ++ * Returns TRUE when the window was closed already. ++ */ ++ static int ++ close_last_window_tabpage(win, free_buf, prev_curtab) ++ win_T *win; ++ int free_buf; ++ tabpage_T *prev_curtab; ++ { ++ if (firstwin == lastwin) ++ { ++ /* ++ * Closing the last window in a tab page. First go to another tab ++ * page and then close the window and the tab page. This avoids that ++ * curwin and curtab are invalid while we are freeing memory, they may ++ * be used in GUI events. ++ */ ++ goto_tabpage_tp(alt_tabpage()); ++ redraw_tabline = TRUE; ++ ++ /* Safety check: Autocommands may have closed the window when jumping ++ * to the other tab page. */ ++ if (valid_tabpage(prev_curtab) && prev_curtab->tp_firstwin == win) ++ { ++ int h = tabline_height(); ++ ++ win_close_othertab(win, free_buf, prev_curtab); ++ if (h != tabline_height()) ++ shell_new_rows(); ++ } ++ return TRUE; ++ } ++ return FALSE; ++ } ++ ++ /* + * Close window "win". Only works for the current tab page. + * If "free_buf" is TRUE related buffer may be unloaded. + * +*************** +*** 2143,2171 **** + } + #endif + +! /* +! * When closing the last window in a tab page first go to another tab +! * page and then close the window and the tab page. This avoids that +! * curwin and curtab are not invalid while we are freeing memory, they may +! * be used in GUI events. +! */ +! if (firstwin == lastwin) +! { +! goto_tabpage_tp(alt_tabpage()); +! redraw_tabline = TRUE; +! +! /* Safety check: Autocommands may have closed the window when jumping +! * to the other tab page. */ +! if (valid_tabpage(prev_curtab) && prev_curtab->tp_firstwin == win) +! { +! int h = tabline_height(); +! +! win_close_othertab(win, free_buf, prev_curtab); +! if (h != tabline_height()) +! shell_new_rows(); +! } +! return; +! } + + /* When closing the help window, try restoring a snapshot after closing + * the window. Otherwise clear the snapshot, it's now invalid. */ +--- 2180,2190 ---- + } + #endif + +! /* When closing the last window in a tab page first go to another tab page +! * and then close the window and the tab page to avoid that curwin and +! * curtab are invalid while we are freeing memory. */ +! if (close_last_window_tabpage(win, free_buf, prev_curtab)) +! return; + + /* When closing the help window, try restoring a snapshot after closing + * the window. Otherwise clear the snapshot, it's now invalid. */ +*************** +*** 2225,2231 **** + + /* Autocommands may have closed the window already, or closed the only + * other window or moved to another tab page. */ +! if (!win_valid(win) || last_window() || curtab != prev_curtab) + return; + + /* Free the memory used for the window and get the window that received +--- 2244,2251 ---- + + /* Autocommands may have closed the window already, or closed the only + * other window or moved to another tab page. */ +! if (!win_valid(win) || last_window() || curtab != prev_curtab +! || close_last_window_tabpage(win, free_buf, prev_curtab)) + return; + + /* Free the memory used for the window and get the window that received +*************** +*** 2310,2316 **** + + /* + * Close window "win" in tab page "tp", which is not the current tab page. +! * This may be the last window ih that tab page and result in closing the tab, + * thus "tp" may become invalid! + * Caller must check if buffer is hidden and whether the tabline needs to be + * updated. +--- 2330,2336 ---- + + /* + * Close window "win" in tab page "tp", which is not the current tab page. +! * This may be the last window in that tab page and result in closing the tab, + * thus "tp" may become invalid! + * Caller must check if buffer is hidden and whether the tabline needs to be + * updated. +*** ../vim-7.3.527/src/version.c 2012-05-25 11:56:06.000000000 +0200 +--- src/version.c 2012-05-25 12:38:25.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 528, + /**/ + +-- +For society, it's probably a good thing that engineers value function over +appearance. For example, you wouldn't want engineers to build nuclear power +plants that only _look_ like they would keep all the radiation inside. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.529 b/source/ap/vim/patches/7.3.529 new file mode 100644 index 00000000..386baf1f --- /dev/null +++ b/source/ap/vim/patches/7.3.529 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.529 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.529 +Problem: Using a count before "v" and "V" does not work (Kikyous) +Solution: Make the count select that many characters or lines. (Christian + Brabandt) +Files: src/normal.c + + +*** ../vim-7.3.528/src/normal.c 2012-05-25 11:04:34.000000000 +0200 +--- src/normal.c 2012-05-25 13:12:06.000000000 +0200 +*************** +*** 7660,7672 **** + else /* start Visual mode */ + { + check_visual_highlight(); +! if (cap->count0) /* use previously selected part */ + { +! if (resel_VIsual_mode == NUL) /* there is none */ +! { +! beep_flush(); +! return; +! } + VIsual = curwin->w_cursor; + + VIsual_active = TRUE; +--- 7660,7668 ---- + else /* start Visual mode */ + { + check_visual_highlight(); +! if (cap->count0 > 0 && resel_VIsual_mode != NUL) + { +! /* use previously selected part */ + VIsual = curwin->w_cursor; + + VIsual_active = TRUE; +*************** +*** 7725,7730 **** +--- 7721,7736 ---- + /* start Select mode when 'selectmode' contains "cmd" */ + may_start_select('c'); + n_start_visual_mode(cap->cmdchar); ++ if (VIsual_mode != 'V' && *p_sel == 'e') ++ ++cap->count1; /* include one more char */ ++ if (cap->count0 > 0 && --cap->count1 > 0) ++ { ++ /* With a count select that many characters or lines. */ ++ if (VIsual_mode == 'v' || VIsual_mode == Ctrl_V) ++ nv_right(cap); ++ else if (VIsual_mode == 'V') ++ nv_down(cap); ++ } + } + } + } +*** ../vim-7.3.528/src/version.c 2012-05-25 12:38:57.000000000 +0200 +--- src/version.c 2012-05-25 12:59:58.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 529, + /**/ + +-- +Normal people believe that if it ain't broke, don't fix it. Engineers believe +that if it ain't broke, it doesn't have enough features yet. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.530 b/source/ap/vim/patches/7.3.530 new file mode 100644 index 00000000..216117ca --- /dev/null +++ b/source/ap/vim/patches/7.3.530 @@ -0,0 +1,50 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.530 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.530 (after 7.3.520) +Problem: Gvim does not work when 'guioptions' includes "f". (Davido) +Solution: Call gui_mch_init_check() when running GUI in the foreground. + (Yasuhiro Matsumoto) +Files: src/gui.c + + +*** ../vim-7.3.529/src/gui.c 2012-05-18 17:03:13.000000000 +0200 +--- src/gui.c 2012-05-25 14:01:26.000000000 +0200 +*************** +*** 102,107 **** +--- 102,111 ---- + else + #endif + { ++ /* If there is 'f' in 'guioptions' and specify -g argument, ++ * gui_mch_init_check() was not called yet. */ ++ if (gui_mch_init_check() != OK) ++ exit(1); + gui_attempt_start(); + } + +*** ../vim-7.3.529/src/version.c 2012-05-25 13:12:33.000000000 +0200 +--- src/version.c 2012-05-25 14:05:46.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 530, + /**/ + +-- +I think that you'll agree that engineers are very effective in their social +interactions. It's the "normal" people who are nuts. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.531 b/source/ap/vim/patches/7.3.531 new file mode 100644 index 00000000..652bdb73 --- /dev/null +++ b/source/ap/vim/patches/7.3.531 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.531 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.531 (after 7.3.530) +Problem: GUI does not work on MS-Windows. +Solution: Add the missing #ifdef. (Patrick Avery) +Files: src/gui.c + + +*** ../vim-7.3.530/src/gui.c 2012-05-25 14:06:18.000000000 +0200 +--- src/gui.c 2012-05-27 00:34:51.000000000 +0200 +*************** +*** 102,111 **** +--- 102,113 ---- + else + #endif + { ++ #ifdef FEAT_GUI_GTK + /* If there is 'f' in 'guioptions' and specify -g argument, + * gui_mch_init_check() was not called yet. */ + if (gui_mch_init_check() != OK) + exit(1); ++ #endif + gui_attempt_start(); + } + +*** ../vim-7.3.530/src/version.c 2012-05-25 14:06:18.000000000 +0200 +--- src/version.c 2012-05-27 00:37:33.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 531, + /**/ + +-- +I learned the customs and mannerisms of engineers by observing them, much the +way Jane Goodall learned about the great apes, but without the hassle of +grooming. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.532 b/source/ap/vim/patches/7.3.532 new file mode 100644 index 00000000..071cab34 --- /dev/null +++ b/source/ap/vim/patches/7.3.532 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.532 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.532 +Problem: Compiler warning from Clang. +Solution: Use a different way to point inside a string. (Dominique Pelle) +Files: src/syntax.c + + +*** ../vim-7.3.531/src/syntax.c 2012-03-23 16:25:13.000000000 +0100 +--- src/syntax.c 2012-06-01 13:13:58.000000000 +0200 +*************** +*** 9476,9482 **** + int cnt; + int attr; + { +! msg_puts_attr((char_u *)("N \bI \b! \b" + cnt / 11), attr); + msg_clr_eos(); + out_flush(); + ui_delay(cnt == 99 ? 40L : (long)cnt * 50L, FALSE); +--- 9476,9482 ---- + int cnt; + int attr; + { +! msg_puts_attr((char_u *)&("N \bI \b! \b"[cnt / 11]), attr); + msg_clr_eos(); + out_flush(); + ui_delay(cnt == 99 ? 40L : (long)cnt * 50L, FALSE); +*** ../vim-7.3.531/src/version.c 2012-05-27 00:37:45.000000000 +0200 +--- src/version.c 2012-06-01 13:14:51.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 532, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +8. You spend half of the plane trip with your laptop on your lap...and your + child in the overhead compartment. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.533 b/source/ap/vim/patches/7.3.533 new file mode 100644 index 00000000..1d71c8d1 --- /dev/null +++ b/source/ap/vim/patches/7.3.533 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.533 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.533 +Problem: Memory leak when writing undo file. +Solution: Free the ACL. (Dominique Pelle) +Files: src/undo.c + + +*** ../vim-7.3.532/src/undo.c 2011-12-08 15:14:04.000000000 +0100 +--- src/undo.c 2012-06-01 13:38:42.000000000 +0200 +*************** +*** 1535,1540 **** +--- 1535,1541 ---- + /* For systems that support ACL: get the ACL from the original file. */ + acl = mch_get_acl(buf->b_ffname); + mch_set_acl(file_name, acl); ++ mch_free_acl(acl); + } + #endif + +*** ../vim-7.3.532/src/version.c 2012-06-01 13:18:48.000000000 +0200 +--- src/version.c 2012-06-01 13:39:16.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 533, + /**/ + +-- +"How is your new girlfriend?" +"90-60-90 man!" +"What, pale purple?" + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.534 b/source/ap/vim/patches/7.3.534 new file mode 100644 index 00000000..618d6e4e --- /dev/null +++ b/source/ap/vim/patches/7.3.534 @@ -0,0 +1,101 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.534 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.534 (after 7.3.461) +Problem: When using an InsertCharPre autocommand autoindent fails. +Solution: Proper handling of v:char. (Alexey Radkov) +Files: src/edit.c + + +*** ../vim-7.3.533/src/edit.c 2012-05-18 16:35:17.000000000 +0200 +--- src/edit.c 2012-06-01 14:41:06.000000000 +0200 +*************** +*** 10108,10129 **** + do_insert_char_pre(c) + int c; + { +! char_u *res; + + /* Return quickly when there is nothing to do. */ + if (!has_insertcharpre()) + return NULL; + + /* Lock the text to avoid weird things from happening. */ + ++textlock; +! set_vim_var_char(c); /* set v:char */ + + if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf)) +! /* Get the new value of v:char. It may be empty or more than one +! * character. */ +! res = vim_strsave(get_vim_var_str(VV_CHAR)); +! else +! res = NULL; + + set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */ + --textlock; +--- 10108,10147 ---- + do_insert_char_pre(c) + int c; + { +! char_u *res; +! #ifdef FEAT_MBYTE +! char_u buf[MB_MAXBYTES + 1]; +! #else +! char_u buf[2]; +! #endif + + /* Return quickly when there is nothing to do. */ + if (!has_insertcharpre()) + return NULL; + ++ #ifdef FEAT_MBYTE ++ if (has_mbyte) ++ buf[(*mb_char2bytes)(c, buf)] = NUL; ++ else ++ #endif ++ { ++ buf[0] = c; ++ buf[1] = NUL; ++ } ++ + /* Lock the text to avoid weird things from happening. */ + ++textlock; +! set_vim_var_string(VV_CHAR, buf, -1); /* set v:char */ + ++ res = NULL; + if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf)) +! { +! /* Get the value of v:char. It may be empty or more than one +! * character. Only use it when changed, otherwise continue with the +! * original character to avoid breaking autoindent. */ +! if (STRCMP(buf, get_vim_var_str(VV_CHAR)) != 0) +! res = vim_strsave(get_vim_var_str(VV_CHAR)); +! } + + set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */ + --textlock; +*** ../vim-7.3.533/src/version.c 2012-06-01 13:46:06.000000000 +0200 +--- src/version.c 2012-06-01 14:42:19.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 534, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +11. You find yourself typing "com" after every period when using a word + processor.com + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.535 b/source/ap/vim/patches/7.3.535 new file mode 100644 index 00000000..e7f0f8a9 --- /dev/null +++ b/source/ap/vim/patches/7.3.535 @@ -0,0 +1,356 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.535 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.535 +Problem: Many #ifdefs for MB_MAXBYTES. +Solution: Also define MB_MAXBYTES without the +multi_byte feature. Fix + places where the buffer didn't include space for a NUL byte. +Files: src/arabic.c, src/edit.c, src/eval.c, src/getchar.c, src/mbyte.c, + src/misc1.c, src/screen.c, src/spell.c, src/vim.h + + +*** ../vim-7.3.534/src/arabic.c 2010-08-15 21:57:28.000000000 +0200 +--- src/arabic.c 2012-06-01 14:59:37.000000000 +0200 +*************** +*** 1066,1072 **** + + if (curr_c != c && ccp != NULL) + { +! char_u buf[MB_MAXBYTES]; + + /* Update the first byte of the character. */ + (*mb_char2bytes)(curr_c, buf); +--- 1066,1072 ---- + + if (curr_c != c && ccp != NULL) + { +! char_u buf[MB_MAXBYTES + 1]; + + /* Update the first byte of the character. */ + (*mb_char2bytes)(curr_c, buf); +*** ../vim-7.3.534/src/edit.c 2012-06-01 14:57:47.000000000 +0200 +--- src/edit.c 2012-06-01 15:01:49.000000000 +0200 +*************** +*** 1648,1658 **** + #define PC_STATUS_RIGHT 1 /* right halve of double-wide char */ + #define PC_STATUS_LEFT 2 /* left halve of double-wide char */ + #define PC_STATUS_SET 3 /* pc_bytes was filled */ +- #ifdef FEAT_MBYTE + static char_u pc_bytes[MB_MAXBYTES + 1]; /* saved bytes */ +- #else +- static char_u pc_bytes[2]; /* saved bytes */ +- #endif + static int pc_attr; + static int pc_row; + static int pc_col; +--- 1648,1654 ---- +*************** +*** 6819,6829 **** + char_u *s; + + vim_free(last_insert); +- #ifdef FEAT_MBYTE + last_insert = alloc(MB_MAXBYTES * 3 + 5); +- #else +- last_insert = alloc(6); +- #endif + if (last_insert != NULL) + { + s = last_insert; +--- 6815,6821 ---- +*************** +*** 6861,6867 **** + char_u *s; + { + #ifdef FEAT_MBYTE +! char_u temp[MB_MAXBYTES]; + int i; + int len; + +--- 6853,6859 ---- + char_u *s; + { + #ifdef FEAT_MBYTE +! char_u temp[MB_MAXBYTES + 1]; + int i; + int len; + +*************** +*** 7423,7429 **** + int cc; + { + int n; +! char_u buf[MB_MAXBYTES]; + int i; + int c; + +--- 7415,7421 ---- + int cc; + { + int n; +! char_u buf[MB_MAXBYTES + 1]; + int i; + int c; + +*************** +*** 10109,10119 **** + int c; + { + char_u *res; +- #ifdef FEAT_MBYTE + char_u buf[MB_MAXBYTES + 1]; +- #else +- char_u buf[2]; +- #endif + + /* Return quickly when there is nothing to do. */ + if (!has_insertcharpre()) +--- 10101,10107 ---- +*** ../vim-7.3.534/src/eval.c 2012-05-18 18:34:15.000000000 +0200 +--- src/eval.c 2012-06-01 15:02:08.000000000 +0200 +*************** +*** 19170,19180 **** + set_vim_var_char(c) + int c; + { +! #ifdef FEAT_MBYTE +! char_u buf[MB_MAXBYTES]; +! #else +! char_u buf[2]; +! #endif + + #ifdef FEAT_MBYTE + if (has_mbyte) +--- 19170,19176 ---- + set_vim_var_char(c) + int c; + { +! char_u buf[MB_MAXBYTES + 1]; + + #ifdef FEAT_MBYTE + if (has_mbyte) +*** ../vim-7.3.534/src/getchar.c 2012-04-05 16:07:01.000000000 +0200 +--- src/getchar.c 2012-06-01 15:03:51.000000000 +0200 +*************** +*** 723,729 **** + int c; + #ifdef FEAT_MBYTE + int n; +! char_u buf[MB_MAXBYTES]; + int i; + #endif + +--- 723,729 ---- + int c; + #ifdef FEAT_MBYTE + int n; +! char_u buf[MB_MAXBYTES + 1]; + int i; + #endif + +*************** +*** 1072,1078 **** + int c; + { + #ifdef FEAT_MBYTE +! char_u buf[MB_MAXBYTES]; + #else + char_u buf[4]; + #endif +--- 1072,1078 ---- + int c; + { + #ifdef FEAT_MBYTE +! char_u buf[MB_MAXBYTES + 1]; + #else + char_u buf[4]; + #endif +*************** +*** 1547,1553 **** + int c, c2; + #ifdef FEAT_MBYTE + int n; +! char_u buf[MB_MAXBYTES]; + int i; + #endif + +--- 1547,1553 ---- + int c, c2; + #ifdef FEAT_MBYTE + int n; +! char_u buf[MB_MAXBYTES + 1]; + int i; + #endif + +*************** +*** 4335,4345 **** + int scol; /* starting column of the abbr. */ + int j; + char_u *s; +- #ifdef FEAT_MBYTE + char_u tb[MB_MAXBYTES + 4]; +- #else +- char_u tb[4]; +- #endif + mapblock_T *mp; + #ifdef FEAT_LOCALMAP + mapblock_T *mp2; +--- 4335,4341 ---- +*** ../vim-7.3.534/src/mbyte.c 2012-03-07 19:38:52.000000000 +0100 +--- src/mbyte.c 2012-06-01 15:04:27.000000000 +0200 +*************** +*** 708,714 **** + */ + n = (i & 0x80) ? 2 : 1; + # else +! char buf[MB_MAXBYTES]; + # ifdef X_LOCALE + # ifndef mblen + # define mblen _Xmblen +--- 708,714 ---- + */ + n = (i & 0x80) ? 2 : 1; + # else +! char buf[MB_MAXBYTES + 1]; + # ifdef X_LOCALE + # ifndef mblen + # define mblen _Xmblen +*************** +*** 1953,1959 **** + /* + * Convert the character at screen position "off" to a sequence of bytes. + * Includes the composing characters. +! * "buf" must at least have the length MB_MAXBYTES. + * Only to be used when ScreenLinesUC[off] != 0. + * Returns the produced number of bytes. + */ +--- 1953,1959 ---- + /* + * Convert the character at screen position "off" to a sequence of bytes. + * Includes the composing characters. +! * "buf" must at least have the length MB_MAXBYTES + 1. + * Only to be used when ScreenLinesUC[off] != 0. + * Returns the produced number of bytes. + */ +*** ../vim-7.3.534/src/misc1.c 2012-04-30 21:09:38.000000000 +0200 +--- src/misc1.c 2012-06-01 15:04:56.000000000 +0200 +*************** +*** 1932,1938 **** + int c; + { + #if defined(FEAT_MBYTE) || defined(PROTO) +! char_u buf[MB_MAXBYTES]; + int n; + + n = (*mb_char2bytes)(c, buf); +--- 1932,1938 ---- + int c; + { + #if defined(FEAT_MBYTE) || defined(PROTO) +! char_u buf[MB_MAXBYTES + 1]; + int n; + + n = (*mb_char2bytes)(c, buf); +*** ../vim-7.3.534/src/screen.c 2012-03-23 16:25:13.000000000 +0100 +--- src/screen.c 2012-06-01 15:06:03.000000000 +0200 +*************** +*** 6621,6636 **** + int row, col; + int attr; + { +- #ifdef FEAT_MBYTE + char_u buf[MB_MAXBYTES + 1]; + +! buf[(*mb_char2bytes)(c, buf)] = NUL; +! #else +! char_u buf[2]; +! +! buf[0] = c; +! buf[1] = NUL; + #endif + screen_puts(buf, row, col, attr); + } + +--- 6621,6637 ---- + int row, col; + int attr; + { + char_u buf[MB_MAXBYTES + 1]; + +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! buf[(*mb_char2bytes)(c, buf)] = NUL; +! else + #endif ++ { ++ buf[0] = c; ++ buf[1] = NUL; ++ } + screen_puts(buf, row, col, attr); + } + +*** ../vim-7.3.534/src/spell.c 2012-05-18 18:07:57.000000000 +0200 +--- src/spell.c 2012-06-01 15:06:30.000000000 +0200 +*************** +*** 13694,13700 **** + { + int m1, m2; + #ifdef FEAT_MBYTE +! char_u buf[MB_MAXBYTES]; + hashitem_T *hi; + + if (c1 >= 256) +--- 13694,13700 ---- + { + int m1, m2; + #ifdef FEAT_MBYTE +! char_u buf[MB_MAXBYTES + 1]; + hashitem_T *hi; + + if (c1 >= 256) +*** ../vim-7.3.534/src/vim.h 2012-04-30 18:48:38.000000000 +0200 +--- src/vim.h 2012-06-01 14:59:28.000000000 +0200 +*************** +*** 1703,1708 **** +--- 1703,1710 ---- + * character of up to 6 bytes, or one 16-bit character of up to three bytes + * plus six following composing characters of three bytes each. */ + # define MB_MAXBYTES 21 ++ #else ++ # define MB_MAXBYTES 1 + #endif + + #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO) +*************** +*** 2017,2022 **** +--- 2019,2025 ---- + #pragma warning(disable : 4312) + #endif + ++ /* Note: a NULL argument for vim_realloc() is not portable, don't use it. */ + #if defined(MEM_PROFILE) + # define vim_realloc(ptr, size) mem_realloc((ptr), (size)) + #else +*** ../vim-7.3.534/src/version.c 2012-06-01 14:57:47.000000000 +0200 +--- src/version.c 2012-06-01 15:08:20.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 535, + /**/ + +-- +Me? A skeptic? I trust you have proof. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.536 b/source/ap/vim/patches/7.3.536 new file mode 100644 index 00000000..e0c3f760 --- /dev/null +++ b/source/ap/vim/patches/7.3.536 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.536 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.536 +Problem: When spell checking the German sharp s is not seen as a word + character. (Aexl Bender) +Solution: In utf_islower() return true for the sharp s. Note: also need + updated spell file for this to take effect. +Files: src/mbyte.c + + +*** ../vim-7.3.535/src/mbyte.c 2012-06-01 15:20:49.000000000 +0200 +--- src/mbyte.c 2012-06-01 16:50:41.000000000 +0200 +*************** +*** 2949,2955 **** + { + {0x61,0x7a,1,-32}, + {0xb5,0xb5,-1,743}, +! {0xe0,0xf6,1,-32}, + {0xf8,0xfe,1,-32}, + {0xff,0xff,-1,121}, + {0x101,0x12f,2,-1}, +--- 2949,2955 ---- + { + {0x61,0x7a,1,-32}, + {0xb5,0xb5,-1,743}, +! {0xe0,0xf6,1,-32}, /* 0xdf (German sharp s) is not upper-cased */ + {0xf8,0xfe,1,-32}, + {0xff,0xff,-1,121}, + {0x101,0x12f,2,-1}, +*************** +*** 3129,3135 **** + utf_islower(a) + int a; + { +! return (utf_toupper(a) != a); + } + + /* +--- 3129,3136 ---- + utf_islower(a) + int a; + { +! /* German sharp s is lower case but has no upper case equivalent. */ +! return (utf_toupper(a) != a) || a == 0xdf; + } + + /* +*** ../vim-7.3.535/src/version.c 2012-06-01 15:20:49.000000000 +0200 +--- src/version.c 2012-06-01 17:45:17.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 536, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +16. You step out of your room and realize that your parents have moved and + you don't have a clue when it happened. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.537 b/source/ap/vim/patches/7.3.537 new file mode 100644 index 00000000..76b41c8a --- /dev/null +++ b/source/ap/vim/patches/7.3.537 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.537 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.537 +Problem: Unecessary call to init_spell_chartab(). +Solution: Delete the call. +Files: src/spell.c + + +*** ../vim-7.3.536/src/spell.c 2012-06-01 15:20:49.000000000 +0200 +--- src/spell.c 2012-06-01 17:49:44.000000000 +0200 +*************** +*** 4721,4728 **** + int_wordlist = NULL; + } + +- init_spell_chartab(); +- + vim_free(repl_to); + repl_to = NULL; + vim_free(repl_from); +--- 4721,4726 ---- +*** ../vim-7.3.536/src/version.c 2012-06-01 17:46:52.000000000 +0200 +--- src/version.c 2012-06-01 17:49:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 537, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +17. You turn on your intercom when leaving the room so you can hear if new + e-mail arrives. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.538 b/source/ap/vim/patches/7.3.538 new file mode 100644 index 00000000..947fa65b --- /dev/null +++ b/source/ap/vim/patches/7.3.538 @@ -0,0 +1,321 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.538 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.538 +Problem: 'efm' does not handle Tabs in pointer lines. +Solution: Add Tab support. Improve tests. (Lech Lorens) +Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok + + +*** ../vim-7.3.537/src/quickfix.c 2012-04-25 18:57:17.000000000 +0200 +--- src/quickfix.c 2012-06-01 18:24:07.000000000 +0200 +*************** +*** 247,253 **** + {'t', "."}, + {'m', ".\\+"}, + {'r', ".*"}, +! {'p', "[- .]*"}, + {'v', "\\d\\+"}, + {'s', ".\\+"} + }; +--- 247,253 ---- + {'t', "."}, + {'m', ".\\+"}, + {'r', ".*"}, +! {'p', "[- .]*"}, + {'v', "\\d\\+"}, + {'s', ".\\+"} + }; +*************** +*** 677,687 **** + } + if ((i = (int)fmt_ptr->addr[7]) > 0) /* %p */ + { + if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL) + continue; +! col = (int)(regmatch.endp[i] - regmatch.startp[i] + 1); +! if (*((char_u *)regmatch.startp[i]) != TAB) +! use_viscol = TRUE; + } + if ((i = (int)fmt_ptr->addr[8]) > 0) /* %v */ + { +--- 677,699 ---- + } + if ((i = (int)fmt_ptr->addr[7]) > 0) /* %p */ + { ++ char_u *match_ptr; ++ + if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL) + continue; +! col = 0; +! for (match_ptr = regmatch.startp[i]; +! match_ptr != regmatch.endp[i]; ++match_ptr) +! { +! ++col; +! if (*match_ptr == TAB) +! { +! col += 7; +! col -= col % 8; +! } +! } +! ++col; +! use_viscol = TRUE; + } + if ((i = (int)fmt_ptr->addr[8]) > 0) /* %v */ + { +*** ../vim-7.3.537/src/testdir/test10.in 2011-08-10 18:36:49.000000000 +0200 +--- src/testdir/test10.in 2012-06-01 18:22:40.000000000 +0200 +*************** +*** 8,48 **** + :7/start of errorfile/,/end of errorfile/w! Xerrorfile1 + :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2 + :/start of testfile/,/end of testfile/w! Xtestfile + :cf Xerrorfile2 + :clast + :copen + :let a=w:quickfix_title + :wincmd p +! gR=a
+ :cf Xerrorfile1 +! rA + :cn +! rB + :cn +! rC + :cn +! rD + :cn +! rE + :cn + :wincmd w + :let a=w:quickfix_title + :wincmd p +! gR=a
+ :w! test.out " Write contents of this file + :qa! + ENDTEST + + start of errorfile + "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. +! "Xtestfile", line 7 col 19; this is an error + gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c +! Xtestfile:13: parse error before `asd' + make: *** [vim] Error 1 +! in file "Xtestfile" linenr 16: there is an error + + 2 returned +! "Xtestfile", linenr 19: yet another problem + + Does anyone know what is the problem and how to correction it? + "Xtestfile", line 21 col 9: What is the title of the quickfix window? +--- 8,88 ---- + :7/start of errorfile/,/end of errorfile/w! Xerrorfile1 + :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2 + :/start of testfile/,/end of testfile/w! Xtestfile ++ :set efm+==%f=\\,\ line\ %l%*\\D%v%*[^\ ]\ %m ++ :set efm^=%AError\ in\ \"%f\"\ at\ line\ %l:,%Z%p^,%C%m + :cf Xerrorfile2 + :clast + :copen + :let a=w:quickfix_title + :wincmd p +! lgR=a
+ :cf Xerrorfile1 +! grA + :cn +! gRLINE 6, COL 19 + :cn +! gRNO COLUMN SPECIFIED + :cn +! gRAGAIN NO COLUMN + :cn +! gRCOL 1 + :cn ++ gRCOL 2 ++ :cn ++ gRCOL 10 ++ :cn ++ gRVCOL 10 ++ :cn ++ grI ++ :cn ++ gR. SPACE POINTER ++ :cn ++ gR. DOT POINTER ++ :cn ++ gR. DASH POINTER ++ :cn ++ gR. TAB-SPACE POINTER ++ :clast ++ :cprev ++ :cprev + :wincmd w + :let a=w:quickfix_title + :wincmd p +! lgR=a
+ :w! test.out " Write contents of this file + :qa! + ENDTEST + + start of errorfile + "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. +! "Xtestfile", line 6 col 19; this is an error + gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c +! Xtestfile:9: parse error before `asd' + make: *** [vim] Error 1 +! in file "Xtestfile" linenr 10: there is an error + + 2 returned +! "Xtestfile", line 11 col 1; this is an error +! "Xtestfile", line 12 col 2; this is another error +! "Xtestfile", line 14:10; this is an error in column 10 +! =Xtestfile=, line 15:10; this is another error, but in vcol 10 this time +! "Xtestfile", linenr 16: yet another problem +! Error in "Xtestfile" at line 17: +! x should be a dot +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 +! ^ +! Error in "Xtestfile" at line 18: +! x should be a dot +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 +! .............^ +! Error in "Xtestfile" at line 19: +! x should be a dot +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 +! --------------^ +! Error in "Xtestfile" at line 20: +! x should be a dot +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 +! ^ + + Does anyone know what is the problem and how to correction it? + "Xtestfile", line 21 col 9: What is the title of the quickfix window? +*************** +*** 50,74 **** + end of errorfile + + start of testfile +! line 2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + end of testfile +--- 90,114 ---- + end of errorfile + + start of testfile +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 4 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 6 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 9 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 10 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 12 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 14 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 15 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 21 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 22 + end of testfile +*** ../vim-7.3.537/src/testdir/test10.ok 2011-08-10 18:36:49.000000000 +0200 +--- src/testdir/test10.ok 2012-06-01 18:22:40.000000000 +0200 +*************** +*** 1,23 **** + start of testfile +! line 2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 4 xxxAxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 7 xxxxxxxxxxBxxxxxxxxxxxxxxxxxxx +! line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! Cine 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! Dine 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 21 :cf Xerrorfile1xxxxxxxxxxxxxxx +! line 22 :cf Xerrorfile2xxxxxxxxxxxxxxx + end of testfile +--- 1,23 ---- + start of testfile +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3 +! xxxxxxxxxxAxxxxxxxxxxxxxxxxxxx line 4 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5 +! xxxxxxxxxxxxxxxxxLINE 6, COL 19 line 6 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8 +! NO COLUMN SPECIFIEDxxxxxxxxxxx line 9 +! AGAIN NO COLUMNxxxxxxxxxxxxxxx line 10 +! COL 1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11 +! COL 2xxxxxxxxxxxxxxxxxxxxxxxxx line 12 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13 +! xxxxxxxxCOL 10xxxxxxxxxxxxxxxx line 14 +! xVCOL 10xxxxxxxxxxxxxxxxxxxxxx line 15 +! Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16 +! xxxx. SPACE POINTERxxxxxxxxxxx line 17 +! xxxxx. DOT POINTERxxxxxxxxxxxx line 18 +! xxxxxx. DASH POINTERxxxxxxxxxx line 19 +! xxxxxxx. TAB-SPACE POINTERxxxx line 20 +! xxxxxxxx:cf Xerrorfile1xxxxxxx line 21 +! xxxxxxxx:cf Xerrorfile2xxxxxxx line 22 + end of testfile +*** ../vim-7.3.537/src/version.c 2012-06-01 17:49:51.000000000 +0200 +--- src/version.c 2012-06-01 18:22:27.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 538, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +18. Your wife drapes a blond wig over your monitor to remind you of what she + looks like. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.539 b/source/ap/vim/patches/7.3.539 new file mode 100644 index 00000000..267c076d --- /dev/null +++ b/source/ap/vim/patches/7.3.539 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.539 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.539 +Problem: Redrawing a character on the command line does not work properly + for multi-byte charactes. +Solution: Count the number of bytes in a character. (Yukihiro Nakadaira) +Files: src/ex_getln.c + + +*** ../vim-7.3.538/src/ex_getln.c 2012-05-25 11:02:34.000000000 +0200 +--- src/ex_getln.c 2012-06-06 11:50:37.000000000 +0200 +*************** +*** 2764,2769 **** +--- 2764,2774 ---- + msg_no_more = TRUE; + if (ccline.cmdlen == ccline.cmdpos) + msg_putchar(' '); ++ #ifdef FEAT_MBYTE ++ else if (has_mbyte) ++ draw_cmdline(ccline.cmdpos, ++ (*mb_ptr2len)(ccline.cmdbuff + ccline.cmdpos)); ++ #endif + else + draw_cmdline(ccline.cmdpos, 1); + msg_no_more = FALSE; +*** ../vim-7.3.538/src/version.c 2012-06-01 18:34:37.000000000 +0200 +--- src/version.c 2012-06-06 12:02:45.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 539, + /**/ + +-- +If they don't keep on exercising their lips, he thought, their brains +start working. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.540 b/source/ap/vim/patches/7.3.540 new file mode 100644 index 00000000..6793eb43 --- /dev/null +++ b/source/ap/vim/patches/7.3.540 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.540 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.540 +Problem: Cursor is left on the text instead of the command line. +Solution: Don't call setcursor() in command line mode. +Files: src/getchar.c + + +*** ../vim-7.3.539/src/getchar.c 2012-06-01 15:20:49.000000000 +0200 +--- src/getchar.c 2012-06-06 11:58:05.000000000 +0200 +*************** +*** 2819,2825 **** + edit_unputchar(); + if (State & CMDLINE) + unputcmdline(); +! setcursor(); /* put cursor back where it belongs */ + } + + if (c < 0) +--- 2819,2826 ---- + edit_unputchar(); + if (State & CMDLINE) + unputcmdline(); +! else +! setcursor(); /* put cursor back where it belongs */ + } + + if (c < 0) +*** ../vim-7.3.539/src/version.c 2012-06-06 12:02:57.000000000 +0200 +--- src/version.c 2012-06-06 12:05:22.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 540, + /**/ + +-- +"Making it up? Why should I want to make anything up? Life's bad enough +as it is without wanting to invent any more of it." + -- Marvin, the Paranoid Android in Douglas Adams' + "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.541 b/source/ap/vim/patches/7.3.541 new file mode 100644 index 00000000..133b82da --- /dev/null +++ b/source/ap/vim/patches/7.3.541 @@ -0,0 +1,1090 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.541 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.541 +Problem: When joining lines comment leaders need to be removed manually. +Solution: Add the 'j' flag to 'formatoptions'. (Lech Lorens) +Files: runtime/doc/change.txt, src/edit.c, src/ex_docmd.c, src/misc1.c, + src/normal.c, src/ops.c, src/option.h, src/proto/misc1.pro, + src/proto/ops.pro, src/search.c, src/testdir/test29.in, + src/testdir/test29.ok + + +*** ../vim-7.3.540/runtime/doc/change.txt 2011-05-05 14:26:37.000000000 +0200 +--- runtime/doc/change.txt 2012-06-06 13:05:04.000000000 +0200 +*************** +*** 1495,1500 **** +--- 1522,1533 ---- + characters. Overruled by the 'M' flag. + 1 Don't break a line after a one-letter word. It's broken before it + instead (if possible). ++ j Where it makes sense, remove a comment leader when joining lines. For ++ example, joining: ++ int i; // the index ~ ++ // in the list ~ ++ Becomes: ++ int i; // the index in the list ~ + + + With 't' and 'c' you can specify when Vim performs auto-wrapping: +*** ../vim-7.3.540/src/edit.c 2012-06-01 15:20:49.000000000 +0200 +--- src/edit.c 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 5847,5853 **** + * Need to remove existing (middle) comment leader and insert end + * comment leader. First, check what comment leader we can find. + */ +! i = get_leader_len(line = ml_get_curline(), &p, FALSE); + if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */ + { + /* Skip middle-comment string */ +--- 5847,5853 ---- + * Need to remove existing (middle) comment leader and insert end + * comment leader. First, check what comment leader we can find. + */ +! i = get_leader_len(line = ml_get_curline(), &p, FALSE, TRUE); + if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */ + { + /* Skip middle-comment string */ +*************** +*** 6085,6091 **** + + /* Don't break until after the comment leader */ + if (do_comments) +! leader_len = get_leader_len(ml_get_curline(), NULL, FALSE); + else + leader_len = 0; + +--- 6085,6091 ---- + + /* Don't break until after the comment leader */ + if (do_comments) +! leader_len = get_leader_len(ml_get_curline(), NULL, FALSE, TRUE); + else + leader_len = 0; + +*************** +*** 6411,6417 **** + /* With the 'c' flag in 'formatoptions' and 't' missing: only format + * comments. */ + if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP) +! && get_leader_len(old, NULL, FALSE) == 0) + return; + #endif + +--- 6411,6417 ---- + /* With the 'c' flag in 'formatoptions' and 't' missing: only format + * comments. */ + if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP) +! && get_leader_len(old, NULL, FALSE, TRUE) == 0) + return; + #endif + +*************** +*** 8565,8571 **** + { + temp = curwin->w_cursor.col; + if (!can_bs(BS_EOL) /* only if "eol" included */ +! || do_join(2, FALSE, TRUE) == FAIL) + vim_beep(); + else + curwin->w_cursor.col = temp; +--- 8565,8571 ---- + { + temp = curwin->w_cursor.col; + if (!can_bs(BS_EOL) /* only if "eol" included */ +! || do_join(2, FALSE, TRUE, FALSE) == FAIL) + vim_beep(); + else + curwin->w_cursor.col = temp; +*************** +*** 8746,8752 **** + ptr[len - 1] = NUL; + } + +! (void)do_join(2, FALSE, FALSE); + if (temp == NUL && gchar_cursor() != NUL) + inc_cursor(); + } +--- 8746,8752 ---- + ptr[len - 1] = NUL; + } + +! (void)do_join(2, FALSE, FALSE, FALSE); + if (temp == NUL && gchar_cursor() != NUL) + inc_cursor(); + } +*** ../vim-7.3.540/src/ex_docmd.c 2012-04-30 18:48:38.000000000 +0200 +--- src/ex_docmd.c 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 8545,8551 **** + } + ++eap->line2; + } +! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE); + beginline(BL_WHITE | BL_FIX); + ex_may_print(eap); + } +--- 8545,8551 ---- + } + ++eap->line2; + } +! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE, TRUE); + beginline(BL_WHITE | BL_FIX); + ex_may_print(eap); + } +*** ../vim-7.3.540/src/misc1.c 2012-06-01 15:20:49.000000000 +0200 +--- src/misc1.c 2012-06-06 13:27:32.000000000 +0200 +*************** +*** 671,677 **** + ptr = saved_line; + # ifdef FEAT_COMMENTS + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(ptr, NULL, FALSE); + else + lead_len = 0; + # endif +--- 671,677 ---- + ptr = saved_line; + # ifdef FEAT_COMMENTS + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(ptr, NULL, FALSE, TRUE); + else + lead_len = 0; + # endif +*************** +*** 693,699 **** + } + # ifdef FEAT_COMMENTS + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(ptr, NULL, FALSE); + else + lead_len = 0; + if (lead_len > 0) +--- 693,699 ---- + } + # ifdef FEAT_COMMENTS + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(ptr, NULL, FALSE, TRUE); + else + lead_len = 0; + if (lead_len > 0) +*************** +*** 836,842 **** + */ + end_comment_pending = NUL; + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD); + else + lead_len = 0; + if (lead_len > 0) +--- 836,842 ---- + */ + end_comment_pending = NUL; + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD, TRUE); + else + lead_len = 0; + if (lead_len > 0) +*************** +*** 1548,1561 **** + * When "flags" is not NULL, it is set to point to the flags of the recognized + * comment leader. + * "backward" must be true for the "O" command. + */ + int +! get_leader_len(line, flags, backward) + char_u *line; + char_u **flags; + int backward; + { + int i, j; + int got_com = FALSE; + int found_one; + char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ +--- 1548,1565 ---- + * When "flags" is not NULL, it is set to point to the flags of the recognized + * comment leader. + * "backward" must be true for the "O" command. ++ * If "include_space" is set, include trailing whitespace while calculating the ++ * length. + */ + int +! get_leader_len(line, flags, backward, include_space) + char_u *line; + char_u **flags; + int backward; ++ int include_space; + { + int i, j; ++ int result; + int got_com = FALSE; + int found_one; + char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ +*************** +*** 1565,1571 **** + char_u *prev_list; + char_u *saved_flags = NULL; + +! i = 0; + while (vim_iswhite(line[i])) /* leading white space is ignored */ + ++i; + +--- 1569,1575 ---- + char_u *prev_list; + char_u *saved_flags = NULL; + +! result = i = 0; + while (vim_iswhite(line[i])) /* leading white space is ignored */ + ++i; + +*************** +*** 1668,1684 **** + if (!found_one) + break; + + /* Include any trailing white space. */ + while (vim_iswhite(line[i])) + ++i; + + /* If this comment doesn't nest, stop here. */ + got_com = TRUE; + if (vim_strchr(part_buf, COM_NEST) == NULL) + break; + } + +! return (got_com ? i : 0); + } + #endif + +--- 1672,1838 ---- + if (!found_one) + break; + ++ result = i; ++ + /* Include any trailing white space. */ + while (vim_iswhite(line[i])) + ++i; + ++ if (include_space) ++ result = i; ++ + /* If this comment doesn't nest, stop here. */ + got_com = TRUE; + if (vim_strchr(part_buf, COM_NEST) == NULL) + break; + } ++ return result; ++ } ++ ++ /* ++ * Return the offset at which the last comment in line starts. If there is no ++ * comment in the whole line, -1 is returned. ++ * ++ * When "flags" is not null, it is set to point to the flags describing the ++ * recognized comment leader. ++ */ ++ int ++ get_last_leader_offset(line, flags) ++ char_u *line; ++ char_u **flags; ++ { ++ int result = -1; ++ int i, j; ++ int lower_check_bound = 0; ++ char_u *string; ++ char_u *com_leader; ++ char_u *com_flags; ++ char_u *list; ++ int found_one; ++ char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ ++ ++ /* ++ * Repeat to match several nested comment strings. ++ */ ++ i = (int)STRLEN(line); ++ while (--i >= lower_check_bound) ++ { ++ /* ++ * scan through the 'comments' option for a match ++ */ ++ found_one = FALSE; ++ for (list = curbuf->b_p_com; *list; ) ++ { ++ char_u *flags_save = list; ++ ++ /* ++ * Get one option part into part_buf[]. Advance list to next one. ++ * put string at start of string. ++ */ ++ (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ","); ++ string = vim_strchr(part_buf, ':'); ++ if (string == NULL) /* If everything is fine, this cannot actually ++ * happen. */ ++ { ++ continue; ++ } ++ *string++ = NUL; /* Isolate flags from string. */ ++ com_leader = string; ++ ++ /* ++ * Line contents and string must match. ++ * When string starts with white space, must have some white space ++ * (but the amount does not need to match, there might be a mix of ++ * TABs and spaces). ++ */ ++ if (vim_iswhite(string[0])) ++ { ++ if (i == 0 || !vim_iswhite(line[i - 1])) ++ continue; ++ while (vim_iswhite(string[0])) ++ ++string; ++ } ++ for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j) ++ /* do nothing */; ++ if (string[j] != NUL) ++ continue; ++ ++ /* ++ * When 'b' flag used, there must be white space or an ++ * end-of-line after the string in the line. ++ */ ++ if (vim_strchr(part_buf, COM_BLANK) != NULL ++ && !vim_iswhite(line[i + j]) && line[i + j] != NUL) ++ { ++ continue; ++ } ++ ++ /* ++ * We have found a match, stop searching. ++ */ ++ found_one = TRUE; ++ ++ if (flags) ++ *flags = flags_save; ++ com_flags = flags_save; ++ ++ break; ++ } + +! if (found_one) +! { +! char_u part_buf2[COM_MAX_LEN]; /* buffer for one option part */ +! int len1, len2, off; +! +! result = i; +! /* +! * If this comment nests, continue searching. +! */ +! if (vim_strchr(part_buf, COM_NEST) != NULL) +! continue; +! +! lower_check_bound = i; +! +! /* Let's verify whether the comment leader found is a substring +! * of other comment leaders. If it is, let's adjust the +! * lower_check_bound so that we make sure that we have determined +! * the comment leader correctly. +! */ +! +! while (vim_iswhite(*com_leader)) +! ++com_leader; +! len1 = (int)STRLEN(com_leader); +! +! for (list = curbuf->b_p_com; *list; ) +! { +! char_u *flags_save = list; +! +! (void)copy_option_part(&list, part_buf2, COM_MAX_LEN, ","); +! if (flags_save == com_flags) +! continue; +! string = vim_strchr(part_buf2, ':'); +! ++string; +! while (vim_iswhite(*string)) +! ++string; +! len2 = (int)STRLEN(string); +! if (len2 == 0) +! continue; +! +! /* Now we have to verify whether string ends with a substring +! * beginning the com_leader. */ +! for (off = (len2 > i ? i : len2); off > 0 && off + len1 > len2;) +! { +! --off; +! if (!STRNCMP(string + off, com_leader, len2 - off)) +! { +! if (i - off < lower_check_bound) +! lower_check_bound = i - off; +! } +! } +! } +! } +! } +! return result; + } + #endif + +*** ../vim-7.3.540/src/normal.c 2012-05-25 13:12:33.000000000 +0200 +--- src/normal.c 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 1968,1974 **** + beep_flush(); + else + { +! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE); + auto_format(FALSE, TRUE); + } + break; +--- 1968,1974 ---- + beep_flush(); + else + { +! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE, TRUE); + auto_format(FALSE, TRUE); + } + break; +*************** +*** 4426,4432 **** + break; + } + #ifdef FEAT_COMMENTS +! if (get_leader_len(ml_get_curline(), NULL, FALSE) > 0) + { + /* Ignore this line, continue at start of next line. */ + ++curwin->w_cursor.lnum; +--- 4426,4432 ---- + break; + } + #ifdef FEAT_COMMENTS +! if (get_leader_len(ml_get_curline(), NULL, FALSE, TRUE) > 0) + { + /* Ignore this line, continue at start of next line. */ + ++curwin->w_cursor.lnum; +*************** +*** 9324,9330 **** + { + prep_redo(cap->oap->regname, cap->count0, + NUL, cap->cmdchar, NUL, NUL, cap->nchar); +! (void)do_join(cap->count0, cap->nchar == NUL, TRUE); + } + } + } +--- 9324,9330 ---- + { + prep_redo(cap->oap->regname, cap->count0, + NUL, cap->cmdchar, NUL, NUL, cap->nchar); +! (void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE); + } + } + } +*** ../vim-7.3.540/src/ops.c 2012-05-18 12:49:33.000000000 +0200 +--- src/ops.c 2012-06-06 15:43:31.000000000 +0200 +*************** +*** 112,117 **** +--- 112,120 ---- + # endif + #endif + static void dis_msg __ARGS((char_u *p, int skip_esc)); ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ static char_u *skip_comment __ARGS((char_u *line, int process, int include_space, int *is_comment)); ++ #endif + #ifdef FEAT_VISUAL + static void block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int)); + #endif +*************** +*** 1987,1993 **** + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ + } + if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +! (void)do_join(2, FALSE, FALSE); + } + } + +--- 1990,1996 ---- + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ + } + if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +! (void)do_join(2, FALSE, FALSE, FALSE); + } + } + +*************** +*** 4197,4213 **** + ui_breakcheck(); + } + + /* + * Join 'count' lines (minimal 2) at cursor position. + * When "save_undo" is TRUE save lines for undo first. + * + * return FAIL for failure, OK otherwise + */ + int +! do_join(count, insert_space, save_undo) + long count; + int insert_space; + int save_undo; + { + char_u *curr = NULL; + char_u *curr_start = NULL; +--- 4200,4297 ---- + ui_breakcheck(); + } + ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ /* ++ * If "process" is TRUE and the line begins with a comment leader (possibly ++ * after some white space), return a pointer to the text after it. Put a boolean ++ * value indicating whether the line ends with an unclosed comment in ++ * "is_comment". ++ * line - line to be processed, ++ * process - if FALSE, will only check whether the line ends with an unclosed ++ * comment, ++ * include_space - whether to also skip space following the comment leader, ++ * is_comment - will indicate whether the current line ends with an unclosed ++ * comment. ++ */ ++ static char_u * ++ skip_comment(line, process, include_space, is_comment) ++ char_u *line; ++ int process; ++ int include_space; ++ int *is_comment; ++ { ++ char_u *comment_flags = NULL; ++ int lead_len; ++ int leader_offset = get_last_leader_offset(line, &comment_flags); ++ ++ *is_comment = FALSE; ++ if (leader_offset != -1) ++ { ++ /* Let's check whether the line ends with an unclosed comment. ++ * If the last comment leader has COM_END in flags, there's no comment. ++ */ ++ while (*comment_flags) ++ { ++ if (*comment_flags == COM_END ++ || *comment_flags == ':') ++ break; ++ ++comment_flags; ++ } ++ if (*comment_flags != COM_END) ++ *is_comment = TRUE; ++ } ++ ++ if (process == FALSE) ++ return line; ++ ++ lead_len = get_leader_len(line, &comment_flags, FALSE, include_space); ++ ++ if (lead_len == 0) ++ return line; ++ ++ /* Find: ++ * - COM_START, ++ * - COM_END, ++ * - colon, ++ * whichever comes first. ++ */ ++ while (*comment_flags) ++ { ++ if (*comment_flags == COM_START ++ || *comment_flags == COM_END ++ || *comment_flags == ':') ++ { ++ break; ++ } ++ ++comment_flags; ++ } ++ ++ /* If we found a colon, it means that we are not processing a line ++ * starting with an opening or a closing part of a three-part ++ * comment. That's good, because we don't want to remove those as ++ * this would be annoying. ++ */ ++ if (*comment_flags == ':' || *comment_flags == NUL) ++ line += lead_len; ++ ++ return line; ++ } ++ #endif ++ + /* + * Join 'count' lines (minimal 2) at cursor position. + * When "save_undo" is TRUE save lines for undo first. ++ * Set "use_formatoptions" to FALSE when e.g. processing ++ * backspace and comment leaders should not be removed. + * + * return FAIL for failure, OK otherwise + */ + int +! do_join(count, insert_space, save_undo, use_formatoptions) + long count; + int insert_space; + int save_undo; ++ int use_formatoptions UNUSED; + { + char_u *curr = NULL; + char_u *curr_start = NULL; +*************** +*** 4221,4226 **** +--- 4305,4317 ---- + linenr_T t; + colnr_T col = 0; + int ret = OK; ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ int *comments; ++ int remove_comments = (use_formatoptions == TRUE) ++ && has_format_option(FO_REMOVE_COMS); ++ int prev_was_comment; ++ #endif ++ + + if (save_undo && u_save((linenr_T)(curwin->w_cursor.lnum - 1), + (linenr_T)(curwin->w_cursor.lnum + count)) == FAIL) +*************** +*** 4232,4237 **** +--- 4323,4339 ---- + spaces = lalloc_clear((long_u)count, TRUE); + if (spaces == NULL) + return FAIL; ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ if (remove_comments) ++ { ++ comments = (int *)lalloc_clear((long_u)count * sizeof(int), TRUE); ++ if (comments == NULL) ++ { ++ vim_free(spaces); ++ return FAIL; ++ } ++ } ++ #endif + + /* + * Don't move anything, just compute the final line length +*************** +*** 4240,4245 **** +--- 4342,4366 ---- + for (t = 0; t < count; ++t) + { + curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t)); ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ if (remove_comments) ++ { ++ /* We don't want to remove the comment leader if the ++ * previous line is not a comment. */ ++ if (t > 0 && prev_was_comment) ++ { ++ ++ char_u *new_curr = skip_comment(curr, TRUE, insert_space, ++ &prev_was_comment); ++ comments[t] = new_curr - curr; ++ curr = new_curr; ++ } ++ else ++ curr = skip_comment(curr, FALSE, insert_space, ++ &prev_was_comment); ++ } ++ #endif ++ + if (insert_space && t > 0) + { + curr = skipwhite(curr); +*************** +*** 4327,4332 **** +--- 4448,4457 ---- + if (t == 0) + break; + curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t - 1)); ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ if (remove_comments) ++ curr += comments[t - 1]; ++ #endif + if (insert_space && t > 1) + curr = skipwhite(curr); + currsize = (int)STRLEN(curr); +*************** +*** 4364,4369 **** +--- 4489,4498 ---- + + theend: + vim_free(spaces); ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ if (remove_comments) ++ vim_free(comments); ++ #endif + return ret; + } + +*************** +*** 4788,4794 **** + (long)-next_leader_len); + #endif + curwin->w_cursor.lnum--; +! if (do_join(2, TRUE, FALSE) == FAIL) + { + beep_flush(); + break; +--- 4917,4923 ---- + (long)-next_leader_len); + #endif + curwin->w_cursor.lnum--; +! if (do_join(2, TRUE, FALSE, FALSE) == FAIL) + { + beep_flush(); + break; +*************** +*** 4844,4850 **** + + ptr = ml_get(lnum); + if (do_comments) +! *leader_len = get_leader_len(ptr, leader_flags, FALSE); + else + *leader_len = 0; + +--- 4973,4979 ---- + + ptr = ml_get(lnum); + if (do_comments) +! *leader_len = get_leader_len(ptr, leader_flags, FALSE, TRUE); + else + *leader_len = 0; + +*** ../vim-7.3.540/src/option.h 2012-02-20 22:18:22.000000000 +0100 +--- src/option.h 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 104,113 **** + #define FO_ONE_LETTER '1' + #define FO_WHITE_PAR 'w' /* trailing white space continues paragr. */ + #define FO_AUTO 'a' /* automatic formatting */ + + #define DFLT_FO_VI "vt" + #define DFLT_FO_VIM "tcq" +! #define FO_ALL "tcroq2vlb1mMBn,aw" /* for do_set() */ + + /* characters for the p_cpo option: */ + #define CPO_ALTREAD 'a' /* ":read" sets alternate file name */ +--- 104,114 ---- + #define FO_ONE_LETTER '1' + #define FO_WHITE_PAR 'w' /* trailing white space continues paragr. */ + #define FO_AUTO 'a' /* automatic formatting */ ++ #define FO_REMOVE_COMS 'j' /* remove comment leaders when joining lines */ + + #define DFLT_FO_VI "vt" + #define DFLT_FO_VIM "tcq" +! #define FO_ALL "tcroq2vlb1mMBn,awj" /* for do_set() */ + + /* characters for the p_cpo option: */ + #define CPO_ALTREAD 'a' /* ":read" sets alternate file name */ +*** ../vim-7.3.540/src/proto/misc1.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/misc1.pro 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 6,12 **** + int set_indent __ARGS((int size, int flags)); + int get_number_indent __ARGS((linenr_T lnum)); + int open_line __ARGS((int dir, int flags, int old_indent)); +! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward)); + int plines __ARGS((linenr_T lnum)); + int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight)); + int plines_nofill __ARGS((linenr_T lnum)); +--- 6,13 ---- + int set_indent __ARGS((int size, int flags)); + int get_number_indent __ARGS((linenr_T lnum)); + int open_line __ARGS((int dir, int flags, int old_indent)); +! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int do_skip_space)); +! int get_last_leader_offset __ARGS((char_u *line, char_u **flags)); + int plines __ARGS((linenr_T lnum)); + int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight)); + int plines_nofill __ARGS((linenr_T lnum)); +*** ../vim-7.3.540/src/proto/ops.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/ops.pro 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 36,42 **** + int preprocs_left __ARGS((void)); + int get_register_name __ARGS((int num)); + void ex_display __ARGS((exarg_T *eap)); +! int do_join __ARGS((long count, int insert_space, int save_undo)); + void op_format __ARGS((oparg_T *oap, int keep_cursor)); + void op_formatexpr __ARGS((oparg_T *oap)); + int fex_format __ARGS((linenr_T lnum, long count, int c)); +--- 36,42 ---- + int preprocs_left __ARGS((void)); + int get_register_name __ARGS((int num)); + void ex_display __ARGS((exarg_T *eap)); +! int do_join __ARGS((long count, int insert_space, int save_undo, int use_formatoptions)); + void op_format __ARGS((oparg_T *oap, int keep_cursor)); + void op_formatexpr __ARGS((oparg_T *oap)); + int fex_format __ARGS((linenr_T lnum, long count, int c)); +*** ../vim-7.3.540/src/search.c 2012-02-04 23:34:57.000000000 +0100 +--- src/search.c 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 1548,1554 **** + int len; + int stop = TRUE; + #ifdef FEAT_MBYTE +! static char_u bytes[MB_MAXBYTES]; + static int bytelen = 1; /* >1 for multi-byte char */ + #endif + +--- 1548,1554 ---- + int len; + int stop = TRUE; + #ifdef FEAT_MBYTE +! static char_u bytes[MB_MAXBYTES + 1]; + static int bytelen = 1; /* >1 for multi-byte char */ + #endif + +*************** +*** 4901,4907 **** + #ifdef FEAT_COMMENTS + if ((*line != '#' || + STRNCMP(skipwhite(line + 1), "define", 6) != 0) +! && get_leader_len(line, NULL, FALSE)) + matched = FALSE; + + /* +--- 4901,4907 ---- + #ifdef FEAT_COMMENTS + if ((*line != '#' || + STRNCMP(skipwhite(line + 1), "define", 6) != 0) +! && get_leader_len(line, NULL, FALSE, TRUE)) + matched = FALSE; + + /* +*** ../vim-7.3.540/src/testdir/test29.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test29.in 2012-06-06 15:44:38.000000000 +0200 +*************** +*** 4,19 **** + and with 'cpoptions' flag 'j' set or not + + STARTTEST + :set nocompatible viminfo+=nviminfo + :set nojoinspaces + :set cpoptions-=j + /firstline/ +! j"tdGpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j + j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces + j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j + j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible +! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjdG:?firstline?+1,$w! test.out +! :qa! + ENDTEST + + firstline +--- 4,20 ---- + and with 'cpoptions' flag 'j' set or not + + STARTTEST ++ :so small.vim + :set nocompatible viminfo+=nviminfo + :set nojoinspaces + :set cpoptions-=j + /firstline/ +! j"td/^STARTTEST/-1 +! PJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j + j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces + j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j + j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible +! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2 + ENDTEST + + firstline +*************** +*** 54,56 **** +--- 55,181 ---- + hjkl iop! + ert + ++ STARTTEST ++ /^{/+1 ++ :set comments=s1:/*,mb:*,ex:*/,:// ++ :set nojoinspaces fo=j ++ :set backspace=eol,start ++ :.,+3join ++ j4J ++ :.,+2join ++ j3J ++ :.,+2join ++ j3J ++ :.,+2join ++ jj3J ++ ENDTEST ++ ++ { ++ ++ /* ++ * Make sure the previous comment leader is not removed. ++ */ ++ ++ /* ++ * Make sure the previous comment leader is not removed. ++ */ ++ ++ // Should the next comment leader be left alone? ++ // Yes. ++ ++ // Should the next comment leader be left alone? ++ // Yes. ++ ++ /* Here the comment leader should be left intact. */ ++ // And so should this one. ++ ++ /* Here the comment leader should be left intact. */ ++ // And so should this one. ++ ++ if (condition) // Remove the next comment leader! ++ // OK, I will. ++ action(); ++ ++ if (condition) // Remove the next comment leader! ++ // OK, I will. ++ action(); ++ } ++ ++ STARTTEST ++ /^{/+1 ++ :set comments=s1:/*,mb:*,ex:*/,:// ++ :set comments+=s1:>#,mb:#,ex:#<,:< ++ :set cpoptions-=j joinspaces fo=j ++ :set backspace=eol,start ++ :.,+3join ++ j4J ++ :.,+2join ++ j3J ++ :.,+2join ++ j3J ++ :.,+2join ++ jj3J ++ j:.,+2join ++ jj3J ++ j:.,+5join ++ j6J ++ oSome code!
// Make sure backspacing does not remove this comment leader.0i ++ ENDTEST ++ ++ { ++ ++ /* ++ * Make sure the previous comment leader is not removed. ++ */ ++ ++ /* ++ * Make sure the previous comment leader is not removed. ++ */ ++ ++ // Should the next comment leader be left alone? ++ // Yes. ++ ++ // Should the next comment leader be left alone? ++ // Yes. ++ ++ /* Here the comment leader should be left intact. */ ++ // And so should this one. ++ ++ /* Here the comment leader should be left intact. */ ++ // And so should this one. ++ ++ if (condition) // Remove the next comment leader! ++ // OK, I will. ++ action(); ++ ++ if (condition) // Remove the next comment leader! ++ // OK, I will. ++ action(); ++ ++ int i = 7 /* foo *// 3 ++ // comment ++ ; ++ ++ int i = 7 /* foo *// 3 ++ // comment ++ ; ++ ++ ># Note that the last character of the ending comment leader (left angle ++ # bracket) is a comment leader itself. Make sure that this comment leader is ++ # not removed from the next line #< ++ < On this line a new comment is opened which spans 2 lines. This comment should ++ < retain its comment leader. ++ ++ ># Note that the last character of the ending comment leader (left angle ++ # bracket) is a comment leader itself. Make sure that this comment leader is ++ # not removed from the next line #< ++ < On this line a new comment is opened which spans 2 lines. This comment should ++ < retain its comment leader. ++ ++ } ++ ++ STARTTEST ++ :g/^STARTTEST/.,/^ENDTEST/d ++ :?firstline?+1,$w! test.out ++ :qa! ++ ENDTEST +*** ../vim-7.3.540/src/testdir/test29.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test29.ok 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 47,49 **** +--- 47,86 ---- + asdfasdf asdf + asdfasdf asdf + zx cvn. as dfg? hjkl iop! ert a ++ ++ ++ { ++ /* Make sure the previous comment leader is not removed. */ ++ /* Make sure the previous comment leader is not removed. */ ++ // Should the next comment leader be left alone? Yes. ++ // Should the next comment leader be left alone? Yes. ++ /* Here the comment leader should be left intact. */ // And so should this one. ++ /* Here the comment leader should be left intact. */ // And so should this one. ++ if (condition) // Remove the next comment leader! OK, I will. ++ action(); ++ if (condition) // Remove the next comment leader! OK, I will. ++ action(); ++ } ++ ++ ++ { ++ /* Make sure the previous comment leader is not removed. */ ++ /* Make sure the previous comment leader is not removed. */ ++ // Should the next comment leader be left alone? Yes. ++ // Should the next comment leader be left alone? Yes. ++ /* Here the comment leader should be left intact. */ // And so should this one. ++ /* Here the comment leader should be left intact. */ // And so should this one. ++ if (condition) // Remove the next comment leader! OK, I will. ++ action(); ++ if (condition) // Remove the next comment leader! OK, I will. ++ action(); ++ int i = 7 /* foo *// 3 // comment ++ ; ++ int i = 7 /* foo *// 3 // comment ++ ; ++ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader. ++ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader. ++ ++ Some code!// Make sure backspacing does not remove this comment leader. ++ } ++ +*** ../vim-7.3.540/src/version.c 2012-06-06 12:06:10.000000000 +0200 +--- src/version.c 2012-06-06 16:10:03.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 541, + /**/ + +-- +I have a drinking problem -- I don't have a drink! + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.542 b/source/ap/vim/patches/7.3.542 new file mode 100644 index 00000000..81086126 --- /dev/null +++ b/source/ap/vim/patches/7.3.542 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.542 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.542 (after 7.3.506) +Problem: Function is sometimes unused. +Solution: Add #ifdef. +Files: src/gui_gtk.c + + +*** ../vim-7.3.541/src/gui_gtk.c 2012-04-25 17:10:12.000000000 +0200 +--- src/gui_gtk.c 2012-06-06 15:25:12.000000000 +0200 +*************** +*** 90,100 **** +--- 90,102 ---- + static void entry_activate_cb(GtkWidget *widget, gpointer data); + static void entry_changed_cb(GtkWidget *entry, GtkWidget *dialog); + static void find_replace_cb(GtkWidget *widget, gpointer data); ++ #if defined(FEAT_BROWSE) || defined(PROTO) + static void recent_func_log_func( + const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gpointer user_data); ++ #endif + + #if defined(FEAT_TOOLBAR) + /* +*************** +*** 1896,1901 **** +--- 1898,1904 ---- + do_cmdline_cmd((char_u *)"emenu ToolBar.FindHelp"); + } + ++ #if defined(FEAT_BROWSE) || defined(PROTO) + static void + recent_func_log_func(const gchar *log_domain UNUSED, + GLogLevelFlags log_level UNUSED, +*************** +*** 1905,1908 **** + /* We just want to suppress the warnings. */ + /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */ + } +! +--- 1908,1911 ---- + /* We just want to suppress the warnings. */ + /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */ + } +! #endif +*** ../vim-7.3.541/src/version.c 2012-06-06 16:12:54.000000000 +0200 +--- src/version.c 2012-06-06 16:14:17.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 542, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +1. At lunch time, sit in your parked car with sunglasses on and point + a hair dryer at passing cars. See if they slow down. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.543 b/source/ap/vim/patches/7.3.543 new file mode 100644 index 00000000..3fa569cc --- /dev/null +++ b/source/ap/vim/patches/7.3.543 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.543 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.543 +Problem: The cursor is in the wrong line after using ":copen". (John + Beckett) +Solution: Invoke more drastic redraw method. +Files: src/eval.c + + +*** ../vim-7.3.542/src/eval.c 2012-06-01 15:20:49.000000000 +0200 +--- src/eval.c 2012-06-06 16:28:11.000000000 +0200 +*************** +*** 18507,18515 **** + curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol"); + + check_cursor(); +! changed_cline_bef_curs(); +! invalidate_botline(); +! redraw_later(VALID); + + if (curwin->w_topline == 0) + curwin->w_topline = 1; +--- 18507,18513 ---- + curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol"); + + check_cursor(); +! changed_window_setting(); + + if (curwin->w_topline == 0) + curwin->w_topline = 1; +*** ../vim-7.3.542/src/version.c 2012-06-06 16:14:36.000000000 +0200 +--- src/version.c 2012-06-06 16:28:16.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 543, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +2. Page yourself over the intercom. Don't disguise your voice. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.544 b/source/ap/vim/patches/7.3.544 new file mode 100644 index 00000000..198a6cb1 --- /dev/null +++ b/source/ap/vim/patches/7.3.544 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.544 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.544 +Problem: There is no good way to close a quickfix window when closing the + last ordinary window. +Solution: Add the QuitPre autocommand. +Files: src/ex_docmd.c, src/fileio.c, src/vim.h + + +*** ../vim-7.3.543/src/ex_docmd.c 2012-06-06 16:12:54.000000000 +0200 +--- src/ex_docmd.c 2012-06-06 17:58:41.000000000 +0200 +*************** +*** 6458,6463 **** +--- 6458,6464 ---- + return; + } + #ifdef FEAT_AUTOCMD ++ apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); + if (curbuf_locked()) + return; + #endif +*** ../vim-7.3.543/src/fileio.c 2012-04-30 17:04:47.000000000 +0200 +--- src/fileio.c 2012-06-06 17:32:12.000000000 +0200 +*************** +*** 7678,7683 **** +--- 7678,7684 ---- + {"MenuPopup", EVENT_MENUPOPUP}, + {"QuickFixCmdPost", EVENT_QUICKFIXCMDPOST}, + {"QuickFixCmdPre", EVENT_QUICKFIXCMDPRE}, ++ {"QuitPre", EVENT_QUITPRE}, + {"RemoteReply", EVENT_REMOTEREPLY}, + {"SessionLoadPost", EVENT_SESSIONLOADPOST}, + {"ShellCmdPost", EVENT_SHELLCMDPOST}, +*** ../vim-7.3.543/src/vim.h 2012-06-01 15:20:49.000000000 +0200 +--- src/vim.h 2012-06-06 17:30:01.000000000 +0200 +*************** +*** 1264,1271 **** + EVENT_INSERTENTER, /* when entering Insert mode */ + EVENT_INSERTLEAVE, /* when leaving Insert mode */ + EVENT_MENUPOPUP, /* just before popup menu is displayed */ +! EVENT_QUICKFIXCMDPOST, /* after :make, :grep etc */ +! EVENT_QUICKFIXCMDPRE, /* before :make, :grep etc */ + EVENT_SESSIONLOADPOST, /* after loading a session file */ + EVENT_STDINREADPOST, /* after reading from stdin */ + EVENT_STDINREADPRE, /* before reading from stdin */ +--- 1264,1272 ---- + EVENT_INSERTENTER, /* when entering Insert mode */ + EVENT_INSERTLEAVE, /* when leaving Insert mode */ + EVENT_MENUPOPUP, /* just before popup menu is displayed */ +! EVENT_QUICKFIXCMDPOST, /* after :make, :grep etc. */ +! EVENT_QUICKFIXCMDPRE, /* before :make, :grep etc. */ +! EVENT_QUITPRE, /* before :quit */ + EVENT_SESSIONLOADPOST, /* after loading a session file */ + EVENT_STDINREADPOST, /* after reading from stdin */ + EVENT_STDINREADPRE, /* before reading from stdin */ +*** ../vim-7.3.543/src/version.c 2012-06-06 16:29:06.000000000 +0200 +--- src/version.c 2012-06-06 18:02:09.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 544, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +3. Every time someone asks you to do something, ask if they want fries + with that. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.545 b/source/ap/vim/patches/7.3.545 new file mode 100644 index 00000000..1bd76ebe --- /dev/null +++ b/source/ap/vim/patches/7.3.545 @@ -0,0 +1,359 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.545 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.545 +Problem: When closing a window or buffer autocommands may close it too, + causing problems for where the autocommand was invoked from. +Solution: Add the w_closing and b_closing flags. When set disallow ":q" and + ":close" to prevent recursive closing. +Files: src/structs.h, src/buffer.c, src/ex_docmd.c, src/window.c + + +*** ../vim-7.3.544/src/structs.h 2012-02-04 21:57:44.000000000 +0100 +--- src/structs.h 2012-06-06 16:43:34.000000000 +0200 +*************** +*** 1201,1206 **** +--- 1201,1210 ---- + typedef struct qf_info_S qf_info_T; + #endif + ++ /* ++ * These are items normally related to a buffer. But when using ":ownsyntax" ++ * a window may have its own instance. ++ */ + typedef struct { + #ifdef FEAT_SYN_HL + hashtab_T b_keywtab; /* syntax keywords hash table */ +*************** +*** 1290,1295 **** +--- 1294,1303 ---- + int b_nwindows; /* nr of windows open on this buffer */ + + int b_flags; /* various BF_ flags */ ++ #ifdef FEAT_AUTOCMD ++ int b_closing; /* buffer is being closed, don't let ++ autocommands close it too. */ ++ #endif + + /* + * b_ffname has the full path of the file (NULL for no name). +*************** +*** 1853,1858 **** +--- 1861,1870 ---- + win_T *w_prev; /* link to previous window */ + win_T *w_next; /* link to next window */ + #endif ++ #ifdef FEAT_AUTOCMD ++ int w_closing; /* window is being closed, don't let ++ autocommands close it too. */ ++ #endif + + frame_T *w_frame; /* frame containing this window */ + +*** ../vim-7.3.544/src/buffer.c 2012-03-16 14:32:10.000000000 +0100 +--- src/buffer.c 2012-06-06 18:57:27.000000000 +0200 +*************** +*** 377,404 **** + /* When the buffer is no longer in a window, trigger BufWinLeave */ + if (buf->b_nwindows == 1) + { + apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname, + FALSE, buf); +! /* Return if autocommands deleted the buffer or made it the only one. */ +! if (!buf_valid(buf) || (abort_if_last && one_window())) + { + EMSG(_(e_auabort)); + return; + } + + /* When the buffer becomes hidden, but is not unloaded, trigger + * BufHidden */ + if (!unload_buf) + { + apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname, + FALSE, buf); +! /* Return if autocommands deleted the buffer or made it the only +! * one. */ +! if (!buf_valid(buf) || (abort_if_last && one_window())) +! { +! EMSG(_(e_auabort)); +! return; +! } + } + # ifdef FEAT_EVAL + if (aborting()) /* autocmds may abort script processing */ +--- 377,411 ---- + /* When the buffer is no longer in a window, trigger BufWinLeave */ + if (buf->b_nwindows == 1) + { ++ buf->b_closing = TRUE; + apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname, + FALSE, buf); +! if (!buf_valid(buf)) + { ++ /* Autocommands deleted the buffer. */ ++ aucmd_abort: + EMSG(_(e_auabort)); + return; + } ++ buf->b_closing = FALSE; ++ if (abort_if_last && one_window()) ++ /* Autocommands made this the only window. */ ++ goto aucmd_abort; + + /* When the buffer becomes hidden, but is not unloaded, trigger + * BufHidden */ + if (!unload_buf) + { ++ buf->b_closing = TRUE; + apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname, + FALSE, buf); +! if (!buf_valid(buf)) +! /* Autocommands deleted the buffer. */ +! goto aucmd_abort; +! buf->b_closing = FALSE; +! if (abort_if_last && one_window()) +! /* Autocommands made this the only window. */ +! goto aucmd_abort; + } + # ifdef FEAT_EVAL + if (aborting()) /* autocmds may abort script processing */ +*************** +*** 552,557 **** +--- 559,565 ---- + #ifdef FEAT_AUTOCMD + int is_curbuf = (buf == curbuf); + ++ buf->b_closing = TRUE; + apply_autocmds(EVENT_BUFUNLOAD, buf->b_fname, buf->b_fname, FALSE, buf); + if (!buf_valid(buf)) /* autocommands may delete the buffer */ + return; +*************** +*** 568,573 **** +--- 576,582 ---- + if (!buf_valid(buf)) /* autocommands may delete the buffer */ + return; + } ++ buf->b_closing = FALSE; + # ifdef FEAT_EVAL + if (aborting()) /* autocmds may abort script processing */ + return; +*************** +*** 1150,1155 **** +--- 1159,1167 ---- + * a window with this buffer. + */ + while (buf == curbuf ++ # ifdef FEAT_AUTOCMD ++ && !(curwin->w_closing || curwin->w_buffer->b_closing) ++ # endif + && (firstwin != lastwin || first_tabpage->tp_next != NULL)) + win_close(curwin, FALSE); + #endif +*************** +*** 4750,4756 **** + #ifdef FEAT_WINDOWS + || (had_tab > 0 && wp != firstwin) + #endif +! ) && firstwin != lastwin) + { + win_close(wp, FALSE); + #ifdef FEAT_AUTOCMD +--- 4762,4772 ---- + #ifdef FEAT_WINDOWS + || (had_tab > 0 && wp != firstwin) + #endif +! ) && firstwin != lastwin +! #ifdef FEAT_AUTOCMD +! && !(wp->w_closing || wp->w_buffer->b_closing) +! #endif +! ) + { + win_close(wp, FALSE); + #ifdef FEAT_AUTOCMD +*** ../vim-7.3.544/src/ex_docmd.c 2012-06-06 18:03:01.000000000 +0200 +--- src/ex_docmd.c 2012-06-06 18:06:46.000000000 +0200 +*************** +*** 6459,6465 **** + } + #ifdef FEAT_AUTOCMD + apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); +! if (curbuf_locked()) + return; + #endif + +--- 6459,6467 ---- + } + #ifdef FEAT_AUTOCMD + apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); +! /* Refuse to quick when locked or when the buffer in the last window is +! * being closed (can only happen in autocommands). */ +! if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing)) + return; + #endif + +*** ../vim-7.3.544/src/window.c 2012-05-25 12:38:57.000000000 +0200 +--- src/window.c 2012-06-06 18:47:19.000000000 +0200 +*************** +*** 2034,2040 **** + + for (wp = firstwin; wp != NULL && lastwin != firstwin; ) + { +! if (wp->w_buffer == buf && (!keep_curwin || wp != curwin)) + { + win_close(wp, FALSE); + +--- 2034,2044 ---- + + for (wp = firstwin; wp != NULL && lastwin != firstwin; ) + { +! if (wp->w_buffer == buf && (!keep_curwin || wp != curwin) +! #ifdef FEAT_AUTOCMD +! && !(wp->w_closing || wp->w_buffer->b_closing) +! #endif +! ) + { + win_close(wp, FALSE); + +*************** +*** 2051,2057 **** + nexttp = tp->tp_next; + if (tp != curtab) + for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next) +! if (wp->w_buffer == buf) + { + win_close_othertab(wp, FALSE, tp); + +--- 2055,2065 ---- + nexttp = tp->tp_next; + if (tp != curtab) + for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next) +! if (wp->w_buffer == buf +! #ifdef FEAT_AUTOCMD +! && !(wp->w_closing || wp->w_buffer->b_closing) +! #endif +! ) + { + win_close_othertab(wp, FALSE, tp); + +*************** +*** 2168,2173 **** +--- 2176,2183 ---- + } + + #ifdef FEAT_AUTOCMD ++ if (win->w_closing || win->w_buffer->b_closing) ++ return; /* window is already being closed */ + if (win == aucmd_win) + { + EMSG(_("E813: Cannot close autocmd window")); +*************** +*** 2203,2219 **** + wp = frame2win(win_altframe(win, NULL)); + + /* +! * Be careful: If autocommands delete the window, return now. + */ + if (wp->w_buffer != curbuf) + { + other_buffer = TRUE; + apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf); +! if (!win_valid(win) || last_window()) + return; + } + apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf); +! if (!win_valid(win) || last_window()) + return; + # ifdef FEAT_EVAL + /* autocmds may abort script processing */ +--- 2213,2238 ---- + wp = frame2win(win_altframe(win, NULL)); + + /* +! * Be careful: If autocommands delete the window or cause this window +! * to be the last one left, return now. + */ + if (wp->w_buffer != curbuf) + { + other_buffer = TRUE; ++ win->w_closing = TRUE; + apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf); +! if (!win_valid(win)) +! return; +! win->w_closing = FALSE; +! if (last_window()) + return; + } ++ win->w_closing = TRUE; + apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf); +! if (!win_valid(win)) +! return; +! win->w_closing = FALSE; +! if (last_window()) + return; + # ifdef FEAT_EVAL + /* autocmds may abort script processing */ +*************** +*** 2240,2246 **** + * Close the link to the buffer. + */ + if (win->w_buffer != NULL) +! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, TRUE); + + /* Autocommands may have closed the window already, or closed the only + * other window or moved to another tab page. */ +--- 2259,2274 ---- + * Close the link to the buffer. + */ + if (win->w_buffer != NULL) +! { +! #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; +! #endif +! } + + /* Autocommands may have closed the window already, or closed the only + * other window or moved to another tab page. */ +*************** +*** 2346,2351 **** +--- 2374,2384 ---- + tabpage_T *ptp = NULL; + int free_tp = FALSE; + ++ #ifdef FEAT_AUTOCMD ++ if (win->w_closing || win->w_buffer->b_closing) ++ return; /* window is already being closed */ ++ #endif ++ + /* Close the link to the buffer. */ + close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE); + +*** ../vim-7.3.544/src/version.c 2012-06-06 18:03:01.000000000 +0200 +--- src/version.c 2012-06-06 18:53:06.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 545, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +4. Put your garbage can on your desk and label it "in". + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.546 b/source/ap/vim/patches/7.3.546 new file mode 100644 index 00000000..c883d2d6 --- /dev/null +++ b/source/ap/vim/patches/7.3.546 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.546 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.546 +Problem: Bogus line break. +Solution: Remove the line break. +Files: src/screen.c + + +*** ../vim-7.3.545/src/screen.c 2012-06-01 15:20:49.000000000 +0200 +--- src/screen.c 2012-06-01 16:31:30.000000000 +0200 +*************** +*** 3228,3235 **** + /* no bad word found at line start, don't check until end of a + * word */ + spell_hlf = HLF_COUNT; +! word_end = (int)(spell_to_word_end(ptr, wp) +! - line + 1); + } + else + { +--- 3228,3234 ---- + /* no bad word found at line start, don't check until end of a + * word */ + spell_hlf = HLF_COUNT; +! word_end = (int)(spell_to_word_end(ptr, wp) - line + 1); + } + else + { +*** ../vim-7.3.545/src/version.c 2012-06-06 19:02:40.000000000 +0200 +--- src/version.c 2012-06-06 19:05:11.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 546, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +5. Put decaf in the coffee maker for 3 weeks. Once everyone has gotten + over their caffeine addictions, switch to espresso. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.547 b/source/ap/vim/patches/7.3.547 new file mode 100644 index 00000000..5533144a --- /dev/null +++ b/source/ap/vim/patches/7.3.547 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.547 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.547 (after 7.3.541) +Problem: Compiler warning for uninitialized variable. +Solution: Initialize it. +Files: src/ops.c + + +*** ../vim-7.3.546/src/ops.c 2012-06-06 16:12:54.000000000 +0200 +--- src/ops.c 2012-06-06 23:06:45.000000000 +0200 +*************** +*** 4306,4312 **** + colnr_T col = 0; + int ret = OK; + #if defined(FEAT_COMMENTS) || defined(PROTO) +! int *comments; + int remove_comments = (use_formatoptions == TRUE) + && has_format_option(FO_REMOVE_COMS); + int prev_was_comment; +--- 4306,4312 ---- + colnr_T col = 0; + int ret = OK; + #if defined(FEAT_COMMENTS) || defined(PROTO) +! int *comments = NULL; + int remove_comments = (use_formatoptions == TRUE) + && has_format_option(FO_REMOVE_COMS); + int prev_was_comment; +*** ../vim-7.3.546/src/version.c 2012-06-06 19:05:45.000000000 +0200 +--- src/version.c 2012-06-06 23:07:26.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 547, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +9. As often as possible, skip rather than walk. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.548 b/source/ap/vim/patches/7.3.548 new file mode 100644 index 00000000..3692a9a9 --- /dev/null +++ b/source/ap/vim/patches/7.3.548 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.548 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.548 +Problem: Compiler warning on 64 bit Windows. +Solution: Add type cast. (Mike Williams) +Files: src/ops.c + + +*** ../vim-7.3.547/src/ops.c 2012-06-06 23:08:33.000000000 +0200 +--- src/ops.c 2012-06-07 21:07:57.000000000 +0200 +*************** +*** 4352,4358 **** + + char_u *new_curr = skip_comment(curr, TRUE, insert_space, + &prev_was_comment); +! comments[t] = new_curr - curr; + curr = new_curr; + } + else +--- 4352,4358 ---- + + char_u *new_curr = skip_comment(curr, TRUE, insert_space, + &prev_was_comment); +! comments[t] = (int)(new_curr - curr); + curr = new_curr; + } + else +*** ../vim-7.3.547/src/version.c 2012-06-06 23:08:33.000000000 +0200 +--- src/version.c 2012-06-07 21:08:35.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 548, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +17. When the money comes out the ATM, scream "I won!, I won! 3rd + time this week!!!!!" + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.549 b/source/ap/vim/patches/7.3.549 new file mode 100644 index 00000000..6d27fc3f --- /dev/null +++ b/source/ap/vim/patches/7.3.549 @@ -0,0 +1,125 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.549 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.549 +Problem: In 'cinoptions' "0s" is interpreted as one shiftwidth. (David + Pineau) +Solution: Use the zero as zero. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.548/src/misc1.c 2012-06-06 16:12:54.000000000 +0200 +--- src/misc1.c 2012-06-13 13:17:11.000000000 +0200 +*************** +*** 6635,6640 **** +--- 6635,6641 ---- + int whilelevel; + linenr_T lnum; + char_u *options; ++ char_u *digits; + int fraction = 0; /* init for GCC */ + int divider; + int n; +*************** +*** 6650,6655 **** +--- 6651,6657 ---- + l = options++; + if (*options == '-') + ++options; ++ digits = options; /* remember where the digits start */ + n = getdigits(&options); + divider = 0; + if (*options == '.') /* ".5s" means a fraction */ +*************** +*** 6666,6672 **** + } + if (*options == 's') /* "2s" means two times 'shiftwidth' */ + { +! if (n == 0 && fraction == 0) + n = curbuf->b_p_sw; /* just "s" is one 'shiftwidth' */ + else + { +--- 6668,6674 ---- + } + if (*options == 's') /* "2s" means two times 'shiftwidth' */ + { +! if (options == digits) + n = curbuf->b_p_sw; /* just "s" is one 'shiftwidth' */ + else + { +*** ../vim-7.3.548/src/testdir/test3.in 2012-04-05 17:17:38.000000000 +0200 +--- src/testdir/test3.in 2012-06-13 13:17:31.000000000 +0200 +*************** +*** 977,982 **** +--- 977,1000 ---- + + STARTTEST + :set cin ++ :set cino=es,n0s ++ /main ++ =][ ++ ENDTEST ++ ++ main(void) ++ { ++ /* Make sure that cino=X0s is not parsed like cino=Xs. */ ++ if (cond) ++ foo(); ++ else ++ { ++ bar(); ++ } ++ } ++ ++ STARTTEST ++ :set cin + :set cino= + ]]=][ + ENDTEST +*** ../vim-7.3.548/src/testdir/test3.ok 2012-04-05 17:17:38.000000000 +0200 +--- src/testdir/test3.ok 2012-06-13 13:17:31.000000000 +0200 +*************** +*** 940,945 **** +--- 940,957 ---- + } + + ++ main(void) ++ { ++ /* Make sure that cino=X0s is not parsed like cino=Xs. */ ++ if (cond) ++ foo(); ++ else ++ { ++ bar(); ++ } ++ } ++ ++ + { + do + { +*** ../vim-7.3.548/src/version.c 2012-06-07 21:09:35.000000000 +0200 +--- src/version.c 2012-06-13 13:37:18.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 549, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +29. Your phone bill comes to your doorstep in a box. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.550 b/source/ap/vim/patches/7.3.550 new file mode 100644 index 00000000..6fba66cd --- /dev/null +++ b/source/ap/vim/patches/7.3.550 @@ -0,0 +1,160 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.550 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.550 (after 7.3.541) +Problem: With "j" in 'formatoptions' a list leader is not removed. (Gary + Johnson) +Solution: Don't ignore the start of a three part comment. (Lech Lorens) +Files: src/ops.c, src/testdir/test29.in, src/testdir/test29.ok + + +*** ../vim-7.3.549/src/ops.c 2012-06-07 21:09:35.000000000 +0200 +--- src/ops.c 2012-06-13 13:48:26.000000000 +0200 +*************** +*** 4250,4264 **** + return line; + + /* Find: +- * - COM_START, + * - COM_END, + * - colon, + * whichever comes first. + */ + while (*comment_flags) + { +! if (*comment_flags == COM_START +! || *comment_flags == COM_END + || *comment_flags == ':') + { + break; +--- 4250,4262 ---- + return line; + + /* Find: + * - COM_END, + * - colon, + * whichever comes first. + */ + while (*comment_flags) + { +! if (*comment_flags == COM_END + || *comment_flags == ':') + { + break; +*************** +*** 4267,4275 **** + } + + /* If we found a colon, it means that we are not processing a line +! * starting with an opening or a closing part of a three-part +! * comment. That's good, because we don't want to remove those as +! * this would be annoying. + */ + if (*comment_flags == ':' || *comment_flags == NUL) + line += lead_len; +--- 4265,4272 ---- + } + + /* If we found a colon, it means that we are not processing a line +! * starting with a closing part of a three-part comment. That's good, +! * because we don't want to remove those as this would be annoying. + */ + if (*comment_flags == ':' || *comment_flags == NUL) + line += lead_len; +*** ../vim-7.3.549/src/testdir/test29.in 2012-06-06 16:12:54.000000000 +0200 +--- src/testdir/test29.in 2012-06-13 13:48:26.000000000 +0200 +*************** +*** 103,114 **** + + STARTTEST + /^{/+1 +! :set comments=s1:/*,mb:*,ex:*/,:// + :set comments+=s1:>#,mb:#,ex:#<,:< + :set cpoptions-=j joinspaces fo=j + :set backspace=eol,start + :.,+3join + j4J + :.,+2join + j3J + :.,+2join +--- 103,117 ---- + + STARTTEST + /^{/+1 +! :set comments=sO:*\ -,mO:*\ \ ,exO:*/ +! :set comments+=s1:/*,mb:*,ex:*/,:// + :set comments+=s1:>#,mb:#,ex:#<,:< + :set cpoptions-=j joinspaces fo=j + :set backspace=eol,start + :.,+3join + j4J ++ :.,+8join ++ j9J + :.,+2join + j3J + :.,+2join +*************** +*** 132,137 **** +--- 135,158 ---- + * Make sure the previous comment leader is not removed. + */ + ++ /* List: ++ * - item1 ++ * foo bar baz ++ * foo bar baz ++ * - item2 ++ * foo bar baz ++ * foo bar baz ++ */ ++ ++ /* List: ++ * - item1 ++ * foo bar baz ++ * foo bar baz ++ * - item2 ++ * foo bar baz ++ * foo bar baz ++ */ ++ + // Should the next comment leader be left alone? + // Yes. + +*** ../vim-7.3.549/src/testdir/test29.ok 2012-06-06 16:12:54.000000000 +0200 +--- src/testdir/test29.ok 2012-06-13 13:48:26.000000000 +0200 +*************** +*** 66,71 **** +--- 66,73 ---- + { + /* Make sure the previous comment leader is not removed. */ + /* Make sure the previous comment leader is not removed. */ ++ /* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */ ++ /* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */ + // Should the next comment leader be left alone? Yes. + // Should the next comment leader be left alone? Yes. + /* Here the comment leader should be left intact. */ // And so should this one. +*** ../vim-7.3.549/src/version.c 2012-06-13 13:40:45.000000000 +0200 +--- src/version.c 2012-06-13 13:50:23.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 550, + /**/ + +-- +If you put 7 of the most talented OSS developers in a room for a week +and asked them to fix a bug in a spreadsheet program, in 1 week +you'd have 2 new mail readers and a text-based web browser. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.551 b/source/ap/vim/patches/7.3.551 new file mode 100644 index 00000000..db8dbac7 --- /dev/null +++ b/source/ap/vim/patches/7.3.551 @@ -0,0 +1,494 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.551 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.551 +Problem: When using :tablose a TabEnter autocommand is triggered too early. + (Karthick) +Solution: Don't trigger *Enter autocommands before closing the tab. + (Christian Brabandt) +Files: src/buffer.c, src/eval.c, src/ex_cmds2.c, src/fileio.c, + src/proto/window.pro, src/window.c + + +*** ../vim-7.3.550/src/buffer.c 2012-06-06 19:02:40.000000000 +0200 +--- src/buffer.c 2012-06-13 14:18:58.000000000 +0200 +*************** +*** 4470,4476 **** + * When the ":tab" modifier was used do this for all tab pages. + */ + if (had_tab > 0) +! goto_tabpage_tp(first_tabpage); + for (;;) + { + tpnext = curtab->tp_next; +--- 4470,4476 ---- + * When the ":tab" modifier was used do this for all tab pages. + */ + if (had_tab > 0) +! goto_tabpage_tp(first_tabpage, TRUE); + for (;;) + { + tpnext = curtab->tp_next; +*************** +*** 4582,4588 **** + if (!valid_tabpage(tpnext)) + tpnext = first_tabpage; /* start all over...*/ + # endif +! goto_tabpage_tp(tpnext); + } + + /* +--- 4582,4588 ---- + if (!valid_tabpage(tpnext)) + tpnext = first_tabpage; /* start all over...*/ + # endif +! goto_tabpage_tp(tpnext, TRUE); + } + + /* +*************** +*** 4686,4698 **** + if (last_curtab != new_curtab) + { + if (valid_tabpage(last_curtab)) +! goto_tabpage_tp(last_curtab); + if (win_valid(last_curwin)) + win_enter(last_curwin, FALSE); + } + /* to window with first arg */ + if (valid_tabpage(new_curtab)) +! goto_tabpage_tp(new_curtab); + if (win_valid(new_curwin)) + win_enter(new_curwin, FALSE); + +--- 4686,4698 ---- + if (last_curtab != new_curtab) + { + if (valid_tabpage(last_curtab)) +! goto_tabpage_tp(last_curtab, TRUE); + if (win_valid(last_curwin)) + win_enter(last_curwin, FALSE); + } + /* to window with first arg */ + if (valid_tabpage(new_curtab)) +! goto_tabpage_tp(new_curtab, TRUE); + if (win_valid(new_curwin)) + win_enter(new_curwin, FALSE); + +*************** +*** 4744,4750 **** + */ + #ifdef FEAT_WINDOWS + if (had_tab > 0) +! goto_tabpage_tp(first_tabpage); + for (;;) + { + #endif +--- 4744,4750 ---- + */ + #ifdef FEAT_WINDOWS + if (had_tab > 0) +! goto_tabpage_tp(first_tabpage, TRUE); + for (;;) + { + #endif +*************** +*** 4784,4790 **** + /* Without the ":tab" modifier only do the current tab page. */ + if (had_tab == 0 || tpnext == NULL) + break; +! goto_tabpage_tp(tpnext); + } + #endif + +--- 4784,4790 ---- + /* Without the ":tab" modifier only do the current tab page. */ + if (had_tab == 0 || tpnext == NULL) + break; +! goto_tabpage_tp(tpnext, TRUE); + } + #endif + +*** ../vim-7.3.550/src/eval.c 2012-06-06 16:29:06.000000000 +0200 +--- src/eval.c 2012-06-13 14:18:58.000000000 +0200 +*************** +*** 16415,16421 **** + if (tp != NULL && varname != NULL && varp != NULL) + { + save_curtab = curtab; +! goto_tabpage_tp(tp); + + tabvarname = alloc((unsigned)STRLEN(varname) + 3); + if (tabvarname != NULL) +--- 16415,16421 ---- + if (tp != NULL && varname != NULL && varp != NULL) + { + save_curtab = curtab; +! goto_tabpage_tp(tp, TRUE); + + tabvarname = alloc((unsigned)STRLEN(varname) + 3); + if (tabvarname != NULL) +*************** +*** 16428,16434 **** + + /* Restore current tabpage */ + if (valid_tabpage(save_curtab)) +! goto_tabpage_tp(save_curtab); + } + } + +--- 16428,16434 ---- + + /* Restore current tabpage */ + if (valid_tabpage(save_curtab)) +! goto_tabpage_tp(save_curtab, TRUE); + } + } + +*************** +*** 16492,16498 **** + /* set curwin to be our win, temporarily */ + save_curwin = curwin; + save_curtab = curtab; +! goto_tabpage_tp(tp); + if (!win_valid(win)) + return; + curwin = win; +--- 16492,16498 ---- + /* set curwin to be our win, temporarily */ + save_curwin = curwin; + save_curtab = curtab; +! goto_tabpage_tp(tp, TRUE); + if (!win_valid(win)) + return; + curwin = win; +*************** +*** 16527,16533 **** + /* Restore current tabpage and window, if still valid (autocomands can + * make them invalid). */ + if (valid_tabpage(save_curtab)) +! goto_tabpage_tp(save_curtab); + if (win_valid(save_curwin)) + { + curwin = save_curwin; +--- 16527,16533 ---- + /* Restore current tabpage and window, if still valid (autocomands can + * make them invalid). */ + if (valid_tabpage(save_curtab)) +! goto_tabpage_tp(save_curtab, TRUE); + if (win_valid(save_curwin)) + { + curwin = save_curwin; +*** ../vim-7.3.550/src/ex_cmds2.c 2012-04-25 17:32:14.000000000 +0200 +--- src/ex_cmds2.c 2012-06-13 14:18:58.000000000 +0200 +*************** +*** 2476,2482 **** + /* go to window "tp" */ + if (!valid_tabpage(tp)) + break; +! goto_tabpage_tp(tp); + tp = tp->tp_next; + } + #endif +--- 2476,2482 ---- + /* go to window "tp" */ + if (!valid_tabpage(tp)) + break; +! goto_tabpage_tp(tp, TRUE); + tp = tp->tp_next; + } + #endif +*** ../vim-7.3.550/src/fileio.c 2012-06-06 18:03:01.000000000 +0200 +--- src/fileio.c 2012-06-13 14:18:58.000000000 +0200 +*************** +*** 8918,8924 **** + if (wp == aucmd_win) + { + if (tp != curtab) +! goto_tabpage_tp(tp); + win_goto(aucmd_win); + goto win_found; + } +--- 8918,8924 ---- + if (wp == aucmd_win) + { + if (tp != curtab) +! goto_tabpage_tp(tp, TRUE); + win_goto(aucmd_win); + goto win_found; + } +*** ../vim-7.3.550/src/proto/window.pro 2012-02-22 14:58:24.000000000 +0100 +--- src/proto/window.pro 2012-06-13 14:23:06.000000000 +0200 +*************** +*** 27,33 **** + tabpage_T *find_tabpage __ARGS((int n)); + int tabpage_index __ARGS((tabpage_T *ftp)); + void goto_tabpage __ARGS((int n)); +! void goto_tabpage_tp __ARGS((tabpage_T *tp)); + void goto_tabpage_win __ARGS((tabpage_T *tp, win_T *wp)); + void tabpage_move __ARGS((int nr)); + void win_goto __ARGS((win_T *wp)); +--- 27,33 ---- + tabpage_T *find_tabpage __ARGS((int n)); + int tabpage_index __ARGS((tabpage_T *ftp)); + void goto_tabpage __ARGS((int n)); +! void goto_tabpage_tp __ARGS((tabpage_T *tp, int trigger_autocmds)); + void goto_tabpage_win __ARGS((tabpage_T *tp, win_T *wp)); + void tabpage_move __ARGS((int nr)); + void win_goto __ARGS((win_T *wp)); +*** ../vim-7.3.550/src/window.c 2012-06-06 19:02:40.000000000 +0200 +--- src/window.c 2012-06-13 14:24:38.000000000 +0200 +*************** +*** 45,51 **** + #if defined(FEAT_WINDOWS) || defined(PROTO) + static tabpage_T *alloc_tabpage __ARGS((void)); + static int leave_tabpage __ARGS((buf_T *new_curbuf)); +! static void enter_tabpage __ARGS((tabpage_T *tp, buf_T *old_curbuf)); + static void frame_fix_height __ARGS((win_T *wp)); + static int frame_minheight __ARGS((frame_T *topfrp, win_T *next_curwin)); + static void win_enter_ext __ARGS((win_T *wp, int undo_sync, int no_curwin)); +--- 45,51 ---- + #if defined(FEAT_WINDOWS) || defined(PROTO) + static tabpage_T *alloc_tabpage __ARGS((void)); + static int leave_tabpage __ARGS((buf_T *new_curbuf)); +! static void enter_tabpage __ARGS((tabpage_T *tp, buf_T *old_curbuf, int trigger_autocmds)); + static void frame_fix_height __ARGS((win_T *wp)); + static int frame_minheight __ARGS((frame_T *topfrp, win_T *next_curwin)); + static void win_enter_ext __ARGS((win_T *wp, int undo_sync, int no_curwin)); +*************** +*** 355,365 **** + && valid_tabpage(oldtab)) + { + newtab = curtab; +! goto_tabpage_tp(oldtab); + if (curwin == wp) + win_close(curwin, FALSE); + if (valid_tabpage(newtab)) +! goto_tabpage_tp(newtab); + } + } + break; +--- 355,365 ---- + && valid_tabpage(oldtab)) + { + newtab = curtab; +! goto_tabpage_tp(oldtab, TRUE); + if (curwin == wp) + win_close(curwin, FALSE); + if (valid_tabpage(newtab)) +! goto_tabpage_tp(newtab, TRUE); + } + } + break; +*************** +*** 2130,2137 **** + * page and then close the window and the tab page. This avoids that + * curwin and curtab are invalid while we are freeing memory, they may + * be used in GUI events. + */ +! goto_tabpage_tp(alt_tabpage()); + redraw_tabline = TRUE; + + /* Safety check: Autocommands may have closed the window when jumping +--- 2130,2139 ---- + * page and then close the window and the tab page. This avoids that + * curwin and curtab are invalid while we are freeing memory, they may + * be used in GUI events. ++ * Don't trigger autocommands yet, they may use wrong values, so do ++ * that below. + */ +! goto_tabpage_tp(alt_tabpage(), FALSE); + redraw_tabline = TRUE; + + /* Safety check: Autocommands may have closed the window when jumping +*************** +*** 2144,2149 **** +--- 2146,2157 ---- + if (h != tabline_height()) + shell_new_rows(); + } ++ /* Since goto_tabpage_tp above did not trigger *Enter autocommands, do ++ * that now. */ ++ #ifdef FEAT_AUTOCMD ++ apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); ++ apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf); ++ #endif + return TRUE; + } + return FALSE; +*************** +*** 3556,3562 **** + } + + /* Failed, get back the previous Tab page */ +! enter_tabpage(curtab, curbuf); + return FAIL; + } + +--- 3564,3570 ---- + } + + /* Failed, get back the previous Tab page */ +! enter_tabpage(curtab, curbuf, TRUE); + return FAIL; + } + +*************** +*** 3709,3719 **** + /* + * Start using tab page "tp". + * Only to be used after leave_tabpage() or freeing the current tab page. + */ + static void +! enter_tabpage(tp, old_curbuf) + tabpage_T *tp; + buf_T *old_curbuf UNUSED; + { + int old_off = tp->tp_firstwin->w_winrow; + win_T *next_prevwin = tp->tp_prevwin; +--- 3717,3729 ---- + /* + * Start using tab page "tp". + * Only to be used after leave_tabpage() or freeing the current tab page. ++ * Only trigger *Enter autocommands when trigger_autocmds is TRUE. + */ + static void +! enter_tabpage(tp, old_curbuf, trigger_autocmds) + tabpage_T *tp; + buf_T *old_curbuf UNUSED; ++ int trigger_autocmds; + { + int old_off = tp->tp_firstwin->w_winrow; + win_T *next_prevwin = tp->tp_prevwin; +*************** +*** 3761,3769 **** + #ifdef FEAT_AUTOCMD + /* Apply autocommands after updating the display, when 'rows' and + * 'columns' have been set correctly. */ +! apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); +! if (old_curbuf != curbuf) +! apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); + #endif + + redraw_all_later(CLEAR); +--- 3771,3782 ---- + #ifdef FEAT_AUTOCMD + /* Apply autocommands after updating the display, when 'rows' and + * 'columns' have been set correctly. */ +! if (trigger_autocmds) +! { +! apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); +! if (old_curbuf != curbuf) +! apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); +! } + #endif + + redraw_all_later(CLEAR); +*************** +*** 3839,3845 **** + } + } + +! goto_tabpage_tp(tp); + + #ifdef FEAT_GUI_TABLINE + if (gui_use_tabline()) +--- 3852,3858 ---- + } + } + +! goto_tabpage_tp(tp, TRUE); + + #ifdef FEAT_GUI_TABLINE + if (gui_use_tabline()) +*************** +*** 3849,3859 **** + + /* + * Go to tabpage "tp". + * Note: doesn't update the GUI tab. + */ + void +! goto_tabpage_tp(tp) + tabpage_T *tp; + { + /* Don't repeat a message in another tab page. */ + set_keep_msg(NULL, 0); +--- 3862,3874 ---- + + /* + * Go to tabpage "tp". ++ * Only trigger *Enter autocommands when trigger_autocmds is TRUE. + * Note: doesn't update the GUI tab. + */ + void +! goto_tabpage_tp(tp, trigger_autocmds) + tabpage_T *tp; ++ int trigger_autocmds; + { + /* Don't repeat a message in another tab page. */ + set_keep_msg(NULL, 0); +*************** +*** 3861,3869 **** + if (tp != curtab && leave_tabpage(tp->tp_curwin->w_buffer) == OK) + { + if (valid_tabpage(tp)) +! enter_tabpage(tp, curbuf); + else +! enter_tabpage(curtab, curbuf); + } + } + +--- 3876,3884 ---- + if (tp != curtab && leave_tabpage(tp->tp_curwin->w_buffer) == OK) + { + if (valid_tabpage(tp)) +! enter_tabpage(tp, curbuf, trigger_autocmds); + else +! enter_tabpage(curtab, curbuf, trigger_autocmds); + } + } + +*************** +*** 3876,3882 **** + tabpage_T *tp; + win_T *wp; + { +! goto_tabpage_tp(tp); + if (curtab == tp && win_valid(wp)) + { + win_enter(wp, TRUE); +--- 3891,3897 ---- + tabpage_T *tp; + win_T *wp; + { +! goto_tabpage_tp(tp, TRUE); + if (curtab == tp && win_valid(wp)) + { + win_enter(wp, TRUE); +*** ../vim-7.3.550/src/version.c 2012-06-13 14:01:36.000000000 +0200 +--- src/version.c 2012-06-13 14:28:00.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 551, + /**/ + +-- +Give a man a computer program and you give him a headache, +but teach him to program computers and you give him the power +to create headaches for others for the rest of his life... + R. B. Forest + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.552 b/source/ap/vim/patches/7.3.552 new file mode 100644 index 00000000..e9a560ec --- /dev/null +++ b/source/ap/vim/patches/7.3.552 @@ -0,0 +1,582 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.552 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.552 +Problem: Formatting inside comments does not use the "2" flag in + 'formatoptions'. +Solution: Support the "2" flag. (Tor Perkins) +Files: src/vim.h, src/ops.c, src/edit.c, src/misc1.c, + src/testdir/test68.in, src/testdir/test68.ok + + +*** ../vim-7.3.551/src/vim.h 2012-06-06 18:03:01.000000000 +0200 +--- src/vim.h 2012-06-13 16:07:27.000000000 +0200 +*************** +*** 1072,1083 **** +--- 1072,1085 ---- + #define INSCHAR_DO_COM 2 /* format comments */ + #define INSCHAR_CTRLV 4 /* char typed just after CTRL-V */ + #define INSCHAR_NO_FEX 8 /* don't use 'formatexpr' */ ++ #define INSCHAR_COM_LIST 16 /* format comments with list/2nd line indent */ + + /* flags for open_line() */ + #define OPENLINE_DELSPACES 1 /* delete spaces after cursor */ + #define OPENLINE_DO_COM 2 /* format comments */ + #define OPENLINE_KEEPTRAIL 4 /* keep trailing spaces */ + #define OPENLINE_MARKFIX 8 /* fix mark positions */ ++ #define OPENLINE_COM_LIST 16 /* format comments with list/2nd line indent */ + + /* + * There are four history tables: +*** ../vim-7.3.551/src/ops.c 2012-06-13 14:01:36.000000000 +0200 +--- src/ops.c 2012-06-13 16:53:44.000000000 +0200 +*************** +*** 1727,1734 **** + * and the delete is within one line. */ + if (( + #ifdef FEAT_CLIPBOARD +! ((clip_unnamed & CLIP_UNNAMED) && oap->regname == '*') || +! ((clip_unnamed & CLIP_UNNAMED_PLUS) && oap->regname == '+') || + #endif + oap->regname == 0) && oap->motion_type != MLINE + && oap->line_count == 1) +--- 1727,1734 ---- + * and the delete is within one line. */ + if (( + #ifdef FEAT_CLIPBOARD +! ((clip_unnamed & CLIP_UNNAMED) && oap->regname == '*') || +! ((clip_unnamed & CLIP_UNNAMED_PLUS) && oap->regname == '+') || + #endif + oap->regname == 0) && oap->motion_type != MLINE + && oap->line_count == 1) +*************** +*** 4208,4217 **** + * "is_comment". + * line - line to be processed, + * process - if FALSE, will only check whether the line ends with an unclosed +! * comment, + * include_space - whether to also skip space following the comment leader, + * is_comment - will indicate whether the current line ends with an unclosed +! * comment. + */ + static char_u * + skip_comment(line, process, include_space, is_comment) +--- 4208,4217 ---- + * "is_comment". + * line - line to be processed, + * process - if FALSE, will only check whether the line ends with an unclosed +! * comment, + * include_space - whether to also skip space following the comment leader, + * is_comment - will indicate whether the current line ends with an unclosed +! * comment. + */ + static char_u * + skip_comment(line, process, include_space, is_comment) +*************** +*** 4723,4731 **** + char_u *leader_flags = NULL; /* flags for leader of current line */ + char_u *next_leader_flags; /* flags for leader of next line */ + int do_comments; /* format comments */ + #endif + int advance = TRUE; +! int second_indent = -1; + int do_second_indent; + int do_number_indent; + int do_trail_white; +--- 4723,4733 ---- + char_u *leader_flags = NULL; /* flags for leader of current line */ + char_u *next_leader_flags; /* flags for leader of next line */ + int do_comments; /* format comments */ ++ int do_comments_list = 0; /* format comments with 'n' or '2' */ + #endif + int advance = TRUE; +! int second_indent = -1; /* indent for second line (comment +! * aware) */ + int do_second_indent; + int do_number_indent; + int do_trail_white; +*************** +*** 4828,4845 **** + if (first_par_line + && (do_second_indent || do_number_indent) + && prev_is_end_par +! && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count + #ifdef FEAT_COMMENTS +! && leader_len == 0 +! && next_leader_len == 0 + #endif +! ) +! { +! if (do_second_indent +! && !lineempty(curwin->w_cursor.lnum + 1)) +! second_indent = get_indent_lnum(curwin->w_cursor.lnum + 1); + else if (do_number_indent) +! second_indent = get_number_indent(curwin->w_cursor.lnum); + } + + /* +--- 4830,4875 ---- + if (first_par_line + && (do_second_indent || do_number_indent) + && prev_is_end_par +! && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +! { +! if (do_second_indent && !lineempty(curwin->w_cursor.lnum + 1)) +! { + #ifdef FEAT_COMMENTS +! if (leader_len == 0 && next_leader_len == 0) +! { +! /* no comment found */ + #endif +! second_indent = +! get_indent_lnum(curwin->w_cursor.lnum + 1); +! #ifdef FEAT_COMMENTS +! } +! else +! { +! second_indent = next_leader_len; +! do_comments_list = 1; +! } +! #endif +! } + else if (do_number_indent) +! { +! #ifdef FEAT_COMMENTS +! if (leader_len == 0 && next_leader_len == 0) +! { +! /* no comment found */ +! #endif +! second_indent = +! get_number_indent(curwin->w_cursor.lnum); +! #ifdef FEAT_COMMENTS +! } +! else +! { +! /* get_number_indent() is now "comment aware"... */ +! second_indent = +! get_number_indent(curwin->w_cursor.lnum); +! do_comments_list = 1; +! } +! #endif +! } + } + + /* +*************** +*** 4878,4883 **** +--- 4908,4915 ---- + insertchar(NUL, INSCHAR_FORMAT + #ifdef FEAT_COMMENTS + + (do_comments ? INSCHAR_DO_COM : 0) ++ + (do_comments && do_comments_list ++ ? INSCHAR_COM_LIST : 0) + #endif + + (avoid_fex ? INSCHAR_NO_FEX : 0), second_indent); + State = old_State; +*** ../vim-7.3.551/src/edit.c 2012-06-06 16:12:54.000000000 +0200 +--- src/edit.c 2012-06-13 16:54:10.000000000 +0200 +*************** +*** 1463,1469 **** + * what check_abbr() expects. */ + (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) : + #endif +! c) && c != Ctrl_RSB)) + { + insert_special(c, FALSE, FALSE); + #ifdef FEAT_RIGHTLEFT +--- 1463,1469 ---- + * what check_abbr() expects. */ + (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) : + #endif +! c) && c != Ctrl_RSB)) + { + insert_special(c, FALSE, FALSE); + #ifdef FEAT_RIGHTLEFT +*************** +*** 5769,5774 **** +--- 5769,5784 ---- + # define WHITECHAR(cc) vim_iswhite(cc) + #endif + ++ /* ++ * "flags": INSCHAR_FORMAT - force formatting ++ * INSCHAR_CTRLV - char typed just after CTRL-V ++ * INSCHAR_NO_FEX - don't use 'formatexpr' ++ * ++ * NOTE: passes the flags value straight through to internal_format() which, ++ * beside INSCHAR_FORMAT (above), is also looking for these: ++ * INSCHAR_DO_COM - format comments ++ * INSCHAR_COM_LIST - format comments with num list or 2nd line indent ++ */ + void + insertchar(c, flags, second_indent) + int c; /* character to insert or NUL */ +*************** +*** 6011,6016 **** +--- 6021,6029 ---- + + /* + * Format text at the current insert position. ++ * ++ * If the INSCHAR_COM_LIST flag is present, then the value of second_indent ++ * will be the comment leader length sent to open_line(). + */ + static void + internal_format(textwidth, second_indent, flags, format_only, c) +*************** +*** 6289,6311 **** + + (fo_white_par ? OPENLINE_KEEPTRAIL : 0) + #ifdef FEAT_COMMENTS + + (do_comments ? OPENLINE_DO_COM : 0) + #endif +! , old_indent); +! old_indent = 0; + + replace_offset = 0; + if (first_line) + { +! if (second_indent < 0 && has_format_option(FO_Q_NUMBER)) +! second_indent = get_number_indent(curwin->w_cursor.lnum -1); +! if (second_indent >= 0) + { + #ifdef FEAT_VREPLACE +! if (State & VREPLACE_FLAG) +! change_indent(INDENT_SET, second_indent, FALSE, NUL, TRUE); +! else + #endif +! (void)set_indent(second_indent, SIN_CHANGED); + } + first_line = FALSE; + } +--- 6302,6337 ---- + + (fo_white_par ? OPENLINE_KEEPTRAIL : 0) + #ifdef FEAT_COMMENTS + + (do_comments ? OPENLINE_DO_COM : 0) ++ + ((flags & INSCHAR_COM_LIST) ? OPENLINE_COM_LIST : 0) + #endif +! , ((flags & INSCHAR_COM_LIST) ? second_indent : old_indent)); +! if (!(flags & INSCHAR_COM_LIST)) +! old_indent = 0; + + replace_offset = 0; + if (first_line) + { +! if (!(flags & INSCHAR_COM_LIST)) + { ++ /* ++ * This section is for numeric lists w/o comments. If comment ++ * indents are needed with numeric lists (formatoptions=nq), ++ * then the INSCHAR_COM_LIST flag will cause the corresponding ++ * OPENLINE_COM_LIST flag to be passed through to open_line() ++ * (as seen above)... ++ */ ++ if (second_indent < 0 && has_format_option(FO_Q_NUMBER)) ++ second_indent = get_number_indent(curwin->w_cursor.lnum -1); ++ if (second_indent >= 0) ++ { + #ifdef FEAT_VREPLACE +! if (State & VREPLACE_FLAG) +! change_indent(INDENT_SET, second_indent, +! FALSE, NUL, TRUE); +! else + #endif +! (void)set_indent(second_indent, SIN_CHANGED); +! } + } + first_line = FALSE; + } +*** ../vim-7.3.551/src/misc1.c 2012-06-13 13:40:45.000000000 +0200 +--- src/misc1.c 2012-06-13 16:54:59.000000000 +0200 +*************** +*** 423,449 **** + { + colnr_T col; + pos_T pos; +- regmmatch_T regmatch; + + if (lnum > curbuf->b_ml.ml_line_count) + return -1; + pos.lnum = 0; +! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); +! if (regmatch.regprog != NULL) + { +! regmatch.rmm_ic = FALSE; +! regmatch.rmm_maxcol = 0; +! if (vim_regexec_multi(®match, curwin, curbuf, lnum, +! (colnr_T)0, NULL)) + { +! pos.lnum = regmatch.endpos[0].lnum + lnum; +! pos.col = regmatch.endpos[0].col; + #ifdef FEAT_VIRTUALEDIT +! pos.coladd = 0; + #endif + } + vim_free(regmatch.regprog); + } + + if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL) + return -1; +--- 423,492 ---- + { + colnr_T col; + pos_T pos; + + if (lnum > curbuf->b_ml.ml_line_count) + return -1; + pos.lnum = 0; +! +! #ifdef FEAT_COMMENTS +! if (has_format_option(FO_Q_COMS) && has_format_option(FO_Q_NUMBER)) + { +! regmatch_T regmatch; +! int lead_len; /* length of comment leader */ +! +! lead_len = get_leader_len(ml_get(lnum), NULL, FALSE, TRUE); +! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); +! if (regmatch.regprog != NULL) + { +! regmatch.rm_ic = FALSE; +! +! /* vim_regexec() expects a pointer to a line. This lets us +! * start matching for the flp beyond any comment leader... */ +! if (vim_regexec(®match, ml_get(lnum) + lead_len, (colnr_T)0)) +! { +! pos.lnum = lnum; +! pos.col = *regmatch.endp - (ml_get(lnum) + lead_len); +! pos.col += lead_len; + #ifdef FEAT_VIRTUALEDIT +! pos.coladd = 0; + #endif ++ } + } + vim_free(regmatch.regprog); + } ++ else ++ { ++ /* ++ * What follows is the orig code that is not "comment aware"... ++ * ++ * I'm not sure if regmmatch_T (multi-match) is needed in this case. ++ * It may be true that this section would work properly using the ++ * regmatch_T code above, in which case, these two seperate sections ++ * should be consolidated w/ FEAT_COMMENTS making lead_len > 0... ++ */ ++ #endif ++ regmmatch_T regmatch; ++ ++ regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); ++ ++ if (regmatch.regprog != NULL) ++ { ++ regmatch.rmm_ic = FALSE; ++ regmatch.rmm_maxcol = 0; ++ if (vim_regexec_multi(®match, curwin, curbuf, ++ lnum, (colnr_T)0, NULL)) ++ { ++ pos.lnum = regmatch.endpos[0].lnum + lnum; ++ pos.col = regmatch.endpos[0].col; ++ #ifdef FEAT_VIRTUALEDIT ++ pos.coladd = 0; ++ #endif ++ } ++ vim_free(regmatch.regprog); ++ } ++ #ifdef FEAT_COMMENTS ++ } ++ #endif + + if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL) + return -1; +*************** +*** 502,515 **** + * OPENLINE_DO_COM format comments + * OPENLINE_KEEPTRAIL keep trailing spaces + * OPENLINE_MARKFIX adjust mark positions after the line break + * + * Return TRUE for success, FALSE for failure + */ + int +! open_line(dir, flags, old_indent) + int dir; /* FORWARD or BACKWARD */ + int flags; +! int old_indent; /* indent for after ^^D in Insert mode */ + { + char_u *saved_line; /* copy of the original line */ + char_u *next_line = NULL; /* copy of the next line */ +--- 545,562 ---- + * OPENLINE_DO_COM format comments + * OPENLINE_KEEPTRAIL keep trailing spaces + * OPENLINE_MARKFIX adjust mark positions after the line break ++ * OPENLINE_COM_LIST format comments with list or 2nd line indent ++ * ++ * "second_line_indent": indent for after ^^D in Insert mode or if flag ++ * OPENLINE_COM_LIST + * + * Return TRUE for success, FALSE for failure + */ + int +! open_line(dir, flags, second_line_indent) + int dir; /* FORWARD or BACKWARD */ + int flags; +! int second_line_indent; + { + char_u *saved_line; /* copy of the original line */ + char_u *next_line = NULL; /* copy of the next line */ +*************** +*** 650,657 **** + * count white space on current line + */ + newindent = get_indent_str(saved_line, (int)curbuf->b_p_ts); +! if (newindent == 0) +! newindent = old_indent; /* for ^^D command in insert mode */ + + #ifdef FEAT_SMARTINDENT + /* +--- 697,704 ---- + * count white space on current line + */ + newindent = get_indent_str(saved_line, (int)curbuf->b_p_ts); +! if (newindent == 0 && !(flags & OPENLINE_COM_LIST)) +! newindent = second_line_indent; /* for ^^D command in insert mode */ + + #ifdef FEAT_SMARTINDENT + /* +*************** +*** 1008,1015 **** + if (lead_len) + { + /* allocate buffer (may concatenate p_exta later) */ +! leader = alloc(lead_len + lead_repl_len + extra_space + +! extra_len + 1); + allocated = leader; /* remember to free it later */ + + if (leader == NULL) +--- 1055,1062 ---- + if (lead_len) + { + /* allocate buffer (may concatenate p_exta later) */ +! leader = alloc(lead_len + lead_repl_len + extra_space + extra_len +! + (second_line_indent > 0 ? second_line_indent : 0)); + allocated = leader; /* remember to free it later */ + + if (leader == NULL) +*************** +*** 1304,1309 **** +--- 1351,1370 ---- + /* concatenate leader and p_extra, if there is a leader */ + if (lead_len) + { ++ if (flags & OPENLINE_COM_LIST && second_line_indent > 0) ++ { ++ int i; ++ int padding = second_line_indent - (newindent + STRLEN(leader)); ++ ++ /* Here whitespace is inserted after the comment char. ++ * Below, set_indent(newindent, SIN_INSERT) will insert the ++ * whitespace needed before the comment char. */ ++ for (i = 0; i < padding; i++) ++ { ++ STRCAT(leader, " "); ++ newcol++; ++ } ++ } + STRCAT(leader, p_extra); + p_extra = leader; + did_ai = TRUE; /* So truncating blanks works with comments */ +*************** +*** 4966,4973 **** + char_u * + FullName_save(fname, force) + char_u *fname; +! int force; /* force expansion, even when it already looks +! like a full path name */ + { + char_u *buf; + char_u *new_fname = NULL; +--- 5027,5034 ---- + char_u * + FullName_save(fname, force) + char_u *fname; +! int force; /* force expansion, even when it already looks +! * like a full path name */ + { + char_u *buf; + char_u *new_fname = NULL; +*** ../vim-7.3.551/src/testdir/test68.in 2010-10-09 17:21:42.000000000 +0200 +--- src/testdir/test68.in 2012-06-13 15:49:38.000000000 +0200 +*************** +*** 51,56 **** +--- 51,77 ---- + } + + STARTTEST ++ /^{/+1 ++ :set tw=5 fo=qn comments=:# ++ gwap ++ ENDTEST ++ ++ { ++ # 1 a b ++ } ++ ++ STARTTEST ++ /^{/+1 ++ :set tw=5 fo=q2 comments=:# ++ gwap ++ ENDTEST ++ ++ { ++ # x ++ # a b ++ } ++ ++ STARTTEST + /^{/+2 + :set tw& fo=a + I^^ +*** ../vim-7.3.551/src/testdir/test68.ok 2010-10-09 17:21:42.000000000 +0200 +--- src/testdir/test68.ok 2012-06-13 15:49:38.000000000 +0200 +*************** +*** 34,38 **** +--- 34,50 ---- + } + + ++ { ++ # 1 a ++ # b ++ } ++ ++ ++ { ++ # x a ++ # b ++ } ++ ++ + { 1aa ^^2bb } + +*** ../vim-7.3.551/src/version.c 2012-06-13 14:28:16.000000000 +0200 +--- src/version.c 2012-06-13 16:36:14.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 552, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +31. You code your homework in HTML and give your instructor the URL. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.553 b/source/ap/vim/patches/7.3.553 new file mode 100644 index 00000000..82c757e1 --- /dev/null +++ b/source/ap/vim/patches/7.3.553 @@ -0,0 +1,85 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.553 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.553 +Problem: With double-width characters and 'listchars' containing "precedes" + the text is displayed one cell off. +Solution: Check for double-width character being overwritten by the + "precedes" character. (Yasuhiro Matsumoto) +Files: src/screen.c + + +*** ../vim-7.3.552/src/screen.c 2012-06-06 19:05:45.000000000 +0200 +--- src/screen.c 2012-06-13 17:55:10.000000000 +0200 +*************** +*** 89,94 **** +--- 89,97 ---- + + #include "vim.h" + ++ #define MB_FILLER_CHAR '<' /* character used when a double-width character ++ * doesn't fit. */ ++ + /* + * The attributes that are actually active for writing to the screen. + */ +*************** +*** 4016,4022 **** + if (n_skip > 0 && mb_l > 1 && n_extra == 0) + { + n_extra = 1; +! c_extra = '<'; + c = ' '; + if (area_attr == 0 && search_attr == 0) + { +--- 4019,4025 ---- + if (n_skip > 0 && mb_l > 1 && n_extra == 0) + { + n_extra = 1; +! c_extra = MB_FILLER_CHAR; + c = ' '; + if (area_attr == 0 && search_attr == 0) + { +*************** +*** 4576,4581 **** +--- 4579,4593 ---- + c = lcs_prec; + lcs_prec_todo = NUL; + #ifdef FEAT_MBYTE ++ if (has_mbyte && (*mb_char2cells)(mb_c) > 1) ++ { ++ /* Double-width character being overwritten by the "precedes" ++ * character, need to fill up half the character. */ ++ c_extra = MB_FILLER_CHAR; ++ n_extra = 1; ++ n_attr = 2; ++ extra_attr = hl_attr(HLF_AT); ++ } + mb_c = c; + if (enc_utf8 && (*mb_char2len)(c) > 1) + { +*** ../vim-7.3.552/src/version.c 2012-06-13 17:28:51.000000000 +0200 +--- src/version.c 2012-06-13 17:48:45.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 553, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +32. You don't know what sex three of your closest friends are, because they + have neutral nicknames and you never bothered to ask. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.554 b/source/ap/vim/patches/7.3.554 new file mode 100644 index 00000000..e8d4d37a --- /dev/null +++ b/source/ap/vim/patches/7.3.554 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.554 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.554 (after 7.3.551) +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/window.c + + +*** ../vim-7.3.553/src/window.c 2012-06-13 14:28:16.000000000 +0200 +--- src/window.c 2012-06-13 17:46:49.000000000 +0200 +*************** +*** 3723,3729 **** + enter_tabpage(tp, old_curbuf, trigger_autocmds) + tabpage_T *tp; + buf_T *old_curbuf UNUSED; +! int trigger_autocmds; + { + int old_off = tp->tp_firstwin->w_winrow; + win_T *next_prevwin = tp->tp_prevwin; +--- 3723,3729 ---- + enter_tabpage(tp, old_curbuf, trigger_autocmds) + tabpage_T *tp; + buf_T *old_curbuf UNUSED; +! int trigger_autocmds UNUSED; + { + int old_off = tp->tp_firstwin->w_winrow; + win_T *next_prevwin = tp->tp_prevwin; +*** ../vim-7.3.553/src/version.c 2012-06-13 18:06:32.000000000 +0200 +--- src/version.c 2012-06-13 18:15:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 554, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +33. You name your children Eudora, Mozilla and Dotcom. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.555 b/source/ap/vim/patches/7.3.555 new file mode 100644 index 00000000..acb68452 --- /dev/null +++ b/source/ap/vim/patches/7.3.555 @@ -0,0 +1,232 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.555 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.555 +Problem: Building on IBM z/OS fails. +Solution: Adjust configure. Use the QUOTESED value from config.mk instead of + the hard coded one in Makefile. (Stephen Bovy) +Files: src/configure.in, src/auto/configure, src/Makefile + + +*** ../vim-7.3.554/src/configure.in 2012-02-05 22:51:27.000000000 +0100 +--- src/configure.in 2012-06-13 18:52:11.000000000 +0200 +*************** +*** 329,343 **** + echo "" + echo "------------------------------------------" + echo " On z/OS Unix, the environment variable" +! echo " __CC_${ccn}MODE must be set to \"1\"!" + echo " Do:" + echo " export _CC_${ccn}MODE=1" + echo " and then call configure again." + echo "------------------------------------------" + exit 1 + fi +! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)"; +! LDFLAGS="$LDFLAGS -Wl,EDIT=NO" + AC_MSG_RESULT(yes) + ;; + *) zOSUnix="no"; +--- 329,346 ---- + echo "" + echo "------------------------------------------" + echo " On z/OS Unix, the environment variable" +! echo " _CC_${ccn}MODE must be set to \"1\"!" + echo " Do:" + echo " export _CC_${ccn}MODE=1" + echo " and then call configure again." + echo "------------------------------------------" + exit 1 + fi +! # Set CFLAGS for configure process. +! # This will be reset later for config.mk. +! # Use haltonmsg to force error for missing H files. +! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)"; +! LDFLAGS="$LDFLAGS -Wl,EDIT=NO" + AC_MSG_RESULT(yes) + ;; + *) zOSUnix="no"; +*************** +*** 2378,2387 **** + if test -z "$SKIP_MOTIF"; then + cppflags_save=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $X_CFLAGS" +! AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \ +! Xm/UnhighlightT.h Xm/Notebook.h) + +! if test $ac_cv_header_Xm_XpmP_h = yes; then + dnl Solaris uses XpmAttributes_21, very annoying. + AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h]) + AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;], +--- 2381,2395 ---- + if test -z "$SKIP_MOTIF"; then + cppflags_save=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $X_CFLAGS" +! if test "$zOSUnix" = "yes"; then +! xmheader="Xm/Xm.h" +! else +! xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h +! Xm/UnhighlightT.h Xm/Notebook.h" +! fi +! AC_CHECK_HEADERS($xmheader) + +! if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then + dnl Solaris uses XpmAttributes_21, very annoying. + AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h]) + AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;], +*************** +*** 3642,3647 **** +--- 3650,3660 ---- + fi + AC_SUBST(LINK_AS_NEEDED) + ++ # IBM z/OS reset CFLAGS for config.mk ++ if test "$zOSUnix" = "yes"; then ++ CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll" ++ fi ++ + dnl write output files + AC_OUTPUT(auto/config.mk:config.mk.in) + +*** ../vim-7.3.554/src/auto/configure 2012-02-05 22:51:27.000000000 +0100 +--- src/auto/configure 2012-06-13 18:53:04.000000000 +0200 +*************** +*** 4426,4440 **** + echo "" + echo "------------------------------------------" + echo " On z/OS Unix, the environment variable" +! echo " __CC_${ccn}MODE must be set to \"1\"!" + echo " Do:" + echo " export _CC_${ccn}MODE=1" + echo " and then call configure again." + echo "------------------------------------------" + exit 1 + fi +! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)"; +! LDFLAGS="$LDFLAGS -Wl,EDIT=NO" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + ;; +--- 4426,4443 ---- + echo "" + echo "------------------------------------------" + echo " On z/OS Unix, the environment variable" +! echo " _CC_${ccn}MODE must be set to \"1\"!" + echo " Do:" + echo " export _CC_${ccn}MODE=1" + echo " and then call configure again." + echo "------------------------------------------" + exit 1 + fi +! # Set CFLAGS for configure process. +! # This will be reset later for config.mk. +! # Use haltonmsg to force error for missing H files. +! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)"; +! LDFLAGS="$LDFLAGS -Wl,EDIT=NO" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + ;; +*************** +*** 8697,8704 **** + if test -z "$SKIP_MOTIF"; then + cppflags_save=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $X_CFLAGS" +! for ac_header in Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \ +! Xm/UnhighlightT.h Xm/Notebook.h + do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +--- 8700,8712 ---- + if test -z "$SKIP_MOTIF"; then + cppflags_save=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $X_CFLAGS" +! if test "$zOSUnix" = "yes"; then +! xmheader="Xm/Xm.h" +! else +! xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h +! Xm/UnhighlightT.h Xm/Notebook.h" +! fi +! for ac_header in $xmheader + do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +*************** +*** 8713,8719 **** + done + + +! if test $ac_cv_header_Xm_XpmP_h = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmAttributes_21 in Xm/XpmP.h" >&5 + $as_echo_n "checking for XpmAttributes_21 in Xm/XpmP.h... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 8721,8727 ---- + done + + +! if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmAttributes_21 in Xm/XpmP.h" >&5 + $as_echo_n "checking for XpmAttributes_21 in Xm/XpmP.h... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 12590,12595 **** +--- 12598,12608 ---- + fi + + ++ # IBM z/OS reset CFLAGS for config.mk ++ if test "$zOSUnix" = "yes"; then ++ CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll" ++ fi ++ + ac_config_files="$ac_config_files auto/config.mk:config.mk.in" + + cat >confcache <<\_ACEOF +*** ../vim-7.3.554/src/Makefile 2012-03-28 17:17:45.000000000 +0200 +--- src/Makefile 2012-06-13 18:48:13.000000000 +0200 +*************** +*** 875,880 **** +--- 875,884 ---- + #CFLAGS = -O -Qtarget=m88110compat + #EXTRA_LIBS = -lgen + ++ # The value of QUOTESED comes from auto/config.mk. ++ # Uncomment the next line to use the default value. ++ # QUOTESED = sed -e 's/[\\"]/\\&/g' -e 's/\\"/"/' -e 's/\\";$$/";/' ++ + ##################### end of system specific lines ################### }}} + + ### Names of the programs and targets {{{1 +*************** +*** 2411,2417 **** + auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in + CC="$(CC) $(OSDEF_CFLAGS)" srcdir=$(srcdir) sh $(srcdir)/osdef.sh + +- QUOTESED = sed -e 's/[\\"]/\\&/g' -e 's/\\"/"/' -e 's/\\";$$/";/' + auto/pathdef.c: Makefile auto/config.mk + -@echo creating $@ + -@echo '/* pathdef.c */' > $@ +--- 2415,2420 ---- +*** ../vim-7.3.554/src/version.c 2012-06-13 18:15:13.000000000 +0200 +--- src/version.c 2012-06-13 19:13:54.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 555, + /**/ + +-- +My sister Cecilia opened a computer store in Hawaii. +She sells C shells by the seashore. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.556 b/source/ap/vim/patches/7.3.556 new file mode 100644 index 00000000..068b8d1f --- /dev/null +++ b/source/ap/vim/patches/7.3.556 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.556 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.556 +Problem: Compiler warnings on 64 bit Windows. +Solution: Add type casts. (Mike Williams) +Files: src/misc1.c + + +*** ../vim-7.3.555/src/misc1.c 2012-06-13 17:28:51.000000000 +0200 +--- src/misc1.c 2012-06-14 20:55:47.000000000 +0200 +*************** +*** 445,452 **** + if (vim_regexec(®match, ml_get(lnum) + lead_len, (colnr_T)0)) + { + pos.lnum = lnum; +! pos.col = *regmatch.endp - (ml_get(lnum) + lead_len); +! pos.col += lead_len; + #ifdef FEAT_VIRTUALEDIT + pos.coladd = 0; + #endif +--- 445,451 ---- + if (vim_regexec(®match, ml_get(lnum) + lead_len, (colnr_T)0)) + { + pos.lnum = lnum; +! pos.col = (colnr_T)(*regmatch.endp - ml_get(lnum)); + #ifdef FEAT_VIRTUALEDIT + pos.coladd = 0; + #endif +*************** +*** 1354,1360 **** + if (flags & OPENLINE_COM_LIST && second_line_indent > 0) + { + int i; +! int padding = second_line_indent - (newindent + STRLEN(leader)); + + /* Here whitespace is inserted after the comment char. + * Below, set_indent(newindent, SIN_INSERT) will insert the +--- 1353,1360 ---- + if (flags & OPENLINE_COM_LIST && second_line_indent > 0) + { + int i; +! int padding = second_line_indent +! - (newindent + (int)STRLEN(leader)); + + /* Here whitespace is inserted after the comment char. + * Below, set_indent(newindent, SIN_INSERT) will insert the +*** ../vim-7.3.555/src/version.c 2012-06-13 19:19:36.000000000 +0200 +--- src/version.c 2012-06-14 20:54:59.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 556, + /**/ + +-- +He who laughs last, thinks slowest. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.557 b/source/ap/vim/patches/7.3.557 new file mode 100644 index 00000000..663c0720 --- /dev/null +++ b/source/ap/vim/patches/7.3.557 @@ -0,0 +1,99 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.557 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.557 +Problem: Crash when an autocommand wipes out a buffer when it is hidden. +Solution: Restore the current window when needed. (Christian Brabandt) +Files: src/buffer.c + + +*** ../vim-7.3.556/src/buffer.c 2012-06-13 14:28:16.000000000 +0200 +--- src/buffer.c 2012-06-20 11:49:54.000000000 +0200 +*************** +*** 1363,1368 **** +--- 1363,1369 ---- + int action; + { + buf_T *prevbuf; ++ win_T *prevwin; + int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL + || action == DOBUF_WIPE); + +*************** +*** 1402,1423 **** + if (buf_valid(prevbuf)) + #endif + { + if (prevbuf == curbuf) + u_sync(FALSE); + close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, + unload ? action : (action == DOBUF_GOTO + && !P_HID(prevbuf) + && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); + } + } + #ifdef FEAT_AUTOCMD + /* An autocommand may have deleted "buf", already entered it (e.g., when +! * it did ":bunload") or aborted the script processing! */ +! # ifdef FEAT_EVAL +! if (buf_valid(buf) && buf != curbuf && !aborting()) +! # else +! if (buf_valid(buf) && buf != curbuf) +! # endif + #endif + enter_buffer(buf); + } +--- 1403,1432 ---- + if (buf_valid(prevbuf)) + #endif + { ++ prevwin = curwin; + if (prevbuf == curbuf) + u_sync(FALSE); + close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, + unload ? action : (action == DOBUF_GOTO + && !P_HID(prevbuf) + && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); ++ if (curwin != prevwin && win_valid(prevwin)) ++ /* autocommands changed curwin, Grr! */ ++ curwin = prevwin; + } + } + #ifdef FEAT_AUTOCMD + /* An autocommand may have deleted "buf", already entered it (e.g., when +! * it did ":bunload") or aborted the script processing! +! * If curwin->w_buffer is null, enter_buffer() will make it valid again */ +! if ((buf_valid(buf) && buf != curbuf +! #ifdef FEAT_EVAL +! && !aborting() +! #endif +! #ifdef FEAT_WINDOWS +! ) || curwin->w_buffer == NULL +! #endif +! ) + #endif + enter_buffer(buf); + } +*** ../vim-7.3.556/src/version.c 2012-06-14 20:59:20.000000000 +0200 +--- src/version.c 2012-06-20 11:53:56.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 557, + /**/ + +-- +Don't read everything you believe. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.558 b/source/ap/vim/patches/7.3.558 new file mode 100644 index 00000000..015bc37d --- /dev/null +++ b/source/ap/vim/patches/7.3.558 @@ -0,0 +1,90 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.558 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.558 +Problem: Memory access error. (Gary Johnson) +Solution: Allocate one more byte. (Dominique Pelle) +Files: src/misc1.c + + +*** ../vim-7.3.557/src/misc1.c 2012-06-14 20:59:20.000000000 +0200 +--- src/misc1.c 2012-06-20 12:34:57.000000000 +0200 +*************** +*** 460,466 **** + * + * I'm not sure if regmmatch_T (multi-match) is needed in this case. + * It may be true that this section would work properly using the +! * regmatch_T code above, in which case, these two seperate sections + * should be consolidated w/ FEAT_COMMENTS making lead_len > 0... + */ + #endif +--- 460,466 ---- + * + * I'm not sure if regmmatch_T (multi-match) is needed in this case. + * It may be true that this section would work properly using the +! * regmatch_T code above, in which case, these two separate sections + * should be consolidated w/ FEAT_COMMENTS making lead_len > 0... + */ + #endif +*************** +*** 1053,1061 **** + } + if (lead_len) + { +! /* allocate buffer (may concatenate p_exta later) */ + leader = alloc(lead_len + lead_repl_len + extra_space + extra_len +! + (second_line_indent > 0 ? second_line_indent : 0)); + allocated = leader; /* remember to free it later */ + + if (leader == NULL) +--- 1053,1061 ---- + } + if (lead_len) + { +! /* allocate buffer (may concatenate p_extra later) */ + leader = alloc(lead_len + lead_repl_len + extra_space + extra_len +! + (second_line_indent > 0 ? second_line_indent : 0) + 1); + allocated = leader; /* remember to free it later */ + + if (leader == NULL) +*************** +*** 3342,3348 **** + buf = alloc(buflen); + else if (maxlen < 10) + { +! /* Need some more space. This migth happen when receiving a long + * escape sequence. */ + buflen += 100; + buf = vim_realloc(buf, buflen); +--- 3342,3348 ---- + buf = alloc(buflen); + else if (maxlen < 10) + { +! /* Need some more space. This might happen when receiving a long + * escape sequence. */ + buflen += 100; + buf = vim_realloc(buf, buflen); +*** ../vim-7.3.557/src/version.c 2012-06-20 11:54:55.000000000 +0200 +--- src/version.c 2012-06-20 12:36:29.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 558, + /**/ + +-- +George: "I just got a new set of golf clubs for my wife!" + John: "Great trade!" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.559 b/source/ap/vim/patches/7.3.559 new file mode 100644 index 00000000..df767372 --- /dev/null +++ b/source/ap/vim/patches/7.3.559 @@ -0,0 +1,131 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.559 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.559 +Problem: home_replace() does not work with 8.3 filename. +Solution: Make ":p" expand 8.3 name to full path. (Yasuhiro Matsumoto) +Files: src/eval.c, src/misc1.c + + +*** ../vim-7.3.558/src/eval.c 2012-06-13 14:28:16.000000000 +0200 +--- src/eval.c 2012-06-20 13:52:47.000000000 +0200 +*************** +*** 23554,23559 **** +--- 23554,23580 ---- + return -1; + } + ++ #ifdef WIN3264 ++ # if _WIN32_WINNT >= 0x0500 ++ if (vim_strchr(*fnamep, '~') != NULL) ++ { ++ /* Expand 8.3 filename to full path. Needed to make sure the same ++ * file does not have two different names. ++ * Note: problem does not occur if _WIN32_WINNT < 0x0500. */ ++ p = alloc(_MAX_PATH + 1); ++ if (p != NULL) ++ { ++ if (GetLongPathName(*fnamep, p, MAXPATHL)) ++ { ++ vim_free(*bufp); ++ *bufp = *fnamep = p; ++ } ++ else ++ vim_free(p); ++ } ++ } ++ # endif ++ #endif + /* Append a path separator to a directory. */ + if (mch_isdir(*fnamep)) + { +*** ../vim-7.3.558/src/misc1.c 2012-06-20 12:40:01.000000000 +0200 +--- src/misc1.c 2012-06-20 13:57:22.000000000 +0200 +*************** +*** 4499,4505 **** + { + size_t dirlen = 0, envlen = 0; + size_t len; +! char_u *homedir_env; + char_u *p; + + if (src == NULL) +--- 4499,4505 ---- + { + size_t dirlen = 0, envlen = 0; + size_t len; +! char_u *homedir_env, *homedir_env_orig; + char_u *p; + + if (src == NULL) +*************** +*** 4525,4533 **** + dirlen = STRLEN(homedir); + + #ifdef VMS +! homedir_env = mch_getenv((char_u *)"SYS$LOGIN"); + #else +! homedir_env = mch_getenv((char_u *)"HOME"); + #endif + + if (homedir_env != NULL && *homedir_env == NUL) +--- 4525,4548 ---- + dirlen = STRLEN(homedir); + + #ifdef VMS +! homedir_env_orig = homedir_env = mch_getenv((char_u *)"SYS$LOGIN"); + #else +! homedir_env_orig = homedir_env = mch_getenv((char_u *)"HOME"); +! #endif +! #if defined(FEAT_MODIFY_FNAME) || defined(WIN3264) +! if (vim_strchr(homedir_env, '~') != NULL) +! { +! int usedlen = 0; +! int flen; +! char_u *fbuf = NULL; +! +! flen = (int)STRLEN(homedir_env); +! (void)modify_fname(":p", &usedlen, &homedir_env, &fbuf, &flen); +! flen = (int)STRLEN(homedir_env); +! if (flen > 0 && vim_ispathsep(homedir_env[flen - 1])) +! /* Remove the trailing / that is added to a directory. */ +! homedir_env[flen - 1] = NUL; +! } + #endif + + if (homedir_env != NULL && *homedir_env == NUL) +*************** +*** 4585,4590 **** +--- 4600,4608 ---- + /* if (dstlen == 0) out of space, what to do??? */ + + *dst = NUL; ++ ++ if (homedir_env != homedir_env_orig) ++ vim_free(homedir_env); + } + + /* +*** ../vim-7.3.558/src/version.c 2012-06-20 12:40:01.000000000 +0200 +--- src/version.c 2012-06-20 14:02:11.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 559, + /**/ + +-- +The future isn't what it used to be. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.560 b/source/ap/vim/patches/7.3.560 new file mode 100644 index 00000000..7f464111 --- /dev/null +++ b/source/ap/vim/patches/7.3.560 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.560 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.560 +Problem: Get an error for a locked argument in extend(). +Solution: Initialize the lock flag for a dictionary. (Yukihiro Nakadaira) +Files: src/eval.c + + +*** ../vim-7.3.559/src/eval.c 2012-06-20 14:02:23.000000000 +0200 +--- src/eval.c 2012-06-20 14:08:34.000000000 +0200 +*************** +*** 19981,19986 **** +--- 19981,19987 ---- + dictitem_T *dict_var; + { + hash_init(&dict->dv_hashtab); ++ dict->dv_lock = 0; + dict->dv_refcount = DO_NOT_FREE_CNT; + dict->dv_copyID = 0; + dict_var->di_tv.vval.v_dict = dict; +*** ../vim-7.3.559/src/version.c 2012-06-20 14:02:23.000000000 +0200 +--- src/version.c 2012-06-20 14:09:34.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 560, + /**/ + +-- +"Oh, no! NOT the Spanish Inquisition!" +"NOBODY expects the Spanish Inquisition!!!" + -- Monty Python sketch -- +"Oh, no! NOT another option!" +"EVERYBODY expects another option!!!" + -- Discussion in vim-dev mailing list -- + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.561 b/source/ap/vim/patches/7.3.561 new file mode 100644 index 00000000..d51030c4 --- /dev/null +++ b/source/ap/vim/patches/7.3.561 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.561 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.561 +Problem: Using refresh: always in a complete function breaks the "." + command. (Val Markovic) +Solution: Add match leader to the redo buffer. (Yasuhiro Matsumoto) +Files: src/edit.c + + +*** ../vim-7.3.560/src/edit.c 2012-06-13 17:28:51.000000000 +0200 +--- src/edit.c 2012-06-20 14:22:23.000000000 +0200 +*************** +*** 3467,3476 **** +--- 3467,3480 ---- + (*mb_char2bytes)(c, buf); + buf[cc] = NUL; + ins_char_bytes(buf, cc); ++ AppendToRedobuff(buf); + } + else + #endif ++ { + ins_char(c); ++ AppendCharToRedobuff(c); ++ } + + /* If we didn't complete finding matches we must search again. */ + if (ins_compl_need_restart()) +*** ../vim-7.3.560/src/version.c 2012-06-20 14:13:02.000000000 +0200 +--- src/version.c 2012-06-20 14:20:13.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 561, + /**/ + +-- +Microsoft is to software what McDonalds is to gourmet cooking + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.562 b/source/ap/vim/patches/7.3.562 new file mode 100644 index 00000000..626de495 --- /dev/null +++ b/source/ap/vim/patches/7.3.562 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.562 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.562 +Problem: ":profdel" should not work when the +profile feature is disabled. +Solution: Call ex_ni(). (Yasuhiro Matsumoto) +Files: src/ex_cmds2.c + + +*** ../vim-7.3.561/src/ex_cmds2.c 2012-06-13 14:28:16.000000000 +0200 +--- src/ex_cmds2.c 2012-06-20 15:43:44.000000000 +0200 +*************** +*** 596,605 **** + garray_T *gap; + + gap = &dbg_breakp; +- #ifdef FEAT_PROFILE + if (eap->cmdidx == CMD_profdel) + gap = &prof_ga; + #endif + + if (vim_isdigit(*eap->arg)) + { +--- 596,610 ---- + garray_T *gap; + + gap = &dbg_breakp; + if (eap->cmdidx == CMD_profdel) ++ { ++ #ifdef FEAT_PROFILE + gap = &prof_ga; ++ #else ++ ex_ni(eap); ++ return; + #endif ++ } + + if (vim_isdigit(*eap->arg)) + { +*** ../vim-7.3.561/src/version.c 2012-06-20 14:26:30.000000000 +0200 +--- src/version.c 2012-06-20 15:44:00.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 562, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +42. Your virtual girlfriend finds a new net sweetheart with a larger bandwidth. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.563 b/source/ap/vim/patches/7.3.563 new file mode 100644 index 00000000..c2ebf410 --- /dev/null +++ b/source/ap/vim/patches/7.3.563 @@ -0,0 +1,97 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.563 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.563 (after 7.3.557) +Problem: Can't build with tiny features. +Solution: Add #ifdef. +Files: src/buffer.c + + +*** ../vim-7.3.562/src/buffer.c 2012-06-20 11:54:55.000000000 +0200 +--- src/buffer.c 2012-06-20 17:40:59.000000000 +0200 +*************** +*** 1363,1369 **** +--- 1363,1371 ---- + int action; + { + buf_T *prevbuf; ++ #ifdef FEAT_WINDOWS + win_T *prevwin; ++ #endif + int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL + || action == DOBUF_WIPE); + +*************** +*** 1403,1418 **** +--- 1405,1424 ---- + if (buf_valid(prevbuf)) + #endif + { ++ #ifdef FEAT_WINDOWS + prevwin = curwin; ++ #endif + if (prevbuf == curbuf) + u_sync(FALSE); + close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, + unload ? action : (action == DOBUF_GOTO + && !P_HID(prevbuf) + && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); ++ #ifdef FEAT_WINDOWS + if (curwin != prevwin && win_valid(prevwin)) + /* autocommands changed curwin, Grr! */ + curwin = prevwin; ++ #endif + } + } + #ifdef FEAT_AUTOCMD +*************** +*** 1420,1431 **** + * it did ":bunload") or aborted the script processing! + * If curwin->w_buffer is null, enter_buffer() will make it valid again */ + if ((buf_valid(buf) && buf != curbuf +! #ifdef FEAT_EVAL + && !aborting() +! #endif +! #ifdef FEAT_WINDOWS + ) || curwin->w_buffer == NULL +! #endif + ) + #endif + enter_buffer(buf); +--- 1426,1437 ---- + * it did ":bunload") or aborted the script processing! + * If curwin->w_buffer is null, enter_buffer() will make it valid again */ + if ((buf_valid(buf) && buf != curbuf +! # ifdef FEAT_EVAL + && !aborting() +! # endif +! # ifdef FEAT_WINDOWS + ) || curwin->w_buffer == NULL +! # endif + ) + #endif + enter_buffer(buf); +*** ../vim-7.3.562/src/version.c 2012-06-20 15:48:53.000000000 +0200 +--- src/version.c 2012-06-20 17:54:01.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 563, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +45. You buy a Captain Kirk chair with a built-in keyboard and mouse. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.564 b/source/ap/vim/patches/7.3.564 new file mode 100644 index 00000000..e806b8e4 --- /dev/null +++ b/source/ap/vim/patches/7.3.564 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.564 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.564 (after 7.3.559) +Problem: Warning for pointer conversion. +Solution: Add type cast. +Files: src/misc1.c + + +*** ../vim-7.3.563/src/misc1.c 2012-06-20 14:02:23.000000000 +0200 +--- src/misc1.c 2012-06-20 17:41:22.000000000 +0200 +*************** +*** 4537,4543 **** + char_u *fbuf = NULL; + + flen = (int)STRLEN(homedir_env); +! (void)modify_fname(":p", &usedlen, &homedir_env, &fbuf, &flen); + flen = (int)STRLEN(homedir_env); + if (flen > 0 && vim_ispathsep(homedir_env[flen - 1])) + /* Remove the trailing / that is added to a directory. */ +--- 4537,4544 ---- + char_u *fbuf = NULL; + + flen = (int)STRLEN(homedir_env); +! (void)modify_fname((char_u *)":p", &usedlen, +! &homedir_env, &fbuf, &flen); + flen = (int)STRLEN(homedir_env); + if (flen > 0 && vim_ispathsep(homedir_env[flen - 1])) + /* Remove the trailing / that is added to a directory. */ +*** ../vim-7.3.563/src/version.c 2012-06-20 17:54:34.000000000 +0200 +--- src/version.c 2012-06-20 17:55:26.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 564, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +46. Your wife makes a new rule: "The computer cannot come to bed." + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.565 b/source/ap/vim/patches/7.3.565 new file mode 100644 index 00000000..171520b3 --- /dev/null +++ b/source/ap/vim/patches/7.3.565 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.566 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.566 +Problem: Can't generate proto file for Python 3. +Solution: Add PYTHON3_CFLAGS to LINT_CFLAGS. +Files: src/Makefile + + +*** ../vim-7.3.564/src/Makefile 2012-06-13 19:19:36.000000000 +0200 +--- src/Makefile 2012-06-20 18:36:14.000000000 +0200 +*************** +*** 1339,1345 **** + # with "-E". + OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS) + +! LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca + + LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)=" + +--- 1339,1345 ---- + # with "-E". + OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS) + +! LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(PYTHON3_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca + + LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)=" + +*** ../vim-7.3.564/src/version.c 2012-06-20 17:56:06.000000000 +0200 +--- src/version.c 2012-06-20 18:39:04.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 565, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +47. You are so familiar with the WWW that you find the search engines useless. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.566 b/source/ap/vim/patches/7.3.566 new file mode 100644 index 00000000..a0600e81 --- /dev/null +++ b/source/ap/vim/patches/7.3.566 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.566 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.566 (after 7.3.561) +Problem: Redo after completion does not work correctly when refresh: always + is not used. (Raymond Ko) +Solution: Check the compl_opt_refresh_always flag. (Christian Brabandt) +Files: src/edit.c + + +*** ../vim-7.3.565/src/edit.c 2012-06-20 14:26:30.000000000 +0200 +--- src/edit.c 2012-06-20 22:52:03.000000000 +0200 +*************** +*** 3467,3479 **** + (*mb_char2bytes)(c, buf); + buf[cc] = NUL; + ins_char_bytes(buf, cc); +! AppendToRedobuff(buf); + } + else + #endif + { + ins_char(c); +! AppendCharToRedobuff(c); + } + + /* If we didn't complete finding matches we must search again. */ +--- 3467,3481 ---- + (*mb_char2bytes)(c, buf); + buf[cc] = NUL; + ins_char_bytes(buf, cc); +! if (compl_opt_refresh_always) +! AppendToRedobuff(buf); + } + else + #endif + { + ins_char(c); +! if (compl_opt_refresh_always) +! AppendCharToRedobuff(c); + } + + /* If we didn't complete finding matches we must search again. */ +*************** +*** 3481,3487 **** + ins_compl_restart(); + + /* When 'always' is set, don't reset compl_leader. While completing, +! * cursor don't point original position, changing compl_leader would + * break redo. */ + if (!compl_opt_refresh_always) + { +--- 3483,3489 ---- + ins_compl_restart(); + + /* When 'always' is set, don't reset compl_leader. While completing, +! * cursor doesn't point original position, changing compl_leader would + * break redo. */ + if (!compl_opt_refresh_always) + { +*** ../vim-7.3.565/src/version.c 2012-06-20 18:39:12.000000000 +0200 +--- src/version.c 2012-06-20 22:54:27.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 566, + /**/ + +-- +CVS sux, men don't like commitment + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.567 b/source/ap/vim/patches/7.3.567 new file mode 100644 index 00000000..62399f18 --- /dev/null +++ b/source/ap/vim/patches/7.3.567 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.567 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.567 +Problem: Missing copyright notice. +Solution: Add Vim copyright notice. (Taro Muraoka) +Files: src/dehqx.py + + +*** ../vim-7.3.566/src/dehqx.py 2010-08-15 21:57:32.000000000 +0200 +--- src/dehqx.py 2012-06-29 11:27:41.000000000 +0200 +*************** +*** 1,7 **** + # Python script to get both the data and resource fork from a BinHex encoded + # file. +! # Author: Taro Muraoka +! # Last Change: 2003 Oct 25 + + import sys + import binhex +--- 1,10 ---- + # Python script to get both the data and resource fork from a BinHex encoded + # file. +! # Author: MURAOKA Taro <koron.kaoriya@gmail.com> +! # Last Change: 2012 Jun 29 +! # +! # Copyright (C) 2003,12 MURAOKA Taro <koron.kaoriya@gmail.com> +! # THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. + + import sys + import binhex +*** ../vim-7.3.566/src/version.c 2012-06-20 22:55:56.000000000 +0200 +--- src/version.c 2012-06-29 11:45:36.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 567, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +66. You create a homepage with the impression to cure the afflicted...but + your hidden agenda is to receive more e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.568 b/source/ap/vim/patches/7.3.568 new file mode 100644 index 00000000..ef4fcfe5 --- /dev/null +++ b/source/ap/vim/patches/7.3.568 @@ -0,0 +1,138 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.568 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.568 +Problem: Bad indents for #ifdefs. +Solution: Add and remove spaces. (Elias Diem) +Files: src/globals.h + + +*** ../vim-7.3.567/src/globals.h 2012-02-11 23:45:30.000000000 +0100 +--- src/globals.h 2012-06-29 12:32:14.000000000 +0200 +*************** +*** 513,520 **** + # define ONE_CLIPBOARD + # endif + +! #define CLIP_UNNAMED 1 +! #define CLIP_UNNAMED_PLUS 2 + EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */ + + EXTERN int clip_autoselect INIT(= FALSE); +--- 513,520 ---- + # define ONE_CLIPBOARD + # endif + +! # define CLIP_UNNAMED 1 +! # define CLIP_UNNAMED_PLUS 2 + EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */ + + EXTERN int clip_autoselect INIT(= FALSE); +*************** +*** 737,745 **** + #endif + + EXTERN pos_T saved_cursor /* w_cursor before formatting text. */ +! # ifdef DO_INIT + = INIT_POS_T(0, 0, 0) +! # endif + ; + + /* +--- 737,745 ---- + #endif + + EXTERN pos_T saved_cursor /* w_cursor before formatting text. */ +! #ifdef DO_INIT + = INIT_POS_T(0, 0, 0) +! #endif + ; + + /* +*************** +*** 807,815 **** + # endif + EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */ + +! #if defined(WIN3264) && defined(FEAT_MBYTE) + EXTERN int wide_WindowProc INIT(= FALSE); /* use wide WindowProc() */ +! #endif + + /* + * To speed up BYTELEN() we fill a table with the byte lengths whenever +--- 807,815 ---- + # endif + EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */ + +! # if defined(WIN3264) && defined(FEAT_MBYTE) + EXTERN int wide_WindowProc INIT(= FALSE); /* use wide WindowProc() */ +! # endif + + /* + * To speed up BYTELEN() we fill a table with the byte lengths whenever +*************** +*** 1099,1106 **** + EXTERN int save_p_ls INIT(= -1); /* Save 'laststatus' setting */ + EXTERN int save_p_wmh INIT(= -1); /* Save 'winminheight' setting */ + EXTERN int wild_menu_showing INIT(= 0); +! #define WM_SHOWN 1 /* wildmenu showing */ +! #define WM_SCROLLED 2 /* wildmenu showing with scroll */ + #endif + + #ifdef MSWIN +--- 1099,1106 ---- + EXTERN int save_p_ls INIT(= -1); /* Save 'laststatus' setting */ + EXTERN int save_p_wmh INIT(= -1); /* Save 'winminheight' setting */ + EXTERN int wild_menu_showing INIT(= 0); +! # define WM_SHOWN 1 /* wildmenu showing */ +! # define WM_SCROLLED 2 /* wildmenu showing with scroll */ + #endif + + #ifdef MSWIN +*************** +*** 1310,1318 **** + EXTERN Atom commProperty INIT(= None); + EXTERN char_u *serverDelayedStartName INIT(= NULL); + # else +! # ifdef PROTO + typedef int HWND; +! # endif + EXTERN HWND clientWindow INIT(= 0); + # endif + #endif +--- 1310,1318 ---- + EXTERN Atom commProperty INIT(= None); + EXTERN char_u *serverDelayedStartName INIT(= NULL); + # else +! # ifdef PROTO + typedef int HWND; +! # endif + EXTERN HWND clientWindow INIT(= 0); + # endif + #endif +*** ../vim-7.3.567/src/version.c 2012-06-29 11:46:28.000000000 +0200 +--- src/version.c 2012-06-29 12:34:21.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 568, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +67. Your hard drive crashes. You haven't logged in for two hours. You start + to twitch. You pick up the phone and manually dial your ISP's access + number. You try to hum to communicate with the modem. You succeed. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.569 b/source/ap/vim/patches/7.3.569 new file mode 100644 index 00000000..435733fe --- /dev/null +++ b/source/ap/vim/patches/7.3.569 @@ -0,0 +1,4762 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.569 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.569 +Problem: Evaluating Vim expression in Python is insufficient. +Solution: Add vim.bindeval(). Also add pyeval() and py3eval(). (ZyX) +Files: runtime/doc/eval.txt, runtime/doc/if_pyth.txt, src/eval.c, + src/if_lua.c, src/if_py_both.h, src/if_python.c, src/if_python3.c, + src/proto/eval.pro, src/proto/if_python.pro, + src/proto/if_python3.pro, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Makefile, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + + +*** ../vim-7.3.568/runtime/doc/eval.txt 2012-03-07 19:16:49.000000000 +0100 +--- runtime/doc/eval.txt 2012-06-20 18:01:02.000000000 +0200 +*************** +*** 1836,1844 **** + localtime() Number current time + log( {expr}) Float natural logarithm (base e) of {expr} + log10( {expr}) Float logarithm of Float {expr} to base 10 + map( {expr}, {string}) List/Dict change each item in {expr} to {expr} + maparg( {name}[, {mode} [, {abbr} [, {dict}]]]) +! String rhs of mapping {name} in mode {mode} + mapcheck( {name}[, {mode} [, {abbr}]]) + String check for mappings matching {name} + match( {expr}, {pat}[, {start}[, {count}]]) +--- 1847,1857 ---- + localtime() Number current time + log( {expr}) Float natural logarithm (base e) of {expr} + log10( {expr}) Float logarithm of Float {expr} to base 10 ++ luaeval( {expr}[, {expr}]) any evaluate |Lua| expression + map( {expr}, {string}) List/Dict change each item in {expr} to {expr} + maparg( {name}[, {mode} [, {abbr} [, {dict}]]]) +! String or Dict +! rhs of mapping {name} in mode {mode} + mapcheck( {name}[, {mode} [, {abbr}]]) + String check for mappings matching {name} + match( {expr}, {pat}[, {start}[, {count}]]) +*************** +*** 1867,1872 **** +--- 1880,1887 ---- + prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum} + printf( {fmt}, {expr1}...) String format text + pumvisible() Number whether popup menu is visible ++ pyeval( {expr}) any evaluate |Python| expression ++ py3eval( {expr}) any evaluate |python3| expression + range( {expr} [, {max} [, {stride}]]) + List items from {expr} to {max} + readfile( {fname} [, {binary} [, {max}]]) +*************** +*** 3980,3985 **** +--- 4003,4022 ---- + < -2.0 + {only available when compiled with the |+float| feature} + ++ luaeval({expr}[, {expr}]) *luaeval()* ++ Evaluate Lua expression {expr} and return its result converted ++ to Vim data structures. Second {expr} may hold additional ++ argument accessible as _A inside first {expr}. ++ Strings are returned as they are. ++ Boolean objects are converted to numbers. ++ Numbers are converted to |Float| values if vim was compiled ++ with |+float| and to numbers otherwise. ++ Dictionaries and lists obtained by vim.eval() are returned ++ as-is. ++ Other objects are returned as zero without any errors. ++ See |lua-luaeval| for more details. ++ {only available when compiled with the |+lua| feature} ++ + map({expr}, {string}) *map()* + {expr} must be a |List| or a |Dictionary|. + Replace each item in {expr} with the result of evaluating +*************** +*** 4574,4579 **** +--- 4612,4640 ---- + This can be used to avoid some things that would remove the + popup menu. + ++ *E860* *E861* ++ py3eval({expr}) *py3eval()* ++ Evaluate Python expression {expr} and return its result ++ converted to Vim data structures. ++ Numbers and strings are returned as they are (strings are ++ copied though, unicode strings are additionally converted to ++ 'encoding'). ++ Lists are represented as Vim |List| type. ++ Dictionaries are represented as Vim |Dictionary| type with ++ keys converted to strings. ++ {only available when compiled with the |+python3| feature} ++ ++ *E858* *E859* ++ pyeval({expr}) *pyeval()* ++ Evaluate Python expression {expr} and return its result ++ converted to Vim data structures. ++ Numbers and strings are returned as they are (strings are ++ copied though). ++ Lists are represented as Vim |List| type. ++ Dictionaries are represented as Vim |Dictionary| type with ++ keys converted to strings. ++ {only available when compiled with the |+python| feature} ++ + *E726* *E727* + range({expr} [, {max} [, {stride}]]) *range()* + Returns a |List| with Numbers: +*************** +*** 4807,4812 **** +--- 4868,4877 ---- + Search for regexp pattern {pattern}. The search starts at the + cursor position (you can use |cursor()| to set it). + ++ If there is no match a 0 is returned and the cursor doesn't ++ move. No error message is given. ++ When a match has been found its line number is returned. ++ + {flags} is a String, which can contain these character flags: + 'b' search backward instead of forward + 'c' accept a match at the cursor position +*** ../vim-7.3.568/runtime/doc/if_pyth.txt 2010-08-15 21:57:12.000000000 +0200 +--- runtime/doc/if_pyth.txt 2012-06-20 18:01:02.000000000 +0200 +*************** +*** 1,4 **** +! *if_pyth.txt* For Vim version 7.3. Last change: 2010 Aug 13 + + + VIM REFERENCE MANUAL by Paul Moore +--- 1,4 ---- +! *if_pyth.txt* For Vim version 7.3. Last change: 2012 Feb 04 + + + VIM REFERENCE MANUAL by Paul Moore +*************** +*** 6,18 **** + + The Python Interface to Vim *python* *Python* + +! 1. Commands |python-commands| +! 2. The vim module |python-vim| +! 3. Buffer objects |python-buffer| +! 4. Range objects |python-range| +! 5. Window objects |python-window| +! 6. Dynamic loading |python-dynamic| +! 7. Python 3 |python3| + + {Vi does not have any of these commands} + +--- 6,19 ---- + + The Python Interface to Vim *python* *Python* + +! 1. Commands |python-commands| +! 2. The vim module |python-vim| +! 3. Buffer objects |python-buffer| +! 4. Range objects |python-range| +! 5. Window objects |python-window| +! 6. pyeval(), py3eval() Vim functions |python-pyeval| +! 7. Dynamic loading |python-dynamic| +! 8. Python 3 |python3| + + {Vi does not have any of these commands} + +*************** +*** 150,155 **** +--- 151,172 ---- + [{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name': + 'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}] + ++ vim.bindeval(str) *python-bindeval* ++ Like |python-eval|, but ++ 1. if expression evaluates to |List| or |Dictionary| it is returned as ++ vimlist or vimdictionary python type that are connected to original ++ list or dictionary. Thus modifications to these objects imply ++ modifications of the original. ++ 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. ++ ++ Note: this function has the same behavior as |lua-eval| (except that ++ lua does not support running vim functions), |python-eval| is ++ kept for backwards compatibility in order not to make scripts ++ relying on outputs of vim.eval() being a copy of original or ++ vim.eval("1") returning a string. ++ + + + Error object of the "vim" module +*************** +*** 222,229 **** + - from indexing vim.buffers (|python-buffers|) + - from the "buffer" attribute of a window (|python-window|) + +! Buffer objects have one read-only attribute - name - the full file name for +! the buffer. They also have three methods (append, mark, and range; see below). + + You can also treat buffer objects as sequence objects. In this context, they + act as if they were lists (yes, they are mutable) of strings, with each +--- 239,247 ---- + - from indexing vim.buffers (|python-buffers|) + - from the "buffer" attribute of a window (|python-window|) + +! Buffer objects have two read-only attributes - name - the full file name for +! the buffer, and number - the buffer number. They also have three methods +! (append, mark, and range; see below). + + You can also treat buffer objects as sequence objects. In this context, they + act as if they were lists (yes, they are mutable) of strings, with each +*************** +*** 318,324 **** + The width attribute is writable only if the screen is split vertically. + + ============================================================================== +! 6. Dynamic loading *python-dynamic* + + On MS-Windows the Python library can be loaded dynamically. The |:version| + output then includes |+python/dyn|. +--- 336,348 ---- + The width attribute is writable only if the screen is split vertically. + + ============================================================================== +! 6. pyeval() and py3eval() Vim functions *python-pyeval* +! +! To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()| +! functions to evaluate Python expressions and pass their values to VimL. +! +! ============================================================================== +! 7. Dynamic loading *python-dynamic* + + On MS-Windows the Python library can be loaded dynamically. The |:version| + output then includes |+python/dyn|. +*************** +*** 335,347 **** + sure edit "gvim.exe" and search for "python\d*.dll\c". + + ============================================================================== +! 7. Python 3 *python3* + + *:py3* *:python3* + The |:py3| and |:python3| commands work similar to |:python|. + *:py3file* + The |:py3file| command works similar to |:pyfile|. + + Vim can be built in four ways (:version output): + 1. No Python support (-python, -python3) + 2. Python 2 support only (+python or +python/dyn, -python3) +--- 359,372 ---- + sure edit "gvim.exe" and search for "python\d*.dll\c". + + ============================================================================== +! 8. Python 3 *python3* + + *:py3* *:python3* + The |:py3| and |:python3| commands work similar to |:python|. + *:py3file* + The |:py3file| command works similar to |:pyfile|. + ++ + Vim can be built in four ways (:version output): + 1. No Python support (-python, -python3) + 2. Python 2 support only (+python or +python/dyn, -python3) +*************** +*** 355,361 **** + When doing this on Linux/Unix systems and importing global symbols, this leads + to a crash when the second Python version is used. So either global symbols + are loaded but only one Python version is activated, or no global symbols are +! loaded. The latter makes Python's "import" fail on libaries that expect the + symbols to be provided by Vim. + *E836* *E837* + Vim's configuration script makes a guess for all libraries based on one +--- 380,386 ---- + When doing this on Linux/Unix systems and importing global symbols, this leads + to a crash when the second Python version is used. So either global symbols + are loaded but only one Python version is activated, or no global symbols are +! loaded. The latter makes Python's "import" fail on libraries that expect the + symbols to be provided by Vim. + *E836* *E837* + Vim's configuration script makes a guess for all libraries based on one +*************** +*** 377,382 **** +--- 402,419 ---- + 3. You undefine PY_NO_RTLD_GLOBAL in auto/config.h after configuration. This + may crash Vim though. + ++ *has-python* ++ You can test what Python version is available with: > ++ if has('python') ++ echo 'there is Python 2.x' ++ elseif has('python3') ++ echo 'there is Python 3.x' ++ endif ++ ++ Note however, that when Python 2 and 3 are both available and loaded ++ dynamically, these has() calls will try to load them. If only one can be ++ loaded at a time, just checking if Python 2 or 3 are available will prevent ++ the other one from being available. + + ============================================================================== + vim:tw=78:ts=8:ft=help:norl: +*** ../vim-7.3.568/src/eval.c 2012-06-20 14:13:02.000000000 +0200 +--- src/eval.c 2012-06-20 18:29:15.000000000 +0200 +*************** +*** 424,453 **** + static int get_lit_string_tv __ARGS((char_u **arg, typval_T *rettv, int evaluate)); + static int get_list_tv __ARGS((char_u **arg, typval_T *rettv, int evaluate)); + static int rettv_list_alloc __ARGS((typval_T *rettv)); +- static listitem_T *listitem_alloc __ARGS((void)); + static void listitem_free __ARGS((listitem_T *item)); +- static void listitem_remove __ARGS((list_T *l, listitem_T *item)); + static long list_len __ARGS((list_T *l)); + static int list_equal __ARGS((list_T *l1, list_T *l2, int ic, int recursive)); + static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic, int recursive)); + static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic, int recursive)); +- static listitem_T *list_find __ARGS((list_T *l, long n)); + static long list_find_nr __ARGS((list_T *l, long idx, int *errorp)); + static long list_idx_of_item __ARGS((list_T *l, listitem_T *item)); +- static void list_append __ARGS((list_T *l, listitem_T *item)); + static int list_append_number __ARGS((list_T *l, varnumber_T n)); +- static int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item)); + static int list_extend __ARGS((list_T *l1, list_T *l2, listitem_T *bef)); + static int list_concat __ARGS((list_T *l1, list_T *l2, typval_T *tv)); + static list_T *list_copy __ARGS((list_T *orig, int deep, int copyID)); +- static void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); + static char_u *list2string __ARGS((typval_T *tv, int copyID)); + static int list_join_inner __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo_style, int copyID, garray_T *join_gap)); + static int list_join __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo, int copyID)); + static int free_unref_items __ARGS((int copyID)); +- static void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); +- static void set_ref_in_list __ARGS((list_T *l, int copyID)); +- static void set_ref_in_item __ARGS((typval_T *tv, int copyID)); + static int rettv_dict_alloc __ARGS((typval_T *rettv)); + static void dict_free __ARGS((dict_T *d, int recurse)); + static dictitem_T *dictitem_copy __ARGS((dictitem_T *org)); +--- 424,444 ---- +*************** +*** 654,659 **** +--- 645,656 ---- + static void f_prevnonblank __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_printf __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_pumvisible __ARGS((typval_T *argvars, typval_T *rettv)); ++ #ifdef FEAT_PYTHON3 ++ static void f_py3eval __ARGS((typval_T *argvars, typval_T *rettv)); ++ #endif ++ #ifdef FEAT_PYTHON ++ static void f_pyeval __ARGS((typval_T *argvars, typval_T *rettv)); ++ #endif + static void f_range __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_readfile __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_reltime __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 824,831 **** + static char_u *autoload_name __ARGS((char_u *name)); + static void cat_func_name __ARGS((char_u *buf, ufunc_T *fp)); + static void func_free __ARGS((ufunc_T *fp)); +- static void func_unref __ARGS((char_u *name)); +- static void func_ref __ARGS((char_u *name)); + static void call_user_func __ARGS((ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rettv, linenr_T firstline, linenr_T lastline, dict_T *selfdict)); + static int can_free_funccal __ARGS((funccall_T *fc, int copyID)) ; + static void free_funccal __ARGS((funccall_T *fc, int free_val)); +--- 821,826 ---- +*************** +*** 5927,5933 **** + /* + * Allocate a list item. + */ +! static listitem_T * + listitem_alloc() + { + return (listitem_T *)alloc(sizeof(listitem_T)); +--- 5922,5928 ---- + /* + * Allocate a list item. + */ +! listitem_T * + listitem_alloc() + { + return (listitem_T *)alloc(sizeof(listitem_T)); +*************** +*** 5947,5953 **** + /* + * Remove a list item from a List and free it. Also clears the value. + */ +! static void + listitem_remove(l, item) + list_T *l; + listitem_T *item; +--- 5942,5948 ---- + /* + * Remove a list item from a List and free it. Also clears the value. + */ +! void + listitem_remove(l, item) + list_T *l; + listitem_T *item; +*************** +*** 6123,6129 **** + * A negative index is counted from the end; -1 is the last item. + * Returns NULL when "n" is out of range. + */ +! static listitem_T * + list_find(l, n) + list_T *l; + long n; +--- 6118,6124 ---- + * A negative index is counted from the end; -1 is the last item. + * Returns NULL when "n" is out of range. + */ +! listitem_T * + list_find(l, n) + list_T *l; + long n; +*************** +*** 6265,6271 **** + /* + * Append item "item" to the end of list "l". + */ +! static void + list_append(l, item) + list_T *l; + listitem_T *item; +--- 6260,6266 ---- + /* + * Append item "item" to the end of list "l". + */ +! void + list_append(l, item) + list_T *l; + listitem_T *item; +*************** +*** 6378,6384 **** + * If "item" is NULL append at the end. + * Return FAIL when out of memory. + */ +! static int + list_insert_tv(l, tv, item) + list_T *l; + typval_T *tv; +--- 6373,6379 ---- + * If "item" is NULL append at the end. + * Return FAIL when out of memory. + */ +! int + list_insert_tv(l, tv, item) + list_T *l; + typval_T *tv; +*************** +*** 6523,6529 **** + * Remove items "item" to "item2" from list "l". + * Does not free the listitem or the value! + */ +! static void + list_remove(l, item, item2) + list_T *l; + listitem_T *item; +--- 6518,6524 ---- + * Remove items "item" to "item2" from list "l". + * Does not free the listitem or the value! + */ +! void + list_remove(l, item, item2) + list_T *l; + listitem_T *item; +*************** +*** 6785,6790 **** +--- 6780,6793 ---- + set_ref_in_lua(copyID); + #endif + ++ #ifdef FEAT_PYTHON ++ set_ref_in_python(copyID); ++ #endif ++ ++ #ifdef FEAT_PYTHON3 ++ set_ref_in_python3(copyID); ++ #endif ++ + /* + * 2. Free lists and dictionaries that are not referenced. + */ +*************** +*** 6870,6876 **** + /* + * Mark all lists and dicts referenced through hashtab "ht" with "copyID". + */ +! static void + set_ref_in_ht(ht, copyID) + hashtab_T *ht; + int copyID; +--- 6873,6879 ---- + /* + * Mark all lists and dicts referenced through hashtab "ht" with "copyID". + */ +! void + set_ref_in_ht(ht, copyID) + hashtab_T *ht; + int copyID; +*************** +*** 6890,6896 **** + /* + * Mark all lists and dicts referenced through list "l" with "copyID". + */ +! static void + set_ref_in_list(l, copyID) + list_T *l; + int copyID; +--- 6893,6899 ---- + /* + * Mark all lists and dicts referenced through list "l" with "copyID". + */ +! void + set_ref_in_list(l, copyID) + list_T *l; + int copyID; +*************** +*** 6904,6910 **** + /* + * Mark all lists and dicts referenced through typval "tv" with "copyID". + */ +! static void + set_ref_in_item(tv, copyID) + typval_T *tv; + int copyID; +--- 6907,6913 ---- + /* + * Mark all lists and dicts referenced through typval "tv" with "copyID". + */ +! void + set_ref_in_item(tv, copyID) + typval_T *tv; + int copyID; +*************** +*** 7986,7991 **** +--- 7989,8000 ---- + {"prevnonblank", 1, 1, f_prevnonblank}, + {"printf", 2, 19, f_printf}, + {"pumvisible", 0, 0, f_pumvisible}, ++ #ifdef FEAT_PYTHON3 ++ {"py3eval", 1, 1, f_py3eval}, ++ #endif ++ #ifdef FEAT_PYTHON ++ {"pyeval", 1, 1, f_pyeval}, ++ #endif + {"range", 1, 3, f_range}, + {"readfile", 1, 3, f_readfile}, + {"reltime", 0, 2, f_reltime}, +*************** +*** 9150,9155 **** +--- 9159,9203 ---- + #endif + } + ++ int ++ func_call(name, args, selfdict, rettv) ++ char_u *name; ++ typval_T *args; ++ dict_T *selfdict; ++ typval_T *rettv; ++ { ++ listitem_T *item; ++ typval_T argv[MAX_FUNC_ARGS + 1]; ++ int argc = 0; ++ int dummy; ++ int r = 0; ++ ++ for (item = args->vval.v_list->lv_first; item != NULL; ++ item = item->li_next) ++ { ++ if (argc == MAX_FUNC_ARGS) ++ { ++ EMSG(_("E699: Too many arguments")); ++ break; ++ } ++ /* Make a copy of each argument. This is needed to be able to set ++ * v_lock to VAR_FIXED in the copy without changing the original list. ++ */ ++ copy_tv(&item->li_tv, &argv[argc++]); ++ } ++ ++ if (item == NULL) ++ r = call_func(name, (int)STRLEN(name), rettv, argc, argv, ++ curwin->w_cursor.lnum, curwin->w_cursor.lnum, ++ &dummy, TRUE, selfdict); ++ ++ /* Free the arguments. */ ++ while (argc > 0) ++ clear_tv(&argv[--argc]); ++ ++ return r; ++ } ++ + /* + * "call(func, arglist)" function + */ +*************** +*** 9159,9168 **** + typval_T *rettv; + { + char_u *func; +- typval_T argv[MAX_FUNC_ARGS + 1]; +- int argc = 0; +- listitem_T *item; +- int dummy; + dict_T *selfdict = NULL; + + if (argvars[1].v_type != VAR_LIST) +--- 9207,9212 ---- +*************** +*** 9190,9217 **** + selfdict = argvars[2].vval.v_dict; + } + +! for (item = argvars[1].vval.v_list->lv_first; item != NULL; +! item = item->li_next) +! { +! if (argc == MAX_FUNC_ARGS) +! { +! EMSG(_("E699: Too many arguments")); +! break; +! } +! /* Make a copy of each argument. This is needed to be able to set +! * v_lock to VAR_FIXED in the copy without changing the original list. +! */ +! copy_tv(&item->li_tv, &argv[argc++]); +! } +! +! if (item == NULL) +! (void)call_func(func, (int)STRLEN(func), rettv, argc, argv, +! curwin->w_cursor.lnum, curwin->w_cursor.lnum, +! &dummy, TRUE, selfdict); +! +! /* Free the arguments. */ +! while (argc > 0) +! clear_tv(&argv[--argc]); + } + + #ifdef FEAT_FLOAT +--- 9234,9240 ---- + selfdict = argvars[2].vval.v_dict; + } + +! (void)func_call(func, &argvars[1], selfdict, rettv); + } + + #ifdef FEAT_FLOAT +*************** +*** 14424,14429 **** +--- 14447,14486 ---- + #endif + } + ++ #ifdef FEAT_PYTHON3 ++ /* ++ * "py3eval()" function ++ */ ++ static void ++ f_py3eval(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ char_u *str; ++ char_u buf[NUMBUFLEN]; ++ ++ str = get_tv_string_buf(&argvars[0], buf); ++ do_py3eval(str, rettv); ++ } ++ #endif ++ ++ #ifdef FEAT_PYTHON ++ /* ++ * "pyeval()" function ++ */ ++ static void ++ f_pyeval(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ char_u *str; ++ char_u buf[NUMBUFLEN]; ++ ++ str = get_tv_string_buf(&argvars[0], buf); ++ do_pyeval(str, rettv); ++ } ++ #endif ++ + /* + * "range()" function + */ +*************** +*** 22139,22145 **** + * Unreference a Function: decrement the reference count and free it when it + * becomes zero. Only for numbered functions. + */ +! static void + func_unref(name) + char_u *name; + { +--- 22196,22202 ---- + * Unreference a Function: decrement the reference count and free it when it + * becomes zero. Only for numbered functions. + */ +! void + func_unref(name) + char_u *name; + { +*************** +*** 22163,22169 **** + /* + * Count a reference to a Function. + */ +! static void + func_ref(name) + char_u *name; + { +--- 22220,22226 ---- + /* + * Count a reference to a Function. + */ +! void + func_ref(name) + char_u *name; + { +*** ../vim-7.3.568/src/if_lua.c 2012-04-06 14:30:55.000000000 +0200 +--- src/if_lua.c 2012-06-20 18:16:33.000000000 +0200 +*************** +*** 199,207 **** + lua_Number (*dll_lua_tonumberx) (lua_State *L, int idx, int *isnum); + lua_Integer (*dll_lua_tointegerx) (lua_State *L, int idx, int *isnum); + void (*dll_lua_callk) (lua_State *L, int nargs, int nresults, int ctx, +! lua_CFunction k); + int (*dll_lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, +! int ctx, lua_CFunction k); + void (*dll_lua_getglobal) (lua_State *L, const char *var); + void (*dll_lua_setglobal) (lua_State *L, const char *var); + #endif +--- 199,207 ---- + lua_Number (*dll_lua_tonumberx) (lua_State *L, int idx, int *isnum); + lua_Integer (*dll_lua_tointegerx) (lua_State *L, int idx, int *isnum); + void (*dll_lua_callk) (lua_State *L, int nargs, int nresults, int ctx, +! lua_CFunction k); + int (*dll_lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, +! int ctx, lua_CFunction k); + void (*dll_lua_getglobal) (lua_State *L, const char *var); + void (*dll_lua_setglobal) (lua_State *L, const char *var); + #endif +*************** +*** 394,400 **** + luaL_typeerror (lua_State *L, int narg, const char *tname) + { + const char *msg = lua_pushfstring(L, "%s expected, got %s", +! tname, luaL_typename(L, narg)); + return luaL_argerror(L, narg, msg); + } + #endif +--- 394,400 ---- + luaL_typeerror (lua_State *L, int narg, const char *tname) + { + const char *msg = lua_pushfstring(L, "%s expected, got %s", +! tname, luaL_typename(L, narg)); + return luaL_argerror(L, narg, msg); + } + #endif +*************** +*** 646,786 **** + return 1; \ + } + +- +- /* adapted from eval.c */ +- +- #define listitem_alloc() (listitem_T *)alloc(sizeof(listitem_T)) +- +- static listitem_T * +- list_find (list_T *l, long n) +- { +- listitem_T *li; +- if (l == NULL || n < -l->lv_len || n >= l->lv_len) +- return NULL; +- if (n < 0) /* search backward? */ +- for (li = l->lv_last; n < -1; li = li->li_prev) +- n++; +- else /* search forward */ +- for (li = l->lv_first; n > 0; li = li->li_next) +- n--; +- return li; +- } +- +- static void +- list_remove (list_T *l, listitem_T *li) +- { +- listwatch_T *lw; +- --l->lv_len; +- /* fix watchers */ +- for (lw = l->lv_watch; lw != NULL; lw = lw->lw_next) +- if (lw->lw_item == li) +- lw->lw_item = li->li_next; +- /* fix list pointers */ +- if (li->li_next == NULL) /* last? */ +- l->lv_last = li->li_prev; +- else +- li->li_next->li_prev = li->li_prev; +- if (li->li_prev == NULL) /* first? */ +- l->lv_first = li->li_next; +- else +- li->li_prev->li_next = li->li_next; +- l->lv_idx_item = NULL; +- } +- +- static void +- list_append(list_T *l, listitem_T *item) +- { +- if (l->lv_last == NULL) /* empty list? */ +- l->lv_first = item; +- else +- l->lv_last->li_next = item; +- item->li_prev = l->lv_last; +- item->li_next = NULL; +- l->lv_last = item; +- ++l->lv_len; +- } +- +- static int +- list_insert_tv(list_T *l, typval_T *tv, listitem_T *item) +- { +- listitem_T *ni = listitem_alloc(); +- +- if (ni == NULL) +- return FAIL; +- copy_tv(tv, &ni->li_tv); +- if (item == NULL) +- list_append(l, ni); +- else +- { +- ni->li_prev = item->li_prev; +- ni->li_next = item; +- if (item->li_prev == NULL) +- { +- l->lv_first = ni; +- ++l->lv_idx; +- } +- else +- { +- item->li_prev->li_next = ni; +- l->lv_idx_item = NULL; +- } +- item->li_prev = ni; +- ++l->lv_len; +- } +- return OK; +- } +- +- /* set references */ +- +- static void set_ref_in_tv (typval_T *tv, int copyID); +- +- static void +- set_ref_in_dict(dict_T *d, int copyID) +- { +- hashtab_T *ht = &d->dv_hashtab; +- int n = ht->ht_used; +- hashitem_T *hi; +- for (hi = ht->ht_array; n > 0; ++hi) +- if (!HASHITEM_EMPTY(hi)) +- { +- dictitem_T *di = dict_lookup(hi); +- set_ref_in_tv(&di->di_tv, copyID); +- --n; +- } +- } +- +- static void +- set_ref_in_list(list_T *l, int copyID) +- { +- listitem_T *li; +- for (li = l->lv_first; li != NULL; li = li->li_next) +- set_ref_in_tv(&li->li_tv, copyID); +- } +- +- static void +- set_ref_in_tv(typval_T *tv, int copyID) +- { +- if (tv->v_type == VAR_LIST) +- { +- list_T *l = tv->vval.v_list; +- if (l != NULL && l->lv_copyID != copyID) +- { +- l->lv_copyID = copyID; +- set_ref_in_list(l, copyID); +- } +- } +- else if (tv->v_type == VAR_DICT) +- { +- dict_T *d = tv->vval.v_dict; +- if (d != NULL && d->dv_copyID != copyID) +- { +- d->dv_copyID = copyID; +- set_ref_in_dict(d, copyID); +- } +- } +- } +- +- + /* ======= List type ======= */ + + static luaV_List * +--- 646,651 ---- +*************** +*** 876,882 **** + if (li == NULL) return 0; + if (lua_isnil(L, 3)) /* remove? */ + { +! list_remove(l, li); + clear_tv(&li->li_tv); + vim_free(li); + } +--- 741,747 ---- + if (li == NULL) return 0; + if (lua_isnil(L, 3)) /* remove? */ + { +! list_remove(l, li, li); + clear_tv(&li->li_tv); + vim_free(li); + } +*************** +*** 904,911 **** + typval_T v; + lua_settop(L, 2); + luaV_totypval(L, 2, &v); +! copy_tv(&v, &li->li_tv); +! list_append(l, li); + } + lua_settop(L, 1); + return 1; +--- 769,775 ---- + typval_T v; + lua_settop(L, 2); + luaV_totypval(L, 2, &v); +! list_append_tv(l, &v); + } + lua_settop(L, 1); + return 1; +*************** +*** 1682,1688 **** + tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */ + } + lua_pop(L, 2); /* metatable and value */ +! set_ref_in_tv(&tv, copyID); + } + return 0; + } +--- 1546,1552 ---- + tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */ + } + lua_pop(L, 2); /* metatable and value */ +! set_ref_in_item(&tv, copyID); + } + return 0; + } +*** ../vim-7.3.568/src/if_py_both.h 2012-04-20 13:31:16.000000000 +0200 +--- src/if_py_both.h 2012-06-29 12:03:52.000000000 +0200 +*************** +*** 1,4 **** +! /* vi:set ts=8 sts=4 sw=4: + * + * VIM - Vi IMproved by Bram Moolenaar + * +--- 1,4 ---- +! /* vi:set ts=8 sts=4 sw=4 noet: + * + * VIM - Vi IMproved by Bram Moolenaar + * +*************** +*** 105,111 **** + return NULL; + Py_INCREF(list); + +! if (!PyList_Check(list)) { + PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); + Py_DECREF(list); + return NULL; +--- 105,112 ---- + return NULL; + Py_INCREF(list); + +! if (!PyList_Check(list)) +! { + PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); + Py_DECREF(list); + return NULL; +*************** +*** 119,125 **** + char *str = NULL; + PyInt len; + +! if (!PyArg_Parse(line, "et#", ENC_OPT, &str, &len)) { + PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); + Py_DECREF(list); + return NULL; +--- 120,127 ---- + char *str = NULL; + PyInt len; + +! if (!PyArg_Parse(line, "et#", ENC_OPT, &str, &len)) +! { + PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); + Py_DECREF(list); + return NULL; +*************** +*** 297,303 **** + { + PyObject *result; + PyObject *newObj; +! char ptrBuf[NUMBUFLEN]; + + /* Avoid infinite recursion */ + if (depth > 100) +--- 299,305 ---- + { + PyObject *result; + PyObject *newObj; +! char ptrBuf[sizeof(void *) * 2 + 3]; + + /* Avoid infinite recursion */ + if (depth > 100) +*************** +*** 312,320 **** + if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL) + || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL)) + { +! sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U, +! our_tv->v_type == VAR_LIST ? (long_u)our_tv->vval.v_list +! : (long_u)our_tv->vval.v_dict); + result = PyDict_GetItemString(lookupDict, ptrBuf); + if (result != NULL) + { +--- 314,322 ---- + if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL) + || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL)) + { +! sprintf(ptrBuf, "%p", +! our_tv->v_type == VAR_LIST ? (void *)our_tv->vval.v_list +! : (void *)our_tv->vval.v_dict); + result = PyDict_GetItemString(lookupDict, ptrBuf); + if (result != NULL) + { +*************** +*** 374,509 **** + hashitem_T *hi; + dictitem_T *di; + +! PyDict_SetItemString(lookupDict, ptrBuf, result); + +! for (hi = ht->ht_array; todo > 0; ++hi) + { +! if (!HASHITEM_EMPTY(hi)) +! { +! --todo; +! +! di = dict_lookup(hi); +! newObj = VimToPython(&di->di_tv, depth + 1, lookupDict); +! PyDict_SetItemString(result, (char *)hi->hi_key, newObj); +! Py_DECREF(newObj); +! } + } + } + } +! else + { +! Py_INCREF(Py_None); +! result = Py_None; + } + +! return result; + } +- #endif + + static PyObject * +! VimEval(PyObject *self UNUSED, PyObject *args UNUSED) + { +! #ifdef FEAT_EVAL +! char *expr; +! typval_T *our_tv; +! PyObject *result; +! PyObject *lookup_dict; + +! if (!PyArg_ParseTuple(args, "s", &expr)) + return NULL; + +! Py_BEGIN_ALLOW_THREADS +! Python_Lock_Vim(); +! our_tv = eval_expr((char_u *)expr, NULL); +! +! Python_Release_Vim(); +! Py_END_ALLOW_THREADS +! +! if (our_tv == NULL) + { +! PyErr_SetVim(_("invalid expression")); + return NULL; + } + +- /* Convert the Vim type into a Python type. Create a dictionary that's +- * used to check for recursive loops. */ + lookup_dict = PyDict_New(); +! result = VimToPython(our_tv, 1, lookup_dict); + Py_DECREF(lookup_dict); + +! +! Py_BEGIN_ALLOW_THREADS +! Python_Lock_Vim(); +! free_tv(our_tv); +! Python_Release_Vim(); +! Py_END_ALLOW_THREADS +! +! return result; +! #else +! PyErr_SetVim(_("expressions disabled at compile time")); +! return NULL; +! #endif + } + +! /* +! * Vim module - Definitions +! */ +! +! static struct PyMethodDef VimMethods[] = { +! /* name, function, calling, documentation */ +! {"command", VimCommand, 1, "Execute a Vim ex-mode command" }, +! {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" }, +! { NULL, NULL, 0, NULL } + }; + + typedef struct + { + PyObject_HEAD +! buf_T *buf; +! } +! BufferObject; + +! #define INVALID_BUFFER_VALUE ((buf_T *)(-1)) +! +! /* +! * Buffer list object - Implementation +! */ + +! static PyInt +! BufListLength(PyObject *self UNUSED) + { +! buf_T *b = firstbuf; +! PyInt n = 0; + +! while (b) + { +! ++n; +! b = b->b_next; + } +! +! return n; + } + + static PyObject * +! BufListItem(PyObject *self UNUSED, PyInt n) + { +! buf_T *b; + +! for (b = firstbuf; b; b = b->b_next, --n) + { +! if (n == 0) +! return BufferNew(b); + } + +! PyErr_SetString(PyExc_IndexError, _("no such buffer")); +! return NULL; + } + +! typedef struct +! { +! PyObject_HEAD +! win_T *win; +! } WindowObject; + + #define INVALID_WINDOW_VALUE ((win_T *)(-1)) + +--- 376,1325 ---- + hashitem_T *hi; + dictitem_T *di; + +! PyDict_SetItemString(lookupDict, ptrBuf, result); +! +! for (hi = ht->ht_array; todo > 0; ++hi) +! { +! if (!HASHITEM_EMPTY(hi)) +! { +! --todo; +! +! di = dict_lookup(hi); +! newObj = VimToPython(&di->di_tv, depth + 1, lookupDict); +! PyDict_SetItemString(result, (char *)hi->hi_key, newObj); +! Py_DECREF(newObj); +! } +! } +! } +! } +! else +! { +! Py_INCREF(Py_None); +! result = Py_None; +! } +! +! return result; +! } +! #endif +! +! static PyObject * +! VimEval(PyObject *self UNUSED, PyObject *args UNUSED) +! { +! #ifdef FEAT_EVAL +! char *expr; +! typval_T *our_tv; +! PyObject *result; +! PyObject *lookup_dict; +! +! if (!PyArg_ParseTuple(args, "s", &expr)) +! return NULL; +! +! Py_BEGIN_ALLOW_THREADS +! Python_Lock_Vim(); +! our_tv = eval_expr((char_u *)expr, NULL); +! +! Python_Release_Vim(); +! Py_END_ALLOW_THREADS +! +! if (our_tv == NULL) +! { +! PyErr_SetVim(_("invalid expression")); +! return NULL; +! } +! +! /* Convert the Vim type into a Python type. Create a dictionary that's +! * used to check for recursive loops. */ +! lookup_dict = PyDict_New(); +! result = VimToPython(our_tv, 1, lookup_dict); +! Py_DECREF(lookup_dict); +! +! +! Py_BEGIN_ALLOW_THREADS +! Python_Lock_Vim(); +! free_tv(our_tv); +! Python_Release_Vim(); +! Py_END_ALLOW_THREADS +! +! return result; +! #else +! PyErr_SetVim(_("expressions disabled at compile time")); +! return NULL; +! #endif +! } +! +! static PyObject *ConvertToPyObject(typval_T *); +! +! static PyObject * +! VimEvalPy(PyObject *self UNUSED, PyObject *args UNUSED) +! { +! #ifdef FEAT_EVAL +! char *expr; +! typval_T *our_tv; +! PyObject *result; +! +! if (!PyArg_ParseTuple(args, "s", &expr)) +! return NULL; +! +! Py_BEGIN_ALLOW_THREADS +! Python_Lock_Vim(); +! our_tv = eval_expr((char_u *)expr, NULL); +! +! Python_Release_Vim(); +! Py_END_ALLOW_THREADS +! +! if (our_tv == NULL) +! { +! PyErr_SetVim(_("invalid expression")); +! return NULL; +! } +! +! result = ConvertToPyObject(our_tv); +! Py_BEGIN_ALLOW_THREADS +! Python_Lock_Vim(); +! free_tv(our_tv); +! Python_Release_Vim(); +! Py_END_ALLOW_THREADS +! +! return result; +! #else +! PyErr_SetVim(_("expressions disabled at compile time")); +! return NULL; +! #endif +! } +! +! static PyObject * +! VimStrwidth(PyObject *self UNUSED, PyObject *args) +! { +! char *expr; +! +! if (!PyArg_ParseTuple(args, "s", &expr)) +! return NULL; +! +! return PyLong_FromLong(mb_string2cells((char_u *)expr, STRLEN(expr))); +! } +! +! /* +! * Vim module - Definitions +! */ +! +! static struct PyMethodDef VimMethods[] = { +! /* name, function, calling, documentation */ +! {"command", VimCommand, 1, "Execute a Vim ex-mode command" }, +! {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" }, +! {"bindeval", VimEvalPy, 1, "Like eval(), but returns objects attached to vim ones"}, +! {"strwidth", VimStrwidth, 1, "Screen string width, counts <Tab> as having width 1"}, +! { NULL, NULL, 0, NULL } +! }; +! +! typedef struct +! { +! PyObject_HEAD +! buf_T *buf; +! } BufferObject; +! +! #define INVALID_BUFFER_VALUE ((buf_T *)(-1)) +! +! /* +! * Buffer list object - Implementation +! */ +! +! static PyInt +! BufListLength(PyObject *self UNUSED) +! { +! buf_T *b = firstbuf; +! PyInt n = 0; +! +! while (b) +! { +! ++n; +! b = b->b_next; +! } +! +! return n; +! } +! +! static PyObject * +! BufListItem(PyObject *self UNUSED, PyInt n) +! { +! buf_T *b; +! +! for (b = firstbuf; b; b = b->b_next, --n) +! { +! if (n == 0) +! return BufferNew(b); +! } +! +! PyErr_SetString(PyExc_IndexError, _("no such buffer")); +! return NULL; +! } +! +! typedef struct +! { +! PyObject_HEAD +! win_T *win; +! } WindowObject; +! +! static int ConvertFromPyObject(PyObject *, typval_T *); +! static int _ConvertFromPyObject(PyObject *, typval_T *, PyObject *); +! +! typedef struct pylinkedlist_S { +! struct pylinkedlist_S *pll_next; +! struct pylinkedlist_S *pll_prev; +! PyObject *pll_obj; +! } pylinkedlist_T; +! +! static pylinkedlist_T *lastdict = NULL; +! static pylinkedlist_T *lastlist = NULL; +! +! static void +! pyll_remove(pylinkedlist_T *ref, pylinkedlist_T **last) +! { +! if (ref->pll_prev == NULL) +! { +! if (ref->pll_next == NULL) +! { +! *last = NULL; +! return; +! } +! } +! else +! ref->pll_prev->pll_next = ref->pll_next; +! +! if (ref->pll_next == NULL) +! *last = ref->pll_prev; +! else +! ref->pll_next->pll_prev = ref->pll_prev; +! } +! +! static void +! pyll_add(PyObject *self, pylinkedlist_T *ref, pylinkedlist_T **last) +! { +! if (*last == NULL) +! ref->pll_prev = NULL; +! else +! { +! (*last)->pll_next = ref; +! ref->pll_prev = *last; +! } +! ref->pll_next = NULL; +! ref->pll_obj = self; +! *last = ref; +! } +! +! static PyTypeObject DictionaryType; +! +! typedef struct +! { +! PyObject_HEAD +! dict_T *dict; +! pylinkedlist_T ref; +! } DictionaryObject; +! +! static PyObject * +! DictionaryNew(dict_T *dict) +! { +! DictionaryObject *self; +! +! self = PyObject_NEW(DictionaryObject, &DictionaryType); +! if (self == NULL) +! return NULL; +! self->dict = dict; +! ++dict->dv_refcount; +! +! pyll_add((PyObject *)(self), &self->ref, &lastdict); +! +! return (PyObject *)(self); +! } +! +! static int +! pydict_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) +! { +! dict_T *d; +! char_u *key; +! dictitem_T *di; +! PyObject *keyObject; +! PyObject *valObject; +! Py_ssize_t iter = 0; +! +! d = dict_alloc(); +! if (d == NULL) +! { +! PyErr_NoMemory(); +! return -1; +! } +! +! tv->v_type = VAR_DICT; +! tv->vval.v_dict = d; +! +! while (PyDict_Next(obj, &iter, &keyObject, &valObject)) +! { +! DICTKEY_DECL +! +! if (keyObject == NULL) +! return -1; +! if (valObject == NULL) +! return -1; +! +! DICTKEY_GET(-1) +! +! di = dictitem_alloc(key); +! +! DICTKEY_UNREF +! +! if (di == NULL) +! { +! PyErr_NoMemory(); +! return -1; +! } +! di->di_tv.v_lock = 0; +! +! if (_ConvertFromPyObject(valObject, &di->di_tv, lookupDict) == -1) +! { +! vim_free(di); +! return -1; +! } +! if (dict_add(d, di) == FAIL) +! { +! vim_free(di); +! PyErr_SetVim(_("failed to add key to dictionary")); +! return -1; +! } +! } +! return 0; +! } +! +! static int +! pymap_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) +! { +! dict_T *d; +! char_u *key; +! dictitem_T *di; +! PyObject *list; +! PyObject *litem; +! PyObject *keyObject; +! PyObject *valObject; +! Py_ssize_t lsize; +! +! d = dict_alloc(); +! if (d == NULL) +! { +! PyErr_NoMemory(); +! return -1; +! } +! +! tv->v_type = VAR_DICT; +! tv->vval.v_dict = d; +! +! list = PyMapping_Items(obj); +! lsize = PyList_Size(list); +! while (lsize--) +! { +! DICTKEY_DECL +! +! litem = PyList_GetItem(list, lsize); +! if (litem == NULL) +! { +! Py_DECREF(list); +! return -1; +! } +! +! keyObject = PyTuple_GetItem(litem, 0); +! if (keyObject == NULL) +! { +! Py_DECREF(list); +! Py_DECREF(litem); +! return -1; +! } +! +! DICTKEY_GET(-1) +! +! valObject = PyTuple_GetItem(litem, 1); +! if (valObject == NULL) +! { +! Py_DECREF(list); +! Py_DECREF(litem); +! return -1; +! } +! +! di = dictitem_alloc(key); +! +! DICTKEY_UNREF +! +! if (di == NULL) +! { +! Py_DECREF(list); +! Py_DECREF(litem); +! PyErr_NoMemory(); +! return -1; +! } +! di->di_tv.v_lock = 0; +! +! if (_ConvertFromPyObject(valObject, &di->di_tv, lookupDict) == -1) +! { +! vim_free(di); +! Py_DECREF(list); +! Py_DECREF(litem); +! return -1; +! } +! if (dict_add(d, di) == FAIL) +! { +! vim_free(di); +! Py_DECREF(list); +! Py_DECREF(litem); +! PyErr_SetVim(_("failed to add key to dictionary")); +! return -1; +! } +! Py_DECREF(litem); +! } +! Py_DECREF(list); +! return 0; +! } +! +! static PyInt +! DictionaryLength(PyObject *self) +! { +! return ((PyInt) ((((DictionaryObject *)(self))->dict->dv_hashtab.ht_used))); +! } +! +! static PyObject * +! 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 +! DictionaryAssItem(PyObject *self, PyObject *keyObject, PyObject *valObject) +! { +! char_u *key; +! typval_T tv; +! dict_T *d = ((DictionaryObject *)(self))->dict; +! dictitem_T *di; +! DICTKEY_DECL +! +! if (d->dv_lock) +! { +! PyErr_SetVim(_("dict is locked")); +! return -1; +! } +! +! DICTKEY_GET(-1) +! +! di = dict_find(d, key, -1); +! +! if (valObject == NULL) +! { +! if (di == NULL) +! { +! PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); +! return -1; +! } +! hashitem_T *hi = hash_find(&d->dv_hashtab, di->di_key); +! hash_remove(&d->dv_hashtab, hi); +! dictitem_free(di); +! return 0; +! } +! +! if (ConvertFromPyObject(valObject, &tv) == -1) +! { +! return -1; +! } +! +! if (di == NULL) +! { +! di = dictitem_alloc(key); +! if (di == NULL) +! { +! PyErr_NoMemory(); +! return -1; +! } +! di->di_tv.v_lock = 0; +! +! if (dict_add(d, di) == FAIL) +! { +! vim_free(di); +! PyErr_SetVim(_("failed to add key to dictionary")); +! return -1; +! } +! } +! else +! clear_tv(&di->di_tv); +! +! DICTKEY_UNREF +! +! copy_tv(&tv, &di->di_tv); +! return 0; +! } +! +! static PyObject * +! DictionaryListKeys(PyObject *self) +! { +! dict_T *dict = ((DictionaryObject *)(self))->dict; +! long_u todo = dict->dv_hashtab.ht_used; +! Py_ssize_t i = 0; +! PyObject *r; +! hashitem_T *hi; +! +! r = PyList_New(todo); +! for (hi = dict->dv_hashtab.ht_array; todo > 0; ++hi) +! { +! if (!HASHITEM_EMPTY(hi)) +! { +! PyList_SetItem(r, i, PyBytes_FromString((char *)(hi->hi_key))); +! --todo; +! ++i; +! } +! } +! return r; +! } +! +! static struct PyMethodDef DictionaryMethods[] = { +! {"keys", (PyCFunction)DictionaryListKeys, METH_NOARGS, ""}, +! { NULL, NULL, 0, NULL } +! }; +! +! static PyTypeObject ListType; +! +! typedef struct +! { +! PyObject_HEAD +! list_T *list; +! pylinkedlist_T ref; +! } ListObject; +! +! static PyObject * +! ListNew(list_T *list) +! { +! ListObject *self; +! +! self = PyObject_NEW(ListObject, &ListType); +! if (self == NULL) +! return NULL; +! self->list = list; +! ++list->lv_refcount; +! +! pyll_add((PyObject *)(self), &self->ref, &lastlist); +! +! return (PyObject *)(self); +! } +! +! static int +! list_py_concat(list_T *l, PyObject *obj, PyObject *lookupDict) +! { +! Py_ssize_t i; +! Py_ssize_t lsize = PySequence_Size(obj); +! PyObject *litem; +! listitem_T *li; +! +! for(i=0; i<lsize; i++) +! { +! li = listitem_alloc(); +! if (li == NULL) +! { +! PyErr_NoMemory(); +! return -1; +! } +! li->li_tv.v_lock = 0; +! +! litem = PySequence_GetItem(obj, i); +! if (litem == NULL) +! return -1; +! if (_ConvertFromPyObject(litem, &li->li_tv, lookupDict) == -1) +! return -1; +! +! list_append(l, li); +! } +! return 0; +! } +! +! static int +! pyseq_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) +! { +! list_T *l; +! +! l = list_alloc(); +! if (l == NULL) +! { +! PyErr_NoMemory(); +! return -1; +! } +! +! tv->v_type = VAR_LIST; +! tv->vval.v_list = l; +! +! if (list_py_concat(l, obj, lookupDict) == -1) +! return -1; +! +! return 0; +! } +! +! static int +! pyiter_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) +! { +! PyObject *iterator = PyObject_GetIter(obj); +! PyObject *item; +! list_T *l; +! listitem_T *li; +! +! l = list_alloc(); +! +! if (l == NULL) +! { +! PyErr_NoMemory(); +! return -1; +! } +! +! tv->vval.v_list = l; +! tv->v_type = VAR_LIST; +! +! +! if (iterator == NULL) +! return -1; +! +! while ((item = PyIter_Next(obj))) +! { +! li = listitem_alloc(); +! if (li == NULL) +! { +! PyErr_NoMemory(); +! return -1; +! } +! li->li_tv.v_lock = 0; +! +! if (_ConvertFromPyObject(item, &li->li_tv, lookupDict) == -1) +! return -1; +! +! list_append(l, li); +! +! Py_DECREF(item); +! } +! +! Py_DECREF(iterator); +! return 0; +! } +! +! static PyInt +! ListLength(PyObject *self) +! { +! return ((PyInt) (((ListObject *) (self))->list->lv_len)); +! } +! +! static PyObject * +! ListItem(PyObject *self, Py_ssize_t index) +! { +! listitem_T *li; +! +! if (index>=ListLength(self)) +! { +! PyErr_SetString(PyExc_IndexError, "list index out of range"); +! return NULL; +! } +! li = list_find(((ListObject *) (self))->list, (long) index); +! if (li == NULL) +! { +! PyErr_SetVim(_("internal error: failed to get vim list item")); +! return NULL; +! } +! return ConvertToPyObject(&li->li_tv); +! } +! +! #define PROC_RANGE \ +! if (last < 0) {\ +! if (last < -size) \ +! last = 0; \ +! else \ +! last += size; \ +! } \ +! if (first < 0) \ +! first = 0; \ +! if (first > size) \ +! first = size; \ +! if (last > size) \ +! last = size; +! +! static PyObject * +! ListSlice(PyObject *self, Py_ssize_t first, Py_ssize_t last) +! { +! PyInt i; +! PyInt size = ListLength(self); +! PyInt n; +! PyObject *list; +! int reversed = 0; +! +! PROC_RANGE +! if (first >= last) +! first = last; +! +! n = last-first; +! list = PyList_New(n); +! if (list == NULL) +! return NULL; +! +! for (i = 0; i < n; ++i) +! { +! PyObject *item = ListItem(self, i); +! if (item == NULL) +! { +! Py_DECREF(list); +! return NULL; +! } +! +! if ((PyList_SetItem(list, ((reversed)?(n-i-1):(i)), item))) +! { +! Py_DECREF(item); +! Py_DECREF(list); +! return NULL; +! } +! } +! +! return list; +! } +! +! static int +! ListAssItem(PyObject *self, Py_ssize_t index, PyObject *obj) +! { +! typval_T tv; +! list_T *l = ((ListObject *) (self))->list; +! listitem_T *li; +! Py_ssize_t length = ListLength(self); +! +! if (l->lv_lock) +! { +! PyErr_SetVim(_("list is locked")); +! return -1; +! } +! if (index>length || (index==length && obj==NULL)) +! { +! PyErr_SetString(PyExc_IndexError, "list index out of range"); +! return -1; +! } +! +! if (obj == NULL) +! { +! li = list_find(l, (long) index); +! list_remove(l, li, li); +! clear_tv(&li->li_tv); +! vim_free(li); +! return 0; +! } +! +! if (ConvertFromPyObject(obj, &tv) == -1) +! return -1; +! +! if (index == length) +! { +! if (list_append_tv(l, &tv) == FAIL) +! { +! PyErr_SetVim(_("Failed to add item to list")); +! return -1; +! } +! } +! else +! { +! li = list_find(l, (long) index); +! clear_tv(&li->li_tv); +! copy_tv(&tv, &li->li_tv); +! } +! return 0; +! } +! +! static int +! ListAssSlice(PyObject *self, Py_ssize_t first, Py_ssize_t last, PyObject *obj) +! { +! PyInt size = ListLength(self); +! Py_ssize_t i; +! Py_ssize_t lsize; +! PyObject *litem; +! listitem_T *li; +! listitem_T *next; +! typval_T v; +! list_T *l = ((ListObject *) (self))->list; +! +! if (l->lv_lock) +! { +! PyErr_SetVim(_("list is locked")); +! return -1; +! } +! +! PROC_RANGE + +! if (first == size) +! li = NULL; +! else +! { +! li = list_find(l, (long) first); +! if (li == NULL) +! { +! PyErr_SetVim(_("internal error: no vim list item")); +! return -1; +! } +! if (last > first) +! { +! i = last - first; +! while (i-- && li != NULL) + { +! next = li->li_next; +! listitem_remove(l, li); +! li = next; + } + } + } +! +! if (obj == NULL) +! return 0; +! +! if (!PyList_Check(obj)) + { +! PyErr_SetString(PyExc_TypeError, _("can only assign lists to slice")); +! return -1; + } + +! lsize = PyList_Size(obj); +! +! for(i=0; i<lsize; i++) +! { +! litem = PyList_GetItem(obj, i); +! if (litem == NULL) +! return -1; +! if (ConvertFromPyObject(litem, &v) == -1) +! return -1; +! if (list_insert_tv(l, &v, li) == FAIL) +! { +! PyErr_SetVim(_("internal error: failed to add item to list")); +! return -1; +! } +! } +! return 0; + } + + static PyObject * +! ListConcatInPlace(PyObject *self, PyObject *obj) + { +! list_T *l = ((ListObject *) (self))->list; +! PyObject *lookup_dict; + +! if (l->lv_lock) +! { +! PyErr_SetVim(_("list is locked")); + return NULL; ++ } + +! if (!PySequence_Check(obj)) + { +! PyErr_SetString(PyExc_TypeError, _("can only concatenate with lists")); + return NULL; + } + + lookup_dict = PyDict_New(); +! if (list_py_concat(l, obj, lookup_dict) == -1) +! { +! Py_DECREF(lookup_dict); +! return NULL; +! } + Py_DECREF(lookup_dict); + +! Py_INCREF(self); +! return self; + } + +! static struct PyMethodDef ListMethods[] = { +! {"extend", (PyCFunction)ListConcatInPlace, METH_O, ""}, +! { NULL, NULL, 0, NULL } + }; + + typedef struct + { + PyObject_HEAD +! char_u *name; +! } FunctionObject; + +! static PyTypeObject FunctionType; + +! static PyObject * +! FunctionNew(char_u *name) + { +! FunctionObject *self; + +! self = PyObject_NEW(FunctionObject, &FunctionType); +! if (self == NULL) +! return NULL; +! self->name = PyMem_New(char_u, STRLEN(name) + 1); +! if (self->name == NULL) + { +! PyErr_NoMemory(); +! return NULL; + } +! STRCPY(self->name, name); +! func_ref(name); +! return (PyObject *)(self); + } + + static PyObject * +! FunctionCall(PyObject *self, PyObject *argsObject, PyObject *kwargs) + { +! FunctionObject *this = (FunctionObject *)(self); +! char_u *name = this->name; +! typval_T args; +! typval_T selfdicttv; +! typval_T rettv; +! dict_T *selfdict = NULL; +! PyObject *selfdictObject; +! PyObject *result; +! int error; + +! if (ConvertFromPyObject(argsObject, &args) == -1) +! return NULL; +! +! if (kwargs != NULL) + { +! selfdictObject = PyDict_GetItemString(kwargs, "self"); +! if (selfdictObject != NULL) +! { +! if (!PyDict_Check(selfdictObject)) +! { +! PyErr_SetString(PyExc_TypeError, _("'self' argument must be a dictionary")); +! clear_tv(&args); +! return NULL; +! } +! if (ConvertFromPyObject(selfdictObject, &selfdicttv) == -1) +! return NULL; +! selfdict = selfdicttv.vval.v_dict; +! } + } + +! error = func_call(name, &args, selfdict, &rettv); +! if (error != OK) +! { +! result = NULL; +! PyErr_SetVim(_("failed to run function")); +! } +! else +! result = ConvertToPyObject(&rettv); +! +! /* FIXME Check what should really be cleared. */ +! clear_tv(&args); +! clear_tv(&rettv); +! /* +! * if (selfdict!=NULL) +! * clear_tv(selfdicttv); +! */ +! +! return result; + } + +! static struct PyMethodDef FunctionMethods[] = { +! {"__call__", (PyCFunction)FunctionCall, METH_VARARGS|METH_KEYWORDS, ""}, +! { NULL, NULL, 0, NULL } +! }; + + #define INVALID_WINDOW_VALUE ((win_T *)(-1)) + +*************** +*** 1567,1569 **** +--- 2383,2638 ---- + { NULL, NULL, 0, NULL } + }; + ++ static void ++ set_ref_in_py(const int copyID) ++ { ++ pylinkedlist_T *cur; ++ dict_T *dd; ++ list_T *ll; ++ ++ if (lastdict != NULL) ++ for(cur = lastdict ; cur != NULL ; cur = cur->pll_prev) ++ { ++ dd = ((DictionaryObject *) (cur->pll_obj))->dict; ++ if (dd->dv_copyID != copyID) ++ { ++ dd->dv_copyID = copyID; ++ set_ref_in_ht(&dd->dv_hashtab, copyID); ++ } ++ } ++ ++ if (lastlist != NULL) ++ for(cur = lastlist ; cur != NULL ; cur = cur->pll_prev) ++ { ++ ll = ((ListObject *) (cur->pll_obj))->list; ++ if (ll->lv_copyID != copyID) ++ { ++ ll->lv_copyID = copyID; ++ set_ref_in_list(ll, copyID); ++ } ++ } ++ } ++ ++ static int ++ set_string_copy(char_u *str, typval_T *tv) ++ { ++ tv->vval.v_string = vim_strsave(str); ++ if (tv->vval.v_string == NULL) ++ { ++ PyErr_NoMemory(); ++ return -1; ++ } ++ return 0; ++ } ++ ++ #ifdef FEAT_EVAL ++ typedef int (*pytotvfunc)(PyObject *, typval_T *, PyObject *); ++ ++ static int ++ convert_dl(PyObject *obj, typval_T *tv, ++ pytotvfunc py_to_tv, PyObject *lookupDict) ++ { ++ PyObject *capsule; ++ char hexBuf[sizeof(void *) * 2 + 3]; ++ ++ sprintf(hexBuf, "%p", obj); ++ ++ capsule = PyDict_GetItemString(lookupDict, hexBuf); ++ if (capsule == NULL) ++ { ++ capsule = PyCapsule_New(tv, NULL, NULL); ++ PyDict_SetItemString(lookupDict, hexBuf, capsule); ++ Py_DECREF(capsule); ++ if (py_to_tv(obj, tv, lookupDict) == -1) ++ { ++ tv->v_type = VAR_UNKNOWN; ++ return -1; ++ } ++ /* As we are not using copy_tv which increments reference count we must ++ * do it ourself. */ ++ switch(tv->v_type) ++ { ++ case VAR_DICT: ++tv->vval.v_dict->dv_refcount; break; ++ case VAR_LIST: ++tv->vval.v_list->lv_refcount; break; ++ } ++ } ++ else ++ { ++ typval_T *v = PyCapsule_GetPointer(capsule, NULL); ++ copy_tv(v, tv); ++ } ++ return 0; ++ } ++ ++ static int ++ ConvertFromPyObject(PyObject *obj, typval_T *tv) ++ { ++ PyObject *lookup_dict; ++ int r; ++ ++ lookup_dict = PyDict_New(); ++ r = _ConvertFromPyObject(obj, tv, lookup_dict); ++ Py_DECREF(lookup_dict); ++ return r; ++ } ++ ++ static int ++ _ConvertFromPyObject(PyObject *obj, typval_T *tv, PyObject *lookupDict) ++ { ++ if (obj->ob_type == &DictionaryType) ++ { ++ tv->v_type = VAR_DICT; ++ tv->vval.v_dict = (((DictionaryObject *)(obj))->dict); ++ ++tv->vval.v_dict->dv_refcount; ++ } ++ else if (obj->ob_type == &ListType) ++ { ++ tv->v_type = VAR_LIST; ++ tv->vval.v_list = (((ListObject *)(obj))->list); ++ ++tv->vval.v_list->lv_refcount; ++ } ++ else if (obj->ob_type == &FunctionType) ++ { ++ if (set_string_copy(((FunctionObject *) (obj))->name, tv) == -1) ++ return -1; ++ ++ tv->v_type = VAR_FUNC; ++ func_ref(tv->vval.v_string); ++ } ++ #if PY_MAJOR_VERSION >= 3 ++ else if (PyBytes_Check(obj)) ++ { ++ char_u *result = (char_u *) PyBytes_AsString(obj); ++ ++ if (result == NULL) ++ return -1; ++ ++ if (set_string_copy(result, tv) == -1) ++ return -1; ++ ++ tv->v_type = VAR_STRING; ++ } ++ else if (PyUnicode_Check(obj)) ++ { ++ PyObject *bytes; ++ char_u *result; ++ ++ bytes = PyString_AsBytes(obj); ++ if (bytes == NULL) ++ return -1; ++ ++ result = (char_u *) PyBytes_AsString(bytes); ++ if (result == NULL) ++ return -1; ++ ++ if (set_string_copy(result, tv) == -1) ++ { ++ Py_XDECREF(bytes); ++ return -1; ++ } ++ Py_XDECREF(bytes); ++ ++ tv->v_type = VAR_STRING; ++ } ++ #else ++ else if (PyUnicode_Check(obj)) ++ { ++ PyObject *bytes; ++ char_u *result; ++ ++ bytes = PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL); ++ if (bytes == NULL) ++ return -1; ++ ++ result=(char_u *) PyString_AsString(bytes); ++ if (result == NULL) ++ return -1; ++ ++ if (set_string_copy(result, tv) == -1) ++ { ++ Py_XDECREF(bytes); ++ return -1; ++ } ++ Py_XDECREF(bytes); ++ ++ tv->v_type = VAR_STRING; ++ } ++ else if (PyString_Check(obj)) ++ { ++ char_u *result = (char_u *) PyString_AsString(obj); ++ ++ if (result == NULL) ++ return -1; ++ ++ if (set_string_copy(result, tv) == -1) ++ return -1; ++ ++ tv->v_type = VAR_STRING; ++ } ++ else if (PyInt_Check(obj)) ++ { ++ tv->v_type = VAR_NUMBER; ++ tv->vval.v_number = (varnumber_T) PyInt_AsLong(obj); ++ } ++ #endif ++ else if (PyLong_Check(obj)) ++ { ++ tv->v_type = VAR_NUMBER; ++ tv->vval.v_number = (varnumber_T) PyLong_AsLong(obj); ++ } ++ else if (PyDict_Check(obj)) ++ return convert_dl(obj, tv, pydict_to_tv, lookupDict); ++ #ifdef FEAT_FLOAT ++ else if (PyFloat_Check(obj)) ++ { ++ tv->v_type = VAR_FLOAT; ++ tv->vval.v_float = (float_T) PyFloat_AsDouble(obj); ++ } ++ #endif ++ else if (PyIter_Check(obj)) ++ return convert_dl(obj, tv, pyiter_to_tv, lookupDict); ++ else if (PySequence_Check(obj)) ++ return convert_dl(obj, tv, pyseq_to_tv, lookupDict); ++ else if (PyMapping_Check(obj)) ++ return convert_dl(obj, tv, pymap_to_tv, lookupDict); ++ else ++ { ++ PyErr_SetString(PyExc_TypeError, _("unable to convert to vim structure")); ++ return -1; ++ } ++ return 0; ++ } ++ ++ static PyObject * ++ ConvertToPyObject(typval_T *tv) ++ { ++ if (tv == NULL) ++ { ++ PyErr_SetVim(_("NULL reference passed")); ++ return NULL; ++ } ++ switch (tv->v_type) ++ { ++ case VAR_STRING: ++ return PyBytes_FromString((char *) tv->vval.v_string); ++ case VAR_NUMBER: ++ return PyLong_FromLong((long) tv->vval.v_number); ++ #ifdef FEAT_FLOAT ++ case VAR_FLOAT: ++ return PyFloat_FromDouble((double) tv->vval.v_float); ++ #endif ++ case VAR_LIST: ++ return ListNew(tv->vval.v_list); ++ case VAR_DICT: ++ return DictionaryNew(tv->vval.v_dict); ++ case VAR_FUNC: ++ return FunctionNew(tv->vval.v_string); ++ case VAR_UNKNOWN: ++ Py_INCREF(Py_None); ++ return Py_None; ++ default: ++ PyErr_SetVim(_("internal error: invalid value type")); ++ return NULL; ++ } ++ } ++ #endif +*** ../vim-7.3.568/src/if_python.c 2011-08-28 16:00:14.000000000 +0200 +--- src/if_python.c 2012-06-29 12:47:48.000000000 +0200 +*************** +*** 1,4 **** +! /* vi:set ts=8 sts=4 sw=4: + * + * VIM - Vi IMproved by Bram Moolenaar + * +--- 1,4 ---- +! /* vi:set ts=8 sts=4 sw=4 noet: + * + * VIM - Vi IMproved by Bram Moolenaar + * +*************** +*** 56,61 **** +--- 56,63 ---- + + static void init_structs(void); + ++ #define PyBytes_FromString PyString_FromString ++ + /* No-op conversion functions, use with care! */ + #define PyString_AsBytes(obj) (obj) + #define PyString_FreeBytes(obj) +*************** +*** 122,132 **** +--- 124,136 ---- + /* This makes if_python.c compile without warnings against Python 2.5 + * on Win32 and Win64. */ + # undef PyRun_SimpleString ++ # undef PyRun_String + # undef PyArg_Parse + # undef PyArg_ParseTuple + # undef Py_BuildValue + # undef Py_InitModule4 + # undef Py_InitModule4_64 ++ # undef PyObject_CallMethod + + /* + * Wrapper defines +*************** +*** 134,139 **** +--- 138,144 ---- + # define PyArg_Parse dll_PyArg_Parse + # define PyArg_ParseTuple dll_PyArg_ParseTuple + # define PyMem_Free dll_PyMem_Free ++ # define PyMem_Malloc dll_PyMem_Malloc + # define PyDict_SetItemString dll_PyDict_SetItemString + # define PyErr_BadArgument dll_PyErr_BadArgument + # define PyErr_Clear dll_PyErr_Clear +*************** +*** 150,172 **** +--- 155,202 ---- + # endif + # define PyInt_AsLong dll_PyInt_AsLong + # define PyInt_FromLong dll_PyInt_FromLong ++ # define PyLong_AsLong dll_PyLong_AsLong ++ # define PyLong_FromLong dll_PyLong_FromLong + # define PyInt_Type (*dll_PyInt_Type) ++ # define PyLong_Type (*dll_PyLong_Type) + # define PyList_GetItem dll_PyList_GetItem + # define PyList_Append dll_PyList_Append + # define PyList_New dll_PyList_New + # define PyList_SetItem dll_PyList_SetItem + # define PyList_Size dll_PyList_Size + # define PyList_Type (*dll_PyList_Type) ++ # define PySequence_Check dll_PySequence_Check ++ # define PySequence_Size dll_PySequence_Size ++ # define PySequence_GetItem dll_PySequence_GetItem ++ # define PyTuple_Size dll_PyTuple_Size ++ # define PyTuple_GetItem dll_PyTuple_GetItem ++ # define PyTuple_Type (*dll_PyTuple_Type) + # define PyImport_ImportModule dll_PyImport_ImportModule + # define PyDict_New dll_PyDict_New + # define PyDict_GetItemString dll_PyDict_GetItemString ++ # define PyDict_Next dll_PyDict_Next ++ # ifdef PyMapping_Items ++ # define PY_NO_MAPPING_ITEMS ++ # else ++ # define PyMapping_Items dll_PyMapping_Items ++ # endif ++ # define PyObject_CallMethod dll_PyObject_CallMethod ++ # define PyMapping_Check dll_PyMapping_Check ++ # define PyIter_Next dll_PyIter_Next + # define PyModule_GetDict dll_PyModule_GetDict + # define PyRun_SimpleString dll_PyRun_SimpleString ++ # define PyRun_String dll_PyRun_String + # define PyString_AsString dll_PyString_AsString + # define PyString_FromString dll_PyString_FromString + # define PyString_FromStringAndSize dll_PyString_FromStringAndSize + # define PyString_Size dll_PyString_Size + # define PyString_Type (*dll_PyString_Type) ++ # define PyUnicode_Type (*dll_PyUnicode_Type) ++ # define PyUnicodeUCS4_AsEncodedString (*dll_PyUnicodeUCS4_AsEncodedString) ++ # define PyFloat_AsDouble dll_PyFloat_AsDouble ++ # define PyFloat_FromDouble dll_PyFloat_FromDouble ++ # define PyFloat_Type (*dll_PyFloat_Type) ++ # define PyImport_AddModule (*dll_PyImport_AddModule) + # define PySys_SetObject dll_PySys_SetObject + # define PySys_SetArgv dll_PySys_SetArgv + # define PyType_Type (*dll_PyType_Type) +*************** +*** 179,186 **** +--- 209,218 ---- + # define Py_Finalize dll_Py_Finalize + # define Py_IsInitialized dll_Py_IsInitialized + # define _PyObject_New dll__PyObject_New ++ # define _PyObject_NextNotImplemented (*dll__PyObject_NextNotImplemented) + # define _Py_NoneStruct (*dll__Py_NoneStruct) + # define PyObject_Init dll__PyObject_Init ++ # define PyObject_GetIter dll_PyObject_GetIter + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 + # define PyType_IsSubtype dll_PyType_IsSubtype + # endif +*************** +*** 188,193 **** +--- 220,227 ---- + # define PyObject_Malloc dll_PyObject_Malloc + # define PyObject_Free dll_PyObject_Free + # endif ++ # define PyCapsule_New dll_PyCapsule_New ++ # define PyCapsule_GetPointer dll_PyCapsule_GetPointer + + /* + * Pointers for dynamic link +*************** +*** 195,200 **** +--- 229,235 ---- + static int(*dll_PyArg_Parse)(PyObject *, char *, ...); + static int(*dll_PyArg_ParseTuple)(PyObject *, char *, ...); + static int(*dll_PyMem_Free)(void *); ++ static void* (*dll_PyMem_Malloc)(size_t); + static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); + static int(*dll_PyErr_BadArgument)(void); + static void(*dll_PyErr_Clear)(void); +*************** +*** 208,233 **** + # ifdef PY_CAN_RECURSE + static PyGILState_STATE (*dll_PyGILState_Ensure)(void); + static void (*dll_PyGILState_Release)(PyGILState_STATE); +! #endif + static long(*dll_PyInt_AsLong)(PyObject *); + static PyObject*(*dll_PyInt_FromLong)(long); + static PyTypeObject* dll_PyInt_Type; + static PyObject*(*dll_PyList_GetItem)(PyObject *, PyInt); + static PyObject*(*dll_PyList_Append)(PyObject *, PyObject *); + static PyObject*(*dll_PyList_New)(PyInt size); + static int(*dll_PyList_SetItem)(PyObject *, PyInt, PyObject *); + static PyInt(*dll_PyList_Size)(PyObject *); + static PyTypeObject* dll_PyList_Type; + static PyObject*(*dll_PyImport_ImportModule)(const char *); + static PyObject*(*dll_PyDict_New)(void); + static PyObject*(*dll_PyDict_GetItemString)(PyObject *, const char *); + static PyObject*(*dll_PyModule_GetDict)(PyObject *); + static int(*dll_PyRun_SimpleString)(char *); + static char*(*dll_PyString_AsString)(PyObject *); + static PyObject*(*dll_PyString_FromString)(const char *); + static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt); + static PyInt(*dll_PyString_Size)(PyObject *); + static PyTypeObject* dll_PyString_Type; + static int(*dll_PySys_SetObject)(char *, PyObject *); + static int(*dll_PySys_SetArgv)(int, char **); + static PyTypeObject* dll_PyType_Type; +--- 243,290 ---- + # ifdef PY_CAN_RECURSE + static PyGILState_STATE (*dll_PyGILState_Ensure)(void); + static void (*dll_PyGILState_Release)(PyGILState_STATE); +! # endif + static long(*dll_PyInt_AsLong)(PyObject *); + static PyObject*(*dll_PyInt_FromLong)(long); ++ static long(*dll_PyLong_AsLong)(PyObject *); ++ static PyObject*(*dll_PyLong_FromLong)(long); + static PyTypeObject* dll_PyInt_Type; ++ static PyTypeObject* dll_PyLong_Type; + static PyObject*(*dll_PyList_GetItem)(PyObject *, PyInt); + static PyObject*(*dll_PyList_Append)(PyObject *, PyObject *); + static PyObject*(*dll_PyList_New)(PyInt size); + static int(*dll_PyList_SetItem)(PyObject *, PyInt, PyObject *); + static PyInt(*dll_PyList_Size)(PyObject *); + static PyTypeObject* dll_PyList_Type; ++ static int (*dll_PySequence_Check)(PyObject *); ++ static PyInt(*dll_PySequence_Size)(PyObject *); ++ static PyObject*(*dll_PySequence_GetItem)(PyObject *, PyInt); ++ static PyInt(*dll_PyTuple_Size)(PyObject *); ++ static PyObject*(*dll_PyTuple_GetItem)(PyObject *, PyInt); ++ static PyTypeObject* dll_PyTuple_Type; + static PyObject*(*dll_PyImport_ImportModule)(const char *); + static PyObject*(*dll_PyDict_New)(void); + static PyObject*(*dll_PyDict_GetItemString)(PyObject *, const char *); ++ static int (*dll_PyDict_Next)(PyObject *, Py_ssize_t *, PyObject **, PyObject **); ++ # ifndef PY_NO_MAPPING_ITEMS ++ static PyObject* (*dll_PyMapping_Items)(PyObject *); ++ # endif ++ static PyObject* (*dll_PyObject_CallMethod)(PyObject *, char *, PyObject *); ++ static int (*dll_PyMapping_Check)(PyObject *); ++ static PyObject* (*dll_PyIter_Next)(PyObject *); + static PyObject*(*dll_PyModule_GetDict)(PyObject *); + static int(*dll_PyRun_SimpleString)(char *); ++ static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *); + static char*(*dll_PyString_AsString)(PyObject *); + static PyObject*(*dll_PyString_FromString)(const char *); + static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt); + static PyInt(*dll_PyString_Size)(PyObject *); + static PyTypeObject* dll_PyString_Type; ++ static PyTypeObject* dll_PyUnicode_Type; ++ static PyObject *(*PyUnicodeUCS4_AsEncodedString)(PyObject *, char *, char *); ++ static double(*dll_PyFloat_AsDouble)(PyObject *); ++ static PyObject*(*dll_PyFloat_FromDouble)(double); ++ static PyTypeObject* dll_PyFloat_Type; + static int(*dll_PySys_SetObject)(char *, PyObject *); + static int(*dll_PySys_SetArgv)(int, char **); + static PyTypeObject* dll_PyType_Type; +*************** +*** 235,246 **** +--- 292,306 ---- + static PyObject*(*dll_Py_BuildValue)(char *, ...); + static PyObject*(*dll_Py_FindMethod)(struct PyMethodDef[], PyObject *, char *); + static PyObject*(*dll_Py_InitModule4)(char *, struct PyMethodDef *, char *, PyObject *, int); ++ static PyObject*(*dll_PyImport_AddModule)(char *); + static void(*dll_Py_SetPythonHome)(char *home); + static void(*dll_Py_Initialize)(void); + static void(*dll_Py_Finalize)(void); + static int(*dll_Py_IsInitialized)(void); + static PyObject*(*dll__PyObject_New)(PyTypeObject *, PyObject *); + static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *); ++ static PyObject* (*dll_PyObject_GetIter)(PyObject *); ++ static iternextfunc dll__PyObject_NextNotImplemented; + static PyObject* dll__Py_NoneStruct; + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 + static int (*dll_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *); +*************** +*** 249,254 **** +--- 309,316 ---- + static void* (*dll_PyObject_Malloc)(size_t); + static void (*dll_PyObject_Free)(void*); + # endif ++ static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor); ++ static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *); + + static HINSTANCE hinstPython = 0; /* Instance of python.dll */ + +*************** +*** 278,283 **** +--- 340,346 ---- + {"PyArg_Parse", (PYTHON_PROC*)&dll_PyArg_Parse}, + {"PyArg_ParseTuple", (PYTHON_PROC*)&dll_PyArg_ParseTuple}, + {"PyMem_Free", (PYTHON_PROC*)&dll_PyMem_Free}, ++ {"PyMem_Malloc", (PYTHON_PROC*)&dll_PyMem_Malloc}, + {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString}, + {"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument}, + {"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear}, +*************** +*** 294,316 **** +--- 357,402 ---- + # endif + {"PyInt_AsLong", (PYTHON_PROC*)&dll_PyInt_AsLong}, + {"PyInt_FromLong", (PYTHON_PROC*)&dll_PyInt_FromLong}, ++ {"PyLong_AsLong", (PYTHON_PROC*)&dll_PyLong_AsLong}, ++ {"PyLong_FromLong", (PYTHON_PROC*)&dll_PyLong_FromLong}, + {"PyInt_Type", (PYTHON_PROC*)&dll_PyInt_Type}, ++ {"PyLong_Type", (PYTHON_PROC*)&dll_PyLong_Type}, + {"PyList_GetItem", (PYTHON_PROC*)&dll_PyList_GetItem}, + {"PyList_Append", (PYTHON_PROC*)&dll_PyList_Append}, + {"PyList_New", (PYTHON_PROC*)&dll_PyList_New}, + {"PyList_SetItem", (PYTHON_PROC*)&dll_PyList_SetItem}, + {"PyList_Size", (PYTHON_PROC*)&dll_PyList_Size}, + {"PyList_Type", (PYTHON_PROC*)&dll_PyList_Type}, ++ {"PySequence_GetItem", (PYTHON_PROC*)&dll_PySequence_GetItem}, ++ {"PySequence_Size", (PYTHON_PROC*)&dll_PySequence_Size}, ++ {"PySequence_Check", (PYTHON_PROC*)&dll_PySequence_Check}, ++ {"PyTuple_GetItem", (PYTHON_PROC*)&dll_PyTuple_GetItem}, ++ {"PyTuple_Size", (PYTHON_PROC*)&dll_PyTuple_Size}, ++ {"PyTuple_Type", (PYTHON_PROC*)&dll_PyTuple_Type}, + {"PyImport_ImportModule", (PYTHON_PROC*)&dll_PyImport_ImportModule}, + {"PyDict_GetItemString", (PYTHON_PROC*)&dll_PyDict_GetItemString}, ++ {"PyDict_Next", (PYTHON_PROC*)&dll_PyDict_Next}, + {"PyDict_New", (PYTHON_PROC*)&dll_PyDict_New}, ++ # ifndef PY_NO_MAPPING_ITEMS ++ {"PyMapping_Items", (PYTHON_PROC*)&dll_PyMapping_Items}, ++ # endif ++ {"PyObject_CallMethod", (PYTHON_PROC*)&dll_PyObject_CallMethod}, ++ {"PyMapping_Check", (PYTHON_PROC*)&dll_PyMapping_Check}, ++ {"PyIter_Next", (PYTHON_PROC*)&dll_PyIter_Next}, + {"PyModule_GetDict", (PYTHON_PROC*)&dll_PyModule_GetDict}, + {"PyRun_SimpleString", (PYTHON_PROC*)&dll_PyRun_SimpleString}, ++ {"PyRun_String", (PYTHON_PROC*)&dll_PyRun_String}, + {"PyString_AsString", (PYTHON_PROC*)&dll_PyString_AsString}, + {"PyString_FromString", (PYTHON_PROC*)&dll_PyString_FromString}, + {"PyString_FromStringAndSize", (PYTHON_PROC*)&dll_PyString_FromStringAndSize}, + {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size}, + {"PyString_Type", (PYTHON_PROC*)&dll_PyString_Type}, ++ {"PyUnicode_Type", (PYTHON_PROC*)&dll_PyUnicode_Type}, ++ {"PyUnicodeUCS4_AsEncodedString", (PYTHON_PROC*)&dll_PyUnicodeUCS4_AsEncodedString}, ++ {"PyFloat_Type", (PYTHON_PROC*)&dll_PyFloat_Type}, ++ {"PyFloat_AsDouble", (PYTHON_PROC*)&dll_PyFloat_AsDouble}, ++ {"PyFloat_FromDouble", (PYTHON_PROC*)&dll_PyFloat_FromDouble}, ++ {"PyImport_AddModule", (PYTHON_PROC*)&dll_PyImport_AddModule}, + {"PySys_SetObject", (PYTHON_PROC*)&dll_PySys_SetObject}, + {"PySys_SetArgv", (PYTHON_PROC*)&dll_PySys_SetArgv}, + {"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type}, +*************** +*** 328,333 **** +--- 414,421 ---- + {"Py_IsInitialized", (PYTHON_PROC*)&dll_Py_IsInitialized}, + {"_PyObject_New", (PYTHON_PROC*)&dll__PyObject_New}, + {"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init}, ++ {"PyObject_GetIter", (PYTHON_PROC*)&dll_PyObject_GetIter}, ++ {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&dll__PyObject_NextNotImplemented}, + {"_Py_NoneStruct", (PYTHON_PROC*)&dll__Py_NoneStruct}, + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 + {"PyType_IsSubtype", (PYTHON_PROC*)&dll_PyType_IsSubtype}, +*************** +*** 336,341 **** +--- 424,431 ---- + {"PyObject_Malloc", (PYTHON_PROC*)&dll_PyObject_Malloc}, + {"PyObject_Free", (PYTHON_PROC*)&dll_PyObject_Free}, + # endif ++ {"PyCapsule_New", (PYTHON_PROC*)&dll_PyCapsule_New}, ++ {"PyCapsule_GetPointer", (PYTHON_PROC*)&dll_PyCapsule_GetPointer}, + {"", NULL}, + }; + +*************** +*** 434,443 **** +--- 524,548 ---- + + static PyObject *BufferNew (buf_T *); + static PyObject *WindowNew(win_T *); ++ static PyObject *DictionaryNew(dict_T *); + static PyObject *LineToString(const char *); + + static PyTypeObject RangeType; + ++ 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 ++ + /* + * Include the code shared with if_python3.c + */ +*************** +*** 451,456 **** +--- 556,563 ---- + static PyInt RangeStart; + static PyInt RangeEnd; + ++ static PyObject *globals; ++ + static void PythonIO_Flush(void); + static int PythonIO_Init(void); + static int PythonMod_Init(void); +*************** +*** 466,473 **** + * 1. Python interpreter main program. + */ + +- static int initialised = 0; +- + #if PYTHON_API_VERSION < 1007 /* Python 1.4 */ + typedef PyObject PyThreadState; + #endif +--- 573,578 ---- +*************** +*** 581,586 **** +--- 686,693 ---- + if (PythonMod_Init()) + goto fail; + ++ globals = PyModule_GetDict(PyImport_AddModule("__main__")); ++ + /* Remove the element from sys.path that was added because of our + * argv[0] value in PythonMod_Init(). Previously we used an empty + * string, but dependinding on the OS we then get an empty entry or +*************** +*** 609,615 **** + * External interface + */ + static void +! DoPythonCommand(exarg_T *eap, const char *cmd) + { + #ifndef PY_CAN_RECURSE + static int recursive = 0; +--- 716,722 ---- + * External interface + */ + static void +! DoPythonCommand(exarg_T *eap, const char *cmd, typval_T *rettv) + { + #ifndef PY_CAN_RECURSE + static int recursive = 0; +*************** +*** 639,646 **** + if (Python_Init()) + goto theend; + +! RangeStart = eap->line1; +! RangeEnd = eap->line2; + Python_Release_Vim(); /* leave vim */ + + #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) +--- 746,761 ---- + if (Python_Init()) + goto theend; + +! if (rettv == NULL) +! { +! RangeStart = eap->line1; +! RangeEnd = eap->line2; +! } +! else +! { +! RangeStart = (PyInt) curwin->w_cursor.lnum; +! RangeEnd = RangeStart; +! } + Python_Release_Vim(); /* leave vim */ + + #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) +*************** +*** 658,664 **** + + Python_RestoreThread(); /* enter python */ + +! PyRun_SimpleString((char *)(cmd)); + + Python_SaveThread(); /* leave python */ + +--- 773,795 ---- + + Python_RestoreThread(); /* enter python */ + +! if (rettv == NULL) +! PyRun_SimpleString((char *)(cmd)); +! else +! { +! PyObject *r; +! +! r = PyRun_String((char *)(cmd), Py_eval_input, globals, globals); +! if (r == NULL) +! EMSG(_("E858: Eval did not return a valid python object")); +! else +! { +! if (ConvertFromPyObject(r, rettv) == -1) +! EMSG(_("E859: Failed to convert returned python object to vim value")); +! Py_DECREF(r); +! } +! PyErr_Clear(); +! } + + Python_SaveThread(); /* leave python */ + +*************** +*** 680,686 **** + #ifndef PY_CAN_RECURSE + --recursive; + #endif +! return; /* keeps lint happy */ + } + + /* +--- 811,817 ---- + #ifndef PY_CAN_RECURSE + --recursive; + #endif +! return; + } + + /* +*************** +*** 695,703 **** + if (!eap->skip) + { + if (script == NULL) +! DoPythonCommand(eap, (char *)eap->arg); + else +! DoPythonCommand(eap, (char *)script); + } + vim_free(script); + } +--- 826,834 ---- + if (!eap->skip) + { + if (script == NULL) +! DoPythonCommand(eap, (char *)eap->arg, NULL); + else +! DoPythonCommand(eap, (char *)script, NULL); + } + vim_free(script); + } +*************** +*** 743,749 **** + *p++ = '\0'; + + /* Execute the file */ +! DoPythonCommand(eap, buffer); + } + + /****************************************************** +--- 874,880 ---- + *p++ = '\0'; + + /* Execute the file */ +! DoPythonCommand(eap, buffer, NULL); + } + + /****************************************************** +*************** +*** 765,778 **** + 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; + } +--- 896,911 ---- + 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; + } +*************** +*** 800,805 **** +--- 933,941 ---- + * 3. Implementation of the Vim module for Python + */ + ++ static PyObject *ConvertToPyObject(typval_T *); ++ static int ConvertFromPyObject(PyObject *, typval_T *); ++ + /* Window type - Implementation functions + * -------------------------------------- + */ +*************** +*** 1441,1446 **** +--- 1577,1748 ---- + return result; + } + ++ static void DictionaryDestructor(PyObject *); ++ static PyObject *DictionaryGetattr(PyObject *, char*); ++ ++ static PyMappingMethods DictionaryAsMapping = { ++ (PyInquiry) DictionaryLength, ++ (binaryfunc) DictionaryItem, ++ (objobjargproc) DictionaryAssItem, ++ }; ++ ++ static PyTypeObject DictionaryType = { ++ PyObject_HEAD_INIT(0) ++ 0, ++ "vimdictionary", ++ sizeof(DictionaryObject), ++ 0, ++ ++ (destructor) DictionaryDestructor, ++ (printfunc) 0, ++ (getattrfunc) DictionaryGetattr, ++ (setattrfunc) 0, ++ (cmpfunc) 0, ++ (reprfunc) 0, ++ ++ 0, /* as number */ ++ 0, /* as sequence */ ++ &DictionaryAsMapping, /* as mapping */ ++ ++ (hashfunc) 0, ++ (ternaryfunc) 0, ++ (reprfunc) 0, ++ }; ++ ++ static void ++ DictionaryDestructor(PyObject *self) ++ { ++ DictionaryObject *this = ((DictionaryObject *) (self)); ++ ++ pyll_remove(&this->ref, &lastdict); ++ dict_unref(this->dict); ++ ++ Py_DECREF(self); ++ } ++ ++ static PyObject * ++ DictionaryGetattr(PyObject *self, char *name) ++ { ++ return Py_FindMethod(DictionaryMethods, self, name); ++ } ++ ++ static void ListDestructor(PyObject *); ++ static PyObject *ListGetattr(PyObject *, char *); ++ ++ static PySequenceMethods ListAsSeq = { ++ (PyInquiry) ListLength, ++ (binaryfunc) 0, ++ (PyIntArgFunc) 0, ++ (PyIntArgFunc) ListItem, ++ (PyIntIntArgFunc) ListSlice, ++ (PyIntObjArgProc) ListAssItem, ++ (PyIntIntObjArgProc) ListAssSlice, ++ (objobjproc) 0, ++ #if PY_MAJOR_VERSION >= 2 ++ (binaryfunc) ListConcatInPlace, ++ 0, ++ #endif ++ }; ++ ++ static PyTypeObject ListType = { ++ PyObject_HEAD_INIT(0) ++ 0, ++ "vimlist", ++ sizeof(ListObject), ++ 0, ++ ++ (destructor) ListDestructor, ++ (printfunc) 0, ++ (getattrfunc) ListGetattr, ++ (setattrfunc) 0, ++ (cmpfunc) 0, ++ (reprfunc) 0, ++ ++ 0, /* as number */ ++ &ListAsSeq, /* as sequence */ ++ 0, /* as mapping */ ++ ++ (hashfunc) 0, ++ (ternaryfunc) 0, ++ (reprfunc) 0, ++ }; ++ ++ static void ++ ListDestructor(PyObject *self) ++ { ++ ListObject *this = ((ListObject *) (self)); ++ ++ pyll_remove(&this->ref, &lastlist); ++ list_unref(this->list); ++ ++ Py_DECREF(self); ++ } ++ ++ static PyObject * ++ ListGetattr(PyObject *self, char *name) ++ { ++ return Py_FindMethod(ListMethods, self, name); ++ } ++ ++ static void FunctionDestructor(PyObject *); ++ static PyObject *FunctionGetattr(PyObject *, char *); ++ ++ static PyTypeObject FunctionType = { ++ PyObject_HEAD_INIT(0) ++ 0, ++ "vimfunction", ++ sizeof(FunctionObject), ++ 0, ++ ++ (destructor) FunctionDestructor, ++ (printfunc) 0, ++ (getattrfunc) FunctionGetattr, ++ (setattrfunc) 0, ++ (cmpfunc) 0, ++ (reprfunc) 0, ++ ++ 0, /* as number */ ++ 0, /* as sequence */ ++ 0, /* as mapping */ ++ ++ (hashfunc) 0, ++ (ternaryfunc) FunctionCall, ++ (reprfunc) 0, ++ }; ++ ++ static void ++ FunctionDestructor(PyObject *self) ++ { ++ FunctionObject *this = (FunctionObject *) (self); ++ ++ func_unref(this->name); ++ PyMem_Del(this->name); ++ ++ Py_DECREF(self); ++ } ++ ++ static PyObject * ++ FunctionGetattr(PyObject *self, char *name) ++ { ++ FunctionObject *this = (FunctionObject *)(self); ++ ++ if (strcmp(name, "name") == 0) ++ return PyString_FromString((char *)(this->name)); ++ else ++ return Py_FindMethod(FunctionMethods, self, name); ++ } ++ ++ void ++ do_pyeval (char_u *str, typval_T *rettv) ++ { ++ DoPythonCommand(NULL, (char *) str, rettv); ++ switch(rettv->v_type) ++ { ++ 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; ++ } ++ } + + /* Don't generate a prototype for the next function, it generates an error on + * newer Python versions. */ +*************** +*** 1453,1458 **** +--- 1755,1766 ---- + } + #endif /* Python 1.4 */ + ++ void ++ set_ref_in_python (int copyID) ++ { ++ set_ref_in_py(copyID); ++ } ++ + static void + init_structs(void) + { +*** ../vim-7.3.568/src/if_python3.c 2012-02-04 20:17:21.000000000 +0100 +--- src/if_python3.c 2012-06-29 11:54:10.000000000 +0200 +*************** +*** 77,83 **** + + #define PyInt Py_ssize_t + #define PyString_Check(obj) PyUnicode_Check(obj) +! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER); + #define PyString_FreeBytes(obj) Py_XDECREF(bytes) + #define PyString_AsString(obj) PyBytes_AsString(obj) + #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) +--- 77,83 ---- + + #define PyInt Py_ssize_t + #define PyString_Check(obj) PyUnicode_Check(obj) +! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER) + #define PyString_FreeBytes(obj) Py_XDECREF(bytes) + #define PyString_AsString(obj) PyBytes_AsString(obj) + #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) +*************** +*** 109,114 **** +--- 109,115 ---- + # undef PyArg_ParseTuple + # define PyArg_ParseTuple py3_PyArg_ParseTuple + # define PyMem_Free py3_PyMem_Free ++ # define PyMem_Malloc py3_PyMem_Malloc + # define PyDict_SetItemString py3_PyDict_SetItemString + # define PyErr_BadArgument py3_PyErr_BadArgument + # define PyErr_Clear py3_PyErr_Clear +*************** +*** 128,141 **** +--- 129,155 ---- + # define PyList_New py3_PyList_New + # define PyList_SetItem py3_PyList_SetItem + # define PyList_Size py3_PyList_Size ++ # define PySequence_Check py3_PySequence_Check ++ # define PySequence_Size py3_PySequence_Size ++ # define PySequence_GetItem py3_PySequence_GetItem ++ # define PyTuple_Size py3_PyTuple_Size ++ # define PyTuple_GetItem py3_PyTuple_GetItem + # define PySlice_GetIndicesEx py3_PySlice_GetIndicesEx + # define PyImport_ImportModule py3_PyImport_ImportModule ++ # define PyImport_AddModule py3_PyImport_AddModule + # define PyObject_Init py3__PyObject_Init + # define PyDict_New py3_PyDict_New + # define PyDict_GetItemString py3_PyDict_GetItemString ++ # define PyDict_Next py3_PyDict_Next ++ # define PyMapping_Check py3_PyMapping_Check ++ # define PyMapping_Items py3_PyMapping_Items ++ # define PyIter_Next py3_PyIter_Next ++ # define PyObject_GetIter py3_PyObject_GetIter + # define PyModule_GetDict py3_PyModule_GetDict + #undef PyRun_SimpleString + # define PyRun_SimpleString py3_PyRun_SimpleString ++ #undef PyRun_String ++ # define PyRun_String py3_PyRun_String + # define PySys_SetObject py3_PySys_SetObject + # define PySys_SetArgv py3_PySys_SetArgv + # define PyType_Type (*py3_PyType_Type) +*************** +*** 147,152 **** +--- 161,167 ---- + # define Py_Finalize py3_Py_Finalize + # define Py_IsInitialized py3_Py_IsInitialized + # define _Py_NoneStruct (*py3__Py_NoneStruct) ++ # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented) + # define PyModule_AddObject py3_PyModule_AddObject + # define PyImport_AppendInittab py3_PyImport_AppendInittab + # define _PyUnicode_AsString py3__PyUnicode_AsString +*************** +*** 154,161 **** +--- 169,181 ---- + # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString + # undef PyBytes_AsString + # define PyBytes_AsString py3_PyBytes_AsString ++ # undef PyBytes_FromString ++ # define PyBytes_FromString py3_PyBytes_FromString ++ # define PyFloat_FromDouble py3_PyFloat_FromDouble ++ # define PyFloat_AsDouble py3_PyFloat_AsDouble + # define PyObject_GenericGetAttr py3_PyObject_GenericGetAttr + # define PySlice_Type (*py3_PySlice_Type) ++ # define PyFloat_Type (*py3_PyFloat_Type) + # define PyErr_NewException py3_PyErr_NewException + # ifdef Py_DEBUG + # define _Py_NegativeRefcount py3__Py_NegativeRefcount +*************** +*** 174,179 **** +--- 194,202 ---- + # define PyUnicode_FromString py3_PyUnicode_FromString + # undef PyUnicode_Decode + # define PyUnicode_Decode py3_PyUnicode_Decode ++ # define PyType_IsSubtype py3_PyType_IsSubtype ++ # define PyCapsule_New py3_PyCapsule_New ++ # define PyCapsule_GetPointer py3_PyCapsule_GetPointer + + # ifdef Py_DEBUG + # undef PyObject_NEW +*************** +*** 194,215 **** +--- 217,250 ---- + static int (*py3_PySys_SetObject)(char *, PyObject *); + static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *); + static Py_ssize_t (*py3_PyList_Size)(PyObject *); ++ static int (*py3_PySequence_Check)(PyObject *); ++ static Py_ssize_t (*py3_PySequence_Size)(PyObject *); ++ static PyObject* (*py3_PySequence_GetItem)(PyObject *, Py_ssize_t); ++ static Py_ssize_t (*py3_PyTuple_Size)(PyObject *); ++ static PyObject* (*py3_PyTuple_GetItem)(PyObject *, Py_ssize_t); ++ static int (*py3_PyMapping_Check)(PyObject *); ++ static PyObject* (*py3_PyMapping_Items)(PyObject *); + static int (*py3_PySlice_GetIndicesEx)(PyObject *r, Py_ssize_t length, + Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength); + static PyObject* (*py3_PyErr_NoMemory)(void); + static void (*py3_Py_Finalize)(void); + static void (*py3_PyErr_SetString)(PyObject *, const char *); + static int (*py3_PyRun_SimpleString)(char *); ++ static PyObject* (*py3_PyRun_String)(char *, int, PyObject *, PyObject *); + static PyObject* (*py3_PyList_GetItem)(PyObject *, Py_ssize_t); + 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 *); + static PyObject* (*py3_PyDict_GetItemString)(PyObject *, const char *); ++ static int (*py3_PyDict_Next)(PyObject *, Py_ssize_t *, PyObject **, PyObject **); + static PyObject* (*py3_PyLong_FromLong)(long); + static PyObject* (*py3_PyDict_New)(void); ++ static PyObject* (*py3_PyIter_Next)(PyObject *); ++ static PyObject* (*py3_PyObject_GetIter)(PyObject *); + static PyObject* (*py3_Py_BuildValue)(char *, ...); + static int (*py3_PyType_Ready)(PyTypeObject *type); + static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); +*************** +*** 224,244 **** +--- 259,287 ---- + static int (*py3_PyArg_Parse)(PyObject *, char *, ...); + static int (*py3_PyArg_ParseTuple)(PyObject *, char *, ...); + static int (*py3_PyMem_Free)(void *); ++ static void* (*py3_PyMem_Malloc)(size_t); + static int (*py3_Py_IsInitialized)(void); + static void (*py3_PyErr_Clear)(void); + static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *); ++ static iternextfunc py3__PyObject_NextNotImplemented; + static PyObject* py3__Py_NoneStruct; + 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); + static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors); + static char* (*py3_PyBytes_AsString)(PyObject *bytes); ++ static PyObject* (*py3_PyBytes_FromString)(char *str); ++ static PyObject* (*py3_PyFloat_FromDouble)(double num); ++ static double (*py3_PyFloat_AsDouble)(PyObject *); + static PyObject* (*py3_PyObject_GenericGetAttr)(PyObject *obj, PyObject *name); + 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_PySlice_Type; ++ static PyTypeObject* py3_PyFloat_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 *); + # ifdef Py_DEBUG + static void (*py3__Py_NegativeRefcount)(const char *fname, int lineno, PyObject *op); + static Py_ssize_t* py3__Py_RefTotal; +*************** +*** 249,254 **** +--- 292,298 ---- + static void (*py3_PyObject_Free)(void*); + static void* (*py3_PyObject_Malloc)(size_t); + # endif ++ static int (*py3_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *); + + static HINSTANCE hinstPy3 = 0; /* Instance of python.dll */ + +*************** +*** 280,304 **** +--- 324,361 ---- + {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize}, + {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, + {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free}, ++ {"PyMem_Malloc", (PYTHON_PROC*)&py3_PyMem_Malloc}, + {"PyList_New", (PYTHON_PROC*)&py3_PyList_New}, + {"PyGILState_Ensure", (PYTHON_PROC*)&py3_PyGILState_Ensure}, + {"PyGILState_Release", (PYTHON_PROC*)&py3_PyGILState_Release}, + {"PySys_SetObject", (PYTHON_PROC*)&py3_PySys_SetObject}, + {"PyList_Append", (PYTHON_PROC*)&py3_PyList_Append}, + {"PyList_Size", (PYTHON_PROC*)&py3_PyList_Size}, ++ {"PySequence_Check", (PYTHON_PROC*)&py3_PySequence_Check}, ++ {"PySequence_Size", (PYTHON_PROC*)&py3_PySequence_Size}, ++ {"PySequence_GetItem", (PYTHON_PROC*)&py3_PySequence_GetItem}, ++ {"PyTuple_Size", (PYTHON_PROC*)&py3_PyTuple_Size}, ++ {"PyTuple_GetItem", (PYTHON_PROC*)&py3_PyTuple_GetItem}, + {"PySlice_GetIndicesEx", (PYTHON_PROC*)&py3_PySlice_GetIndicesEx}, + {"PyErr_NoMemory", (PYTHON_PROC*)&py3_PyErr_NoMemory}, + {"Py_Finalize", (PYTHON_PROC*)&py3_Py_Finalize}, + {"PyErr_SetString", (PYTHON_PROC*)&py3_PyErr_SetString}, + {"PyRun_SimpleString", (PYTHON_PROC*)&py3_PyRun_SimpleString}, ++ {"PyRun_String", (PYTHON_PROC*)&py3_PyRun_String}, + {"PyList_GetItem", (PYTHON_PROC*)&py3_PyList_GetItem}, + {"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}, + {"PyDict_GetItemString", (PYTHON_PROC*)&py3_PyDict_GetItemString}, ++ {"PyDict_Next", (PYTHON_PROC*)&py3_PyDict_Next}, ++ {"PyMapping_Check", (PYTHON_PROC*)&py3_PyMapping_Check}, ++ {"PyMapping_Items", (PYTHON_PROC*)&py3_PyMapping_Items}, ++ {"PyIter_Next", (PYTHON_PROC*)&py3_PyIter_Next}, ++ {"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}, +*************** +*** 311,316 **** +--- 368,374 ---- + {"PyEval_SaveThread", (PYTHON_PROC*)&py3_PyEval_SaveThread}, + {"PyArg_Parse", (PYTHON_PROC*)&py3_PyArg_Parse}, + {"Py_IsInitialized", (PYTHON_PROC*)&py3_Py_IsInitialized}, ++ {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&py3__PyObject_NextNotImplemented}, + {"_Py_NoneStruct", (PYTHON_PROC*)&py3__Py_NoneStruct}, + {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear}, + {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init}, +*************** +*** 318,328 **** +--- 376,390 ---- + {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, + {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, + {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, ++ {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString}, ++ {"PyFloat_FromDouble", (PYTHON_PROC*)&py3_PyFloat_FromDouble}, ++ {"PyFloat_AsDouble", (PYTHON_PROC*)&py3_PyFloat_AsDouble}, + {"PyObject_GenericGetAttr", (PYTHON_PROC*)&py3_PyObject_GenericGetAttr}, + {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2}, + {"PyType_GenericAlloc", (PYTHON_PROC*)&py3_PyType_GenericAlloc}, + {"PyType_GenericNew", (PYTHON_PROC*)&py3_PyType_GenericNew}, + {"PySlice_Type", (PYTHON_PROC*)&py3_PySlice_Type}, ++ {"PyFloat_Type", (PYTHON_PROC*)&py3_PyFloat_Type}, + {"PyErr_NewException", (PYTHON_PROC*)&py3_PyErr_NewException}, + # ifdef Py_DEBUG + {"_Py_NegativeRefcount", (PYTHON_PROC*)&py3__Py_NegativeRefcount}, +*************** +*** 334,339 **** +--- 396,404 ---- + {"PyObject_Malloc", (PYTHON_PROC*)&py3_PyObject_Malloc}, + {"PyObject_Free", (PYTHON_PROC*)&py3_PyObject_Free}, + # endif ++ {"PyType_IsSubtype", (PYTHON_PROC*)&py3_PyType_IsSubtype}, ++ {"PyCapsule_New", (PYTHON_PROC*)&py3_PyCapsule_New}, ++ {"PyCapsule_GetPointer", (PYTHON_PROC*)&py3_PyCapsule_GetPointer}, + {"", NULL}, + }; + +*************** +*** 472,482 **** +--- 537,577 ---- + + static PyTypeObject RangeType; + ++ static int py3initialised = 0; ++ ++ #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 \ ++ { \ ++ 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 + */ + #include "if_py_both.h" + ++ #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0) ++ + static void + call_PyObject_Free(void *p) + { +*************** +*** 506,511 **** +--- 601,608 ---- + static Py_ssize_t RangeStart; + static Py_ssize_t RangeEnd; + ++ static PyObject *globals; ++ + static int PythonIO_Init(void); + static void PythonIO_Fini(void); + PyMODINIT_FUNC Py3Init_vim(void); +*************** +*** 514,521 **** + * 1. Python interpreter main program. + */ + +- static int py3initialised = 0; +- + static PyGILState_STATE pygilstate = PyGILState_UNLOCKED; + + void +--- 611,616 ---- +*************** +*** 593,598 **** +--- 688,695 ---- + + PyImport_AppendInittab("vim", Py3Init_vim); + ++ globals = PyModule_GetDict(PyImport_AddModule("__main__")); ++ + /* Remove the element from sys.path that was added because of our + * argv[0] value in Py3Init_vim(). Previously we used an empty + * string, but dependinding on the OS we then get an empty entry or +*************** +*** 629,635 **** + * External interface + */ + static void +! DoPy3Command(exarg_T *eap, const char *cmd) + { + #if defined(MACOS) && !defined(MACOS_X_UNIX) + GrafPtr oldPort; +--- 726,732 ---- + * External interface + */ + static void +! DoPy3Command(exarg_T *eap, const char *cmd, typval_T *rettv) + { + #if defined(MACOS) && !defined(MACOS_X_UNIX) + GrafPtr oldPort; +*************** +*** 649,656 **** + if (Python3_Init()) + goto theend; + +! RangeStart = eap->line1; +! RangeEnd = eap->line2; + Python_Release_Vim(); /* leave vim */ + + #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) +--- 746,761 ---- + if (Python3_Init()) + goto theend; + +! if (rettv == NULL) +! { +! RangeStart = eap->line1; +! RangeEnd = eap->line2; +! } +! else +! { +! RangeStart = (PyInt) curwin->w_cursor.lnum; +! RangeEnd = RangeStart; +! } + Python_Release_Vim(); /* leave vim */ + + #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) +*************** +*** 674,680 **** + (char *)ENC_OPT, CODEC_ERROR_HANDLER); + cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", CODEC_ERROR_HANDLER); + Py_XDECREF(cmdstr); +! PyRun_SimpleString(PyBytes_AsString(cmdbytes)); + Py_XDECREF(cmdbytes); + + PyGILState_Release(pygilstate); +--- 779,802 ---- + (char *)ENC_OPT, CODEC_ERROR_HANDLER); + cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", CODEC_ERROR_HANDLER); + Py_XDECREF(cmdstr); +! if (rettv == NULL) +! PyRun_SimpleString(PyBytes_AsString(cmdbytes)); +! else +! { +! PyObject *r; +! +! r = PyRun_String(PyBytes_AsString(cmdbytes), Py_eval_input, +! globals, globals); +! if (r == NULL) +! EMSG(_("E860: Eval did not return a valid python 3 object")); +! else +! { +! if (ConvertFromPyObject(r, rettv) == -1) +! EMSG(_("E861: Failed to convert returned python 3 object to vim value")); +! Py_DECREF(r); +! } +! PyErr_Clear(); +! } + Py_XDECREF(cmdbytes); + + PyGILState_Release(pygilstate); +*************** +*** 709,717 **** + if (!eap->skip) + { + if (script == NULL) +! DoPy3Command(eap, (char *)eap->arg); + else +! DoPy3Command(eap, (char *)script); + } + vim_free(script); + } +--- 831,839 ---- + if (!eap->skip) + { + if (script == NULL) +! DoPy3Command(eap, (char *)eap->arg, NULL); + else +! DoPy3Command(eap, (char *)script, NULL); + } + vim_free(script); + } +*************** +*** 772,778 **** + + + /* Execute the file */ +! DoPy3Command(eap, buffer); + } + + /****************************************************** +--- 894,900 ---- + + + /* Execute the file */ +! DoPy3Command(eap, buffer, NULL); + } + + /****************************************************** +*************** +*** 802,815 **** + 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; + } +--- 924,939 ---- + 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; + } +*************** +*** 1030,1049 **** + static PyObject * + BufferSubscript(PyObject *self, PyObject* idx) + { +! if (PyLong_Check(idx)) { + long _idx = PyLong_AsLong(idx); + return BufferItem(self,_idx); +! } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + + if (PySlice_GetIndicesEx((PyObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, +! &step, &slicelen) < 0) { + return NULL; + } + return BufferSlice(self, start, stop); +! } else { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return NULL; + } +--- 1154,1178 ---- + static PyObject * + BufferSubscript(PyObject *self, PyObject* idx) + { +! if (PyLong_Check(idx)) +! { + long _idx = PyLong_AsLong(idx); + return BufferItem(self,_idx); +! } else if (PySlice_Check(idx)) +! { + Py_ssize_t start, stop, step, slicelen; + + if (PySlice_GetIndicesEx((PyObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, +! &step, &slicelen) < 0) +! { + return NULL; + } + return BufferSlice(self, start, stop); +! } +! else +! { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return NULL; + } +*************** +*** 1052,1075 **** + static Py_ssize_t + BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val) + { +! if (PyLong_Check(idx)) { + long n = PyLong_AsLong(idx); + return RBAsItem((BufferObject *)(self), n, val, 1, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, + NULL); +! } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + + if (PySlice_GetIndicesEx((PyObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, +! &step, &slicelen) < 0) { + return -1; + } + return RBAsSlice((BufferObject *)(self), start, stop, val, 1, + (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, + NULL); +! } else { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return -1; + } +--- 1181,1209 ---- + static Py_ssize_t + BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val) + { +! if (PyLong_Check(idx)) +! { + long n = PyLong_AsLong(idx); + return RBAsItem((BufferObject *)(self), n, val, 1, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, + NULL); +! } else if (PySlice_Check(idx)) +! { + Py_ssize_t start, stop, step, slicelen; + + if (PySlice_GetIndicesEx((PyObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, +! &step, &slicelen) < 0) +! { + return -1; + } + return RBAsSlice((BufferObject *)(self), start, stop, val, 1, + (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, + NULL); +! } +! else +! { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return -1; + } +*************** +*** 1142,1161 **** + static PyObject * + RangeSubscript(PyObject *self, PyObject* idx) + { +! if (PyLong_Check(idx)) { + long _idx = PyLong_AsLong(idx); + return RangeItem(self,_idx); +! } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + + if (PySlice_GetIndicesEx((PyObject *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, +! &step, &slicelen) < 0) { + return NULL; + } + return RangeSlice(self, start, stop); +! } else { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return NULL; + } +--- 1276,1300 ---- + static PyObject * + RangeSubscript(PyObject *self, PyObject* idx) + { +! if (PyLong_Check(idx)) +! { + long _idx = PyLong_AsLong(idx); + return RangeItem(self,_idx); +! } else if (PySlice_Check(idx)) +! { + Py_ssize_t start, stop, step, slicelen; + + if (PySlice_GetIndicesEx((PyObject *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, +! &step, &slicelen) < 0) +! { + return NULL; + } + return RangeSlice(self, start, stop); +! } +! else +! { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return NULL; + } +*************** +*** 1164,1183 **** + static Py_ssize_t + RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val) + { +! if (PyLong_Check(idx)) { + long n = PyLong_AsLong(idx); + return RangeAsItem(self, n, val); +! } else if (PySlice_Check(idx)) { + Py_ssize_t start, stop, step, slicelen; + + if (PySlice_GetIndicesEx((PyObject *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, +! &step, &slicelen) < 0) { + return -1; + } + return RangeAsSlice(self, start, stop, val); +! } else { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return -1; + } +--- 1303,1327 ---- + static Py_ssize_t + RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val) + { +! if (PyLong_Check(idx)) +! { + long n = PyLong_AsLong(idx); + return RangeAsItem(self, n, val); +! } else if (PySlice_Check(idx)) +! { + Py_ssize_t start, stop, step, slicelen; + + if (PySlice_GetIndicesEx((PyObject *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, +! &step, &slicelen) < 0) +! { + return -1; + } + return RangeAsSlice(self, start, stop, val); +! } +! else +! { + PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); + return -1; + } +*************** +*** 1390,1395 **** +--- 1534,1680 ---- + } + } + ++ /* Dictionary object - Definitions ++ */ ++ ++ static PyInt DictionaryLength(PyObject *); ++ ++ static PyMappingMethods DictionaryAsMapping = { ++ /* mp_length */ (lenfunc) DictionaryLength, ++ /* mp_subscript */ (binaryfunc) DictionaryItem, ++ /* mp_ass_subscript */ (objobjargproc) DictionaryAssItem, ++ }; ++ ++ static PyTypeObject DictionaryType; ++ ++ static void ++ DictionaryDestructor(PyObject *self) ++ { ++ DictionaryObject *this = (DictionaryObject *)(self); ++ ++ pyll_remove(&this->ref, &lastdict); ++ dict_unref(this->dict); ++ ++ Py_TYPE(self)->tp_free((PyObject*)self); ++ } ++ ++ /* List object - Definitions ++ */ ++ ++ static PyInt ListLength(PyObject *); ++ static PyObject *ListItem(PyObject *, Py_ssize_t); ++ ++ static PySequenceMethods ListAsSeq = { ++ (lenfunc) ListLength, /* sq_length, len(x) */ ++ (binaryfunc) 0, /* RangeConcat, sq_concat, x+y */ ++ (ssizeargfunc) 0, /* RangeRepeat, sq_repeat, x*n */ ++ (ssizeargfunc) ListItem, /* sq_item, x[i] */ ++ (void *) 0, /* was_sq_slice, x[i:j] */ ++ (ssizeobjargproc) ListAssItem, /* sq_as_item, x[i]=v */ ++ (void *) 0, /* was_sq_ass_slice, x[i:j]=v */ ++ 0, /* sq_contains */ ++ (binaryfunc) ListConcatInPlace,/* sq_inplace_concat */ ++ 0, /* sq_inplace_repeat */ ++ }; ++ ++ static PyObject *ListSubscript(PyObject *, PyObject *); ++ static Py_ssize_t ListAsSubscript(PyObject *, PyObject *, PyObject *); ++ ++ static PyMappingMethods ListAsMapping = { ++ /* mp_length */ (lenfunc) ListLength, ++ /* mp_subscript */ (binaryfunc) ListSubscript, ++ /* mp_ass_subscript */ (objobjargproc) ListAsSubscript, ++ }; ++ ++ static PyTypeObject ListType; ++ ++ static PyObject * ++ ListSubscript(PyObject *self, PyObject* idxObject) ++ { ++ if (PyLong_Check(idxObject)) ++ { ++ long idx = PyLong_AsLong(idxObject); ++ return ListItem(self, idx); ++ } ++ else if (PySlice_Check(idxObject)) ++ { ++ Py_ssize_t start, stop, step, slicelen; ++ ++ if (PySlice_GetIndicesEx(idxObject, ListLength(self), &start, &stop, ++ &step, &slicelen) < 0) ++ return NULL; ++ return ListSlice(self, start, stop); ++ } ++ else ++ { ++ PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); ++ return NULL; ++ } ++ } ++ ++ static Py_ssize_t ++ ListAsSubscript(PyObject *self, PyObject *idxObject, PyObject *obj) ++ { ++ if (PyLong_Check(idxObject)) ++ { ++ long idx = PyLong_AsLong(idxObject); ++ return ListAssItem(self, idx, obj); ++ } ++ else if (PySlice_Check(idxObject)) ++ { ++ Py_ssize_t start, stop, step, slicelen; ++ ++ if (PySlice_GetIndicesEx(idxObject, ListLength(self), &start, &stop, ++ &step, &slicelen) < 0) ++ return -1; ++ return ListAssSlice(self, start, stop, obj); ++ } ++ else ++ { ++ PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); ++ return -1; ++ } ++ } ++ ++ static void ++ ListDestructor(PyObject *self) ++ { ++ ListObject *this = (ListObject *)(self); ++ ++ pyll_remove(&this->ref, &lastlist); ++ list_unref(this->list); ++ ++ Py_TYPE(self)->tp_free((PyObject*)self); ++ } ++ ++ /* Function object - Definitions ++ */ ++ ++ static void ++ FunctionDestructor(PyObject *self) ++ { ++ FunctionObject *this = (FunctionObject *) (self); ++ ++ func_unref(this->name); ++ PyMem_Del(this->name); ++ ++ Py_TYPE(self)->tp_free((PyObject*)self); ++ } ++ ++ static PyObject * ++ 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)); ++ ++ return PyObject_GenericGetAttr(self, nameobj); ++ } ++ + /* External interface + */ + +*************** +*** 1449,1454 **** +--- 1734,1742 ---- + PyType_Ready(&BufListType); + PyType_Ready(&WinListType); + PyType_Ready(&CurrentType); ++ PyType_Ready(&DictionaryType); ++ PyType_Ready(&ListType); ++ PyType_Ready(&FunctionType); + + /* Set sys.argv[] to avoid a crash in warn(). */ + PySys_SetArgv(1, argv); +*************** +*** 1517,1522 **** +--- 1805,1828 ---- + return result; + } + ++ void ++ do_py3eval (char_u *str, typval_T *rettv) ++ { ++ DoPy3Command(NULL, (char *) str, rettv); ++ switch(rettv->v_type) ++ { ++ 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; ++ } ++ } ++ ++ void ++ set_ref_in_python3 (int copyID) ++ { ++ set_ref_in_py(copyID); ++ } ++ + static void + init_structs(void) + { +*************** +*** 1598,1603 **** +--- 1904,1938 ---- + CurrentType.tp_flags = Py_TPFLAGS_DEFAULT; + CurrentType.tp_doc = "vim current object"; + ++ vim_memset(&DictionaryType, 0, sizeof(DictionaryType)); ++ DictionaryType.tp_name = "vim.dictionary"; ++ DictionaryType.tp_basicsize = sizeof(DictionaryObject); ++ DictionaryType.tp_dealloc = DictionaryDestructor; ++ DictionaryType.tp_as_mapping = &DictionaryAsMapping; ++ DictionaryType.tp_flags = Py_TPFLAGS_DEFAULT; ++ DictionaryType.tp_doc = "dictionary pushing modifications to vim structure"; ++ DictionaryType.tp_methods = DictionaryMethods; ++ ++ vim_memset(&ListType, 0, sizeof(ListType)); ++ ListType.tp_name = "vim.list"; ++ ListType.tp_dealloc = ListDestructor; ++ ListType.tp_basicsize = sizeof(ListObject); ++ ListType.tp_as_sequence = &ListAsSeq; ++ ListType.tp_as_mapping = &ListAsMapping; ++ ListType.tp_flags = Py_TPFLAGS_DEFAULT; ++ ListType.tp_doc = "list pushing modifications to vim structure"; ++ ListType.tp_methods = ListMethods; ++ ++ vim_memset(&FunctionType, 0, sizeof(FunctionType)); ++ FunctionType.tp_name = "vim.list"; ++ FunctionType.tp_basicsize = sizeof(FunctionObject); ++ FunctionType.tp_getattro = FunctionGetattro; ++ FunctionType.tp_dealloc = FunctionDestructor; ++ FunctionType.tp_call = FunctionCall; ++ FunctionType.tp_flags = Py_TPFLAGS_DEFAULT; ++ FunctionType.tp_doc = "object that calls vim function"; ++ FunctionType.tp_methods = FunctionMethods; ++ + vim_memset(&vimmodule, 0, sizeof(vimmodule)); + vimmodule.m_name = "vim"; + vimmodule.m_doc = vim_module_doc; +*** ../vim-7.3.568/src/proto/eval.pro 2011-09-14 16:52:02.000000000 +0200 +--- src/proto/eval.pro 2012-06-20 18:20:28.000000000 +0200 +*************** +*** 46,57 **** +--- 46,66 ---- + list_T *list_alloc __ARGS((void)); + void list_unref __ARGS((list_T *l)); + void list_free __ARGS((list_T *l, int recurse)); ++ listitem_T *listitem_alloc __ARGS((void)); ++ void listitem_remove __ARGS((list_T *l, listitem_T *item)); + dictitem_T *dict_lookup __ARGS((hashitem_T *hi)); ++ listitem_T *list_find __ARGS((list_T *l, long n)); + char_u *list_find_str __ARGS((list_T *l, long idx)); ++ void list_append __ARGS((list_T *l, listitem_T *item)); + int list_append_tv __ARGS((list_T *l, typval_T *tv)); + int list_append_dict __ARGS((list_T *list, dict_T *dict)); + int list_append_string __ARGS((list_T *l, char_u *str, int len)); ++ int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item)); ++ void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); + int garbage_collect __ARGS((void)); ++ void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); ++ void set_ref_in_list __ARGS((list_T *l, int copyID)); ++ void set_ref_in_item __ARGS((typval_T *tv, int copyID)); + dict_T *dict_alloc __ARGS((void)); + void dict_unref __ARGS((dict_T *d)); + dictitem_T *dictitem_alloc __ARGS((char_u *key)); +*************** +*** 64,69 **** +--- 73,79 ---- + long get_dict_number __ARGS((dict_T *d, char_u *key)); + char_u *get_function_name __ARGS((expand_T *xp, int idx)); + char_u *get_expr_name __ARGS((expand_T *xp, int idx)); ++ int func_call __ARGS((char_u *name, typval_T *args, dict_T *selfdict, typval_T *rettv)); + long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop, long time_limit)); + void set_vim_var_nr __ARGS((int idx, long val)); + long get_vim_var_nr __ARGS((int idx)); +*************** +*** 94,99 **** +--- 104,111 ---- + void func_dump_profile __ARGS((FILE *fd)); + char_u *get_user_func_name __ARGS((expand_T *xp, int idx)); + void ex_delfunction __ARGS((exarg_T *eap)); ++ void func_unref __ARGS((char_u *name)); ++ void func_ref __ARGS((char_u *name)); + void ex_return __ARGS((exarg_T *eap)); + int do_return __ARGS((exarg_T *eap, int reanimate, int is_cmd, void *rettv)); + void discard_pending_return __ARGS((void *rettv)); +*** ../vim-7.3.568/src/proto/if_python.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/if_python.pro 2012-06-20 18:23:06.000000000 +0200 +*************** +*** 6,9 **** +--- 6,11 ---- + void ex_pyfile __ARGS((exarg_T *eap)); + void python_buffer_free __ARGS((buf_T *buf)); + void python_window_free __ARGS((win_T *win)); ++ void do_pyeval __ARGS((char_u *str, typval_T *rettv)); ++ void set_ref_in_python __ARGS((int copyID)); + /* vim: set ft=c : */ +*** ../vim-7.3.568/src/proto/if_python3.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/if_python3.pro 2012-06-20 18:34:26.000000000 +0200 +*************** +*** 6,9 **** +--- 6,11 ---- + void ex_py3file __ARGS((exarg_T *eap)); + void python3_buffer_free __ARGS((buf_T *buf)); + void python3_window_free __ARGS((win_T *win)); ++ void do_py3eval __ARGS((char_u *str, typval_T *rettv)); ++ void set_ref_in_python3 __ARGS((int copyID)); + /* vim: set ft=c : */ +*** ../vim-7.3.568/src/testdir/Make_amiga.mak 2012-04-05 16:56:38.000000000 +0200 +--- src/testdir/Make_amiga.mak 2012-06-20 18:43:05.000000000 +0200 +*************** +*** 14,19 **** +--- 14,20 ---- + # test27 can't edit file with "*" + # test52 only for Win32 + # test85 no Lua interface ++ # test86, 87 no Python interface + + SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ + test7.out test8.out test9.out \ +*** ../vim-7.3.568/src/testdir/Make_dos.mak 2012-04-13 19:11:16.000000000 +0200 +--- src/testdir/Make_dos.mak 2012-06-20 18:43:45.000000000 +0200 +*************** +*** 30,36 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS32 = test50.out test70.out + +--- 30,36 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.568/src/testdir/Make_ming.mak 2012-04-13 19:11:16.000000000 +0200 +--- src/testdir/Make_ming.mak 2012-06-20 18:44:12.000000000 +0200 +*************** +*** 50,56 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS32 = test50.out test70.out + +--- 50,56 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.568/src/testdir/Make_os2.mak 2012-04-05 16:56:38.000000000 +0200 +--- src/testdir/Make_os2.mak 2012-06-20 18:44:32.000000000 +0200 +*************** +*** 14,19 **** +--- 14,20 ---- + # test27 can't edit file with "*" in file name + # test52 only for Win32 + # test85 no Lua interface ++ # test86, 87 no Python interface + + SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ + test7.out test8.out test9.out \ +*** ../vim-7.3.568/src/testdir/Makefile 2012-04-05 16:56:38.000000000 +0200 +--- src/testdir/Makefile 2012-06-29 11:56:00.000000000 +0200 +*************** +*** 27,33 **** + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS_GUI = test16.out + +--- 27,33 ---- + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.568/src/testdir/test86.in 2012-06-20 20:19:31.000000000 +0200 +--- src/testdir/test86.in 2012-06-20 18:01:02.000000000 +0200 +*************** +*** 0 **** +--- 1,211 ---- ++ Tests for various python features. vim: set ft=vim : ++ ++ STARTTEST ++ :so small.vim ++ :if !has('python') | e! test.ok | wq! test.out | endif ++ :py import vim ++ :fun Test() ++ :let l = [] ++ :py l=vim.bindeval('l') ++ :py f=vim.bindeval('function("strlen")') ++ :" Extending List directly with different types ++ :py l.extend([1, "as'd", [1, 2, f, {'a': 1}]]) ++ :$put =string(l) ++ :$put =string(l[-1]) ++ :try ++ : $put =string(l[-4]) ++ :catch ++ : $put =v:exception[:13] ++ :endtry ++ :" List assignment ++ :py l[0]=0 ++ :$put =string(l) ++ :py l[-2]=f ++ :$put =string(l) ++ :" ++ :" Extending Dictionary directly with different types ++ :let d = {} ++ :py d=vim.bindeval('d') ++ :py d['1']='asd' ++ :py d['b']=[1, 2, f] ++ :py d['-1']={'a': 1} ++ :let dkeys = [] ++ :py dk=vim.bindeval('dkeys') ++ :py dkeys=d.keys() ++ :py dkeys.sort() ++ :py dk.extend(dkeys) ++ :$put =string(dkeys) ++ :for [key, val] in sort(items(d)) ++ : $put =string(key) . ' : ' . string(val) ++ : unlet key val ++ :endfor ++ :" ++ :" removing items with del ++ :py del l[2] ++ :$put =string(l) ++ :let l = range(8) ++ :py l=vim.bindeval('l') ++ :try ++ : py del l[:3] ++ : py del l[1:] ++ :catch ++ : $put =v:exception ++ :endtry ++ :$put =string(l) ++ :" ++ :py del d['-1'] ++ :$put =string(d) ++ :" ++ :" removing items out of range: silently skip items that don't exist ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :" The following two ranges delete nothing as they match empty list: ++ :py del l[2:1] ++ :$put =string(l) ++ :py del l[2:2] ++ :$put =string(l) ++ :py del l[2:3] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py del l[2:4] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py del l[2:5] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py del l[2:6] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :" The following two ranges delete nothing as they match empty list: ++ :py del l[-1:2] ++ :$put =string(l) ++ :py del l[-2:2] ++ :$put =string(l) ++ :py del l[-3:2] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py del l[-4:2] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py del l[-5:2] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py del l[-6:2] ++ :$put =string(l) ++ :" ++ :" Slice assignment to a list ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py l[0:0]=['a'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py l[1:2]=['b'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py l[2:4]=['c'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py l[4:4]=['d'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py l[-1:2]=['e'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py l[-10:2]=['f'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :py l[2:-10]=['g'] ++ :$put =string(l) ++ :let l = [] ++ :py l=vim.bindeval('l') ++ :py l[0:0]=['h'] ++ :$put =string(l) ++ :" ++ :" Locked variables ++ :let l = [0, 1, 2, 3] ++ :py l=vim.bindeval('l') ++ :lockvar! l ++ :py l[2]='i' ++ :$put =string(l) ++ :unlockvar! l ++ :" ++ :" Function calls ++ :function New(...) ++ :return ['NewStart']+a:000+['NewEnd'] ++ :endfunction ++ :function DictNew(...) dict ++ :return ['DictNewStart']+a:000+['DictNewEnd', self] ++ :endfunction ++ :let l=[function('New'), function('DictNew')] ++ :py l=vim.bindeval('l') ++ :py l.extend(list(l[0](1, 2, 3))) ++ :$put =string(l) ++ :py l.extend(list(l[1](1, 2, 3, self={'a': 'b'}))) ++ :$put =string(l) ++ :py l.extend([l[0].name]) ++ :$put =string(l) ++ :try ++ : py l[1](1, 2, 3) ++ :catch ++ : $put =v:exception[:16] ++ :endtry ++ :delfunction New ++ :try ++ : py l[0](1, 2, 3) ++ :catch ++ : $put =v:exception[:16] ++ :endtry ++ :if has('float') ++ : let l=[0.0] ++ : py l=vim.bindeval('l') ++ : py l.extend([0.0]) ++ : $put =string(l) ++ :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() ++ :" ++ :delfunc Test ++ :call garbagecollect(1) ++ :" ++ :/^start:/,$wq! test.out ++ ENDTEST ++ ++ start: +*** ../vim-7.3.568/src/testdir/test86.ok 2012-06-20 20:19:31.000000000 +0200 +--- src/testdir/test86.ok 2012-06-20 18:01:02.000000000 +0200 +*************** +*** 0 **** +--- 1,47 ---- ++ start: ++ [1, 'as''d', [1, 2, function('strlen'), {'a': 1}]] ++ [1, 2, function('strlen'), {'a': 1}] ++ Vim(put):E684: ++ [0, 'as''d', [1, 2, function('strlen'), {'a': 1}]] ++ [0, function('strlen'), [1, 2, function('strlen'), {'a': 1}]] ++ ['-1', '1', 'b'] ++ '-1' : {'a': 1} ++ '1' : 'asd' ++ 'b' : [1, 2, function('strlen')] ++ [0, function('strlen')] ++ [3] ++ {'1': 'asd', 'b': [1, 2, function('strlen')]} ++ [0, 1, 2, 3] ++ [0, 1, 2, 3] ++ [0, 1, 3] ++ [0, 1] ++ [0, 1] ++ [0, 1] ++ [0, 1, 2, 3] ++ [0, 1, 2, 3] ++ [0, 2, 3] ++ [2, 3] ++ [2, 3] ++ [2, 3] ++ ['a', 0, 1, 2, 3] ++ [0, 'b', 2, 3] ++ [0, 1, 'c'] ++ [0, 1, 2, 3, 'd'] ++ [0, 1, 2, 'e', 3] ++ ['f', 2, 3] ++ [0, 1, 'g', 2, 3] ++ ['h'] ++ [0, 1, 2, 3] ++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd'] ++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}] ++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New'] ++ Vim(python):E725: ++ Vim(python):E117: ++ [0.0, 0.0] ++ [0, 1, 2] ++ ['a', 'b'] ++ ['c', 1] ++ ['d', ['e']] ++ Vim(let):E858: ++ Vim(let):E859: ++ 0.0 +*** ../vim-7.3.568/src/testdir/test87.in 2012-06-20 20:19:31.000000000 +0200 +--- src/testdir/test87.in 2012-06-20 18:01:02.000000000 +0200 +*************** +*** 0 **** +--- 1,211 ---- ++ Tests for various python features. vim: set ft=vim : ++ ++ STARTTEST ++ :so small.vim ++ :if !has('python3') | e! test.ok | wq! test.out | endif ++ :py3 import vim ++ :fun Test() ++ :let l = [] ++ :py3 l=vim.bindeval('l') ++ :py3 f=vim.bindeval('function("strlen")') ++ :" Extending List directly with different types ++ :py3 l+=[1, "as'd", [1, 2, f, {'a': 1}]] ++ :$put =string(l) ++ :$put =string(l[-1]) ++ :try ++ : $put =string(l[-4]) ++ :catch ++ : $put =v:exception[:13] ++ :endtry ++ :" List assignment ++ :py3 l[0]=0 ++ :$put =string(l) ++ :py3 l[-2]=f ++ :$put =string(l) ++ :" ++ :" Extending Dictionary directly with different types ++ :let d = {} ++ :py3 d=vim.bindeval('d') ++ :py3 d['1']='asd' ++ :py3 d['b']=[1, 2, f] ++ :py3 d['-1']={'a': 1} ++ :let dkeys = [] ++ :py3 dk=vim.bindeval('dkeys') ++ :py3 dkeys=d.keys() ++ :py3 dkeys.sort() ++ :py3 dk+=dkeys ++ :$put =string(dkeys) ++ :for [key, val] in sort(items(d)) ++ : $put =string(key) . ' : ' . string(val) ++ : unlet key val ++ :endfor ++ :" ++ :" removing items with del ++ :py3 del l[2] ++ :$put =string(l) ++ :let l = range(8) ++ :py3 l=vim.bindeval('l') ++ :try ++ : py3 del l[:3] ++ : py3 del l[1:] ++ :catch ++ : $put =v:exception ++ :endtry ++ :$put =string(l) ++ :" ++ :py3 del d['-1'] ++ :$put =string(d) ++ :" ++ :" removing items out of range: silently skip items that don't exist ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :" The following two ranges delete nothing as they match empty list: ++ :py3 del l[2:1] ++ :$put =string(l) ++ :py3 del l[2:2] ++ :$put =string(l) ++ :py3 del l[2:3] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 del l[2:4] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 del l[2:5] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 del l[2:6] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :" The following two ranges delete nothing as they match empty list: ++ :py3 del l[-1:2] ++ :$put =string(l) ++ :py3 del l[-2:2] ++ :$put =string(l) ++ :py3 del l[-3:2] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 del l[-4:2] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 del l[-5:2] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 del l[-6:2] ++ :$put =string(l) ++ :" ++ :" Slice assignment to a list ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 l[0:0]=['a'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 l[1:2]=['b'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 l[2:4]=['c'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 l[4:4]=['d'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 l[-1:2]=['e'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 l[-10:2]=['f'] ++ :$put =string(l) ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :py3 l[2:-10]=['g'] ++ :$put =string(l) ++ :let l = [] ++ :py3 l=vim.bindeval('l') ++ :py3 l[0:0]=['h'] ++ :$put =string(l) ++ :" ++ :" Locked variables ++ :let l = [0, 1, 2, 3] ++ :py3 l=vim.bindeval('l') ++ :lockvar! l ++ :py3 l[2]='i' ++ :$put =string(l) ++ :unlockvar! l ++ :" ++ :" Function calls ++ :function New(...) ++ :return ['NewStart']+a:000+['NewEnd'] ++ :endfunction ++ :function DictNew(...) dict ++ :return ['DictNewStart']+a:000+['DictNewEnd', self] ++ :endfunction ++ :let l=[function('New'), function('DictNew')] ++ :py3 l=vim.bindeval('l') ++ :py3 l.extend(list(l[0](1, 2, 3))) ++ :$put =string(l) ++ :py3 l.extend(list(l[1](1, 2, 3, self={'a': 'b'}))) ++ :$put =string(l) ++ :py3 l+=[l[0].name] ++ :$put =string(l) ++ :try ++ : py3 l[1](1, 2, 3) ++ :catch ++ : $put =v:exception[:13] ++ :endtry ++ :delfunction New ++ :try ++ : py3 l[0](1, 2, 3) ++ :catch ++ : $put =v:exception[:13] ++ :endtry ++ :if has('float') ++ : let l=[0.0] ++ : py3 l=vim.bindeval('l') ++ : py3 l.extend([0.0]) ++ : $put =string(l) ++ :else ++ : $put ='[0.0, 0.0]' ++ :endif ++ :" ++ :" py3eval() ++ :let l=py3eval('[0, 1, 2]') ++ :$put =string(l) ++ :let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}') ++ :$put =sort(items(d)) ++ :try ++ : let undef=py3eval('undefined_name') ++ :catch ++ : $put =v:exception[:13] ++ :endtry ++ :try ++ : let vim=py3eval('vim') ++ :catch ++ : $put =v:exception[:13] ++ :endtry ++ :if has('float') ++ : let f=py3eval('0.0') ++ : $put =string(f) ++ :else ++ : $put ='0.0' ++ :endif ++ :endfun ++ :" ++ :call Test() ++ :" ++ :delfunc Test ++ :call garbagecollect(1) ++ :" ++ :/^start:/,$wq! test.out ++ ENDTEST ++ ++ start: +*** ../vim-7.3.568/src/testdir/test87.ok 2012-06-20 20:19:31.000000000 +0200 +--- src/testdir/test87.ok 2012-06-20 18:01:02.000000000 +0200 +*************** +*** 0 **** +--- 1,47 ---- ++ start: ++ [1, 'as''d', [1, 2, function('strlen'), {'a': 1}]] ++ [1, 2, function('strlen'), {'a': 1}] ++ Vim(put):E684: ++ [0, 'as''d', [1, 2, function('strlen'), {'a': 1}]] ++ [0, function('strlen'), [1, 2, function('strlen'), {'a': 1}]] ++ ['-1', '1', 'b'] ++ '-1' : {'a': 1} ++ '1' : 'asd' ++ 'b' : [1, 2, function('strlen')] ++ [0, function('strlen')] ++ [3] ++ {'1': 'asd', 'b': [1, 2, function('strlen')]} ++ [0, 1, 2, 3] ++ [0, 1, 2, 3] ++ [0, 1, 3] ++ [0, 1] ++ [0, 1] ++ [0, 1] ++ [0, 1, 2, 3] ++ [0, 1, 2, 3] ++ [0, 2, 3] ++ [2, 3] ++ [2, 3] ++ [2, 3] ++ ['a', 0, 1, 2, 3] ++ [0, 'b', 2, 3] ++ [0, 1, 'c'] ++ [0, 1, 2, 3, 'd'] ++ [0, 1, 2, 'e', 3] ++ ['f', 2, 3] ++ [0, 1, 'g', 2, 3] ++ ['h'] ++ [0, 1, 2, 3] ++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd'] ++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}] ++ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New'] ++ Vim(py3):E725: ++ Vim(py3):E117: ++ [0.0, 0.0] ++ [0, 1, 2] ++ ['a', 'b'] ++ ['c', 1] ++ ['d', ['e']] ++ Vim(let):E860: ++ Vim(let):E861: ++ 0.0 +*** ../vim-7.3.568/src/version.c 2012-06-29 12:35:40.000000000 +0200 +--- src/version.c 2012-06-29 12:47:03.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 569, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +69. Yahoo welcomes you with your own start page + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.570 b/source/ap/vim/patches/7.3.570 new file mode 100644 index 00000000..c644194d --- /dev/null +++ b/source/ap/vim/patches/7.3.570 @@ -0,0 +1,145 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.570 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.570 +Problem: ":vimgrep" does not obey 'wildignore'. +Solution: Apply 'wildignore' and 'suffixes' to ":vimgrep". (Ingo Karkat) +Files: src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/quickfix.c, src/spell.c + + +*** ../vim-7.3.569/src/ex_cmds2.c 2012-06-20 15:48:53.000000000 +0200 +--- src/ex_cmds2.c 2012-06-29 12:43:34.000000000 +0200 +*************** +*** 1850,1871 **** + #if defined(FEAT_QUICKFIX) || defined(FEAT_SYN_HL) || defined(PROTO) + /* + * Parse a list of arguments (file names), expand them and return in +! * "fnames[fcountp]". + * Return FAIL or OK. + */ + int +! get_arglist_exp(str, fcountp, fnamesp) + char_u *str; + int *fcountp; + char_u ***fnamesp; + { + garray_T ga; + int i; + + if (get_arglist(&ga, str) == FAIL) + return FAIL; +! i = gen_expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, +! fcountp, fnamesp, EW_FILE|EW_NOTFOUND); + ga_clear(&ga); + return i; + } +--- 1850,1877 ---- + #if defined(FEAT_QUICKFIX) || defined(FEAT_SYN_HL) || defined(PROTO) + /* + * Parse a list of arguments (file names), expand them and return in +! * "fnames[fcountp]". When "wig" is TRUE, removes files matching 'wildignore'. + * Return FAIL or OK. + */ + int +! get_arglist_exp(str, fcountp, fnamesp, wig) + char_u *str; + int *fcountp; + char_u ***fnamesp; ++ int wig; + { + garray_T ga; + int i; + + if (get_arglist(&ga, str) == FAIL) + return FAIL; +! if (wig == TRUE) +! i = expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, +! fcountp, fnamesp, EW_FILE|EW_NOTFOUND); +! else +! i = gen_expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, +! fcountp, fnamesp, EW_FILE|EW_NOTFOUND); +! + ga_clear(&ga); + return i; + } +*** ../vim-7.3.569/src/proto/ex_cmds2.pro 2011-05-19 18:26:34.000000000 +0200 +--- src/proto/ex_cmds2.pro 2012-06-29 12:43:49.000000000 +0200 +*************** +*** 42,48 **** + int check_fname __ARGS((void)); + int buf_write_all __ARGS((buf_T *buf, int forceit)); + int get_arglist __ARGS((garray_T *gap, char_u *str)); +! int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp)); + void set_arglist __ARGS((char_u *str)); + void check_arg_idx __ARGS((win_T *win)); + void ex_args __ARGS((exarg_T *eap)); +--- 42,48 ---- + int check_fname __ARGS((void)); + int buf_write_all __ARGS((buf_T *buf, int forceit)); + int get_arglist __ARGS((garray_T *gap, char_u *str)); +! int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp, int wig)); + void set_arglist __ARGS((char_u *str)); + void check_arg_idx __ARGS((win_T *win)); + void ex_args __ARGS((exarg_T *eap)); +*** ../vim-7.3.569/src/quickfix.c 2012-06-01 18:34:37.000000000 +0200 +--- src/quickfix.c 2012-06-29 12:43:49.000000000 +0200 +*************** +*** 3189,3195 **** + ; + + /* parse the list of arguments */ +! if (get_arglist_exp(p, &fcount, &fnames) == FAIL) + goto theend; + if (fcount == 0) + { +--- 3189,3195 ---- + ; + + /* parse the list of arguments */ +! if (get_arglist_exp(p, &fcount, &fnames, TRUE) == FAIL) + goto theend; + if (fcount == 0) + { +*** ../vim-7.3.569/src/spell.c 2012-06-01 17:49:51.000000000 +0200 +--- src/spell.c 2012-06-29 12:43:49.000000000 +0200 +*************** +*** 8553,8559 **** + } + + /* Expand all the remaining arguments (e.g., $VIMRUNTIME). */ +! if (get_arglist_exp(arg, &fcount, &fnames) == OK) + { + mkspell(fcount, fnames, ascii, eap->forceit, FALSE); + FreeWild(fcount, fnames); +--- 8553,8559 ---- + } + + /* Expand all the remaining arguments (e.g., $VIMRUNTIME). */ +! if (get_arglist_exp(arg, &fcount, &fnames, FALSE) == OK) + { + mkspell(fcount, fnames, ascii, eap->forceit, FALSE); + FreeWild(fcount, fnames); +*** ../vim-7.3.569/src/version.c 2012-06-29 12:54:32.000000000 +0200 +--- src/version.c 2012-06-29 12:56:12.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 570, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +70. ISDN lines are added to your house on a hourly basis + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.571 b/source/ap/vim/patches/7.3.571 new file mode 100644 index 00000000..ad62ffc2 --- /dev/null +++ b/source/ap/vim/patches/7.3.571 @@ -0,0 +1,117 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.571 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.571 +Problem: Duplicated condition. +Solution: Remove one. (Dominique Pelle) +Files: src/os_win32.c + + +*** ../vim-7.3.570/src/os_win32.c 2012-02-29 13:58:43.000000000 +0100 +--- src/os_win32.c 2012-06-29 13:10:54.000000000 +0200 +*************** +*** 308,314 **** + # ifndef GETTEXT_DLL + # define GETTEXT_DLL "libintl.dll" + # endif +! /* Dummy funcitons */ + static char *null_libintl_gettext(const char *); + static char *null_libintl_textdomain(const char *); + static char *null_libintl_bindtextdomain(const char *, const char *); +--- 308,314 ---- + # ifndef GETTEXT_DLL + # define GETTEXT_DLL "libintl.dll" + # endif +! /* Dummy functions */ + static char *null_libintl_gettext(const char *); + static char *null_libintl_textdomain(const char *); + static char *null_libintl_bindtextdomain(const char *, const char *); +*************** +*** 1409,1415 **** + + + /* +! * mch_inchar(): low-level input funcion. + * Get one or more characters from the keyboard or the mouse. + * If time == 0, do not wait for characters. + * If time == n, wait a short time for characters. +--- 1409,1415 ---- + + + /* +! * mch_inchar(): low-level input function. + * Get one or more characters from the keyboard or the mouse. + * If time == 0, do not wait for characters. + * If time == n, wait a short time for characters. +*************** +*** 3451,3464 **** + * to avoid to perform a blocking read */ + ret = PeekNamedPipe(g_hChildStd_OUT_Rd, /* pipe to query */ + NULL, /* optional buffer */ +! 0, /* buffe size */ + NULL, /* number of read bytes */ + &availableBytes, /* available bytes total */ + NULL); /* byteLeft */ + + repeatCount = 0; + /* We got real data in the pipe, read it */ +! while (ret != 0 && availableBytes > 0 && availableBytes > 0) + { + repeatCount++; + toRead = +--- 3451,3464 ---- + * to avoid to perform a blocking read */ + ret = PeekNamedPipe(g_hChildStd_OUT_Rd, /* pipe to query */ + NULL, /* optional buffer */ +! 0, /* buffer size */ + NULL, /* number of read bytes */ + &availableBytes, /* available bytes total */ + NULL); /* byteLeft */ + + repeatCount = 0; + /* We got real data in the pipe, read it */ +! while (ret != 0 && availableBytes > 0) + { + repeatCount++; + toRead = +*************** +*** 3638,3644 **** + NULL, /* Process security attributes */ + NULL, /* Thread security attributes */ + +! // this command can be litigeous, handle inheritence was + // deactivated for pending temp file, but, if we deactivate + // it, the pipes don't work for some reason. + TRUE, /* Inherit handles, first deactivated, +--- 3638,3644 ---- + NULL, /* Process security attributes */ + NULL, /* Thread security attributes */ + +! // this command can be litigious, handle inheritance was + // deactivated for pending temp file, but, if we deactivate + // it, the pipes don't work for some reason. + TRUE, /* Inherit handles, first deactivated, +*** ../vim-7.3.570/src/version.c 2012-06-29 12:57:03.000000000 +0200 +--- src/version.c 2012-06-29 13:12:31.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 571, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +71. You wonder how people walk + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.572 b/source/ap/vim/patches/7.3.572 new file mode 100644 index 00000000..14fc127e --- /dev/null +++ b/source/ap/vim/patches/7.3.572 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.572 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.572 +Problem: Duplicate statement in if and else. (Dominique Pelle) +Solution: Remove the condition and add a TODO. +Files: src/gui_xmebw.c + + +*** ../vim-7.3.571/src/gui_xmebw.c 2010-08-15 21:57:29.000000000 +0200 +--- src/gui_xmebw.c 2012-06-29 13:17:15.000000000 +0200 +*************** +*** 375,385 **** + + XGetGeometry(dpy, pix, &root, &x, &y, &width, &height, &border, &depth); + +! if (eb->enhancedbutton.label_location == (int)XmTOP +! || eb->enhancedbutton.label_location == (int)XmBOTTOM) +! shift = eb->primitive.shadow_thickness / 2; +! else +! shift = eb->primitive.shadow_thickness / 2; + + if (shift < 1) + shift = 1; +--- 375,382 ---- + + XGetGeometry(dpy, pix, &root, &x, &y, &width, &height, &border, &depth); + +! /* TODO: does the shift depend on label_location somehow? */ +! shift = eb->primitive.shadow_thickness / 2; + + if (shift < 1) + shift = 1; +*** ../vim-7.3.571/src/version.c 2012-06-29 13:13:59.000000000 +0200 +--- src/version.c 2012-06-29 13:18:41.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 572, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +72. Somebody at IRC just mentioned a way to obtain full motion video without + a PC using a wireless protocol called NTSC, you wonder how you never + heard about it + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.573 b/source/ap/vim/patches/7.3.573 new file mode 100644 index 00000000..7734a76a --- /dev/null +++ b/source/ap/vim/patches/7.3.573 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.573 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.573 +Problem: Using array index before bounds checking. +Solution: Swap the parts of the condition. (Dominique Pelle) +Files: src/ops.c + + +*** ../vim-7.3.572/src/ops.c 2012-06-13 17:28:51.000000000 +0200 +--- src/ops.c 2012-06-29 13:27:11.000000000 +0200 +*************** +*** 6458,6464 **** + long chars = 0; + int is_word = 0; + +! for (i = 0; line[i] && i < limit; ) + { + if (is_word) + { +--- 6458,6464 ---- + long chars = 0; + int is_word = 0; + +! for (i = 0; i < limit && line[i] != NUL; ) + { + if (is_word) + { +*** ../vim-7.3.572/src/version.c 2012-06-29 13:19:23.000000000 +0200 +--- src/version.c 2012-06-29 13:27:59.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 573, + /**/ + +-- +"Thou shalt not follow the Null Pointer, for at its end Chaos and +Madness lie." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.574 b/source/ap/vim/patches/7.3.574 new file mode 100644 index 00000000..e23d818f --- /dev/null +++ b/source/ap/vim/patches/7.3.574 @@ -0,0 +1,88 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.574 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.574 +Problem: When pasting a register in the search command line a CTRL-L + character is not pasted. (Dominique Pelle) +Solution: Escape the CTRL-L. (Christian Brabandt) +Files: src/ex_getln.c + + +*** ../vim-7.3.573/src/ex_getln.c 2012-06-06 12:02:57.000000000 +0200 +--- src/ex_getln.c 2012-06-29 13:39:03.000000000 +0200 +*************** +*** 3133,3139 **** + else + #endif + c = *s++; +! if (cv == Ctrl_V || c == ESC || c == Ctrl_C || c == CAR || c == NL + #ifdef UNIX + || c == intr_char + #endif +--- 3133,3140 ---- + else + #endif + c = *s++; +! if (cv == Ctrl_V || c == ESC || c == Ctrl_C +! || c == CAR || c == NL || c == Ctrl_L + #ifdef UNIX + || c == intr_char + #endif +*************** +*** 4692,4698 **** + if (tab[i].ic) + regmatch.rm_ic = TRUE; + ret = ExpandGeneric(xp, ®match, num_file, file, +! tab[i].func, tab[i].escaped); + break; + } + } +--- 4693,4699 ---- + if (tab[i].ic) + regmatch.rm_ic = TRUE; + ret = ExpandGeneric(xp, ®match, num_file, file, +! tab[i].func, tab[i].escaped); + break; + } + } +*************** +*** 5125,5131 **** + vim_free(matches); + } + if (ga.ga_len == 0) +! return FAIL; + + /* Sort and remove duplicates which can happen when specifying multiple + * directories in dirnames. */ +--- 5126,5132 ---- + vim_free(matches); + } + if (ga.ga_len == 0) +! return FAIL; + + /* Sort and remove duplicates which can happen when specifying multiple + * directories in dirnames. */ +*** ../vim-7.3.573/src/version.c 2012-06-29 13:34:15.000000000 +0200 +--- src/version.c 2012-06-29 13:38:22.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 574, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +73. You give your dog used motherboards instead of bones + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.575 b/source/ap/vim/patches/7.3.575 new file mode 100644 index 00000000..f5d80d72 --- /dev/null +++ b/source/ap/vim/patches/7.3.575 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.575 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.575 +Problem: "ygt" tries to yank instead of giving an error. (Daniel Mueller) +Solution: Check for a pending operator. +Files: src/normal.c + + +*** ../vim-7.3.574/src/normal.c 2012-06-06 16:12:54.000000000 +0200 +--- src/normal.c 2012-06-29 13:50:26.000000000 +0200 +*************** +*** 8393,8402 **** + + #ifdef FEAT_WINDOWS + case 't': +! goto_tabpage((int)cap->count0); + break; + case 'T': +! goto_tabpage(-(int)cap->count1); + break; + #endif + +--- 8393,8404 ---- + + #ifdef FEAT_WINDOWS + case 't': +! if (!checkclearop(oap)) +! goto_tabpage((int)cap->count0); + break; + case 'T': +! if (!checkclearop(oap)) +! goto_tabpage(-(int)cap->count1); + break; + #endif + +*** ../vim-7.3.574/src/version.c 2012-06-29 13:44:37.000000000 +0200 +--- src/version.c 2012-06-29 13:52:01.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 575, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +74. Your most erotic dreams are about cybersex + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.576 b/source/ap/vim/patches/7.3.576 new file mode 100644 index 00000000..bc226d90 --- /dev/null +++ b/source/ap/vim/patches/7.3.576 @@ -0,0 +1,255 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.576 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.576 +Problem: Formatting of lists inside comments is not right yet. +Solution: Use another solution and add a test. (Tor Perkins) +Files: src/edit.c, src/misc1.c, src/testdir/test68.in, + src/testdir/test69.ok + + +*** ../vim-7.3.575/src/edit.c 2012-06-20 22:55:56.000000000 +0200 +--- src/edit.c 2012-06-29 14:10:36.000000000 +0200 +*************** +*** 6320,6333 **** + if (!(flags & INSCHAR_COM_LIST)) + { + /* +! * This section is for numeric lists w/o comments. If comment +! * indents are needed with numeric lists (formatoptions=nq), +! * then the INSCHAR_COM_LIST flag will cause the corresponding +! * OPENLINE_COM_LIST flag to be passed through to open_line() +! * (as seen above)... + */ + if (second_indent < 0 && has_format_option(FO_Q_NUMBER)) +! second_indent = get_number_indent(curwin->w_cursor.lnum -1); + if (second_indent >= 0) + { + #ifdef FEAT_VREPLACE +--- 6320,6334 ---- + if (!(flags & INSCHAR_COM_LIST)) + { + /* +! * This section is for auto-wrap of numeric lists. When not +! * in insert mode (i.e. format_lines()), the INSCHAR_COM_LIST +! * flag will be set and open_line() will handle it (as seen +! * above). The code here (and in get_number_indent()) will +! * recognize comments if needed... + */ + if (second_indent < 0 && has_format_option(FO_Q_NUMBER)) +! second_indent = +! get_number_indent(curwin->w_cursor.lnum - 1); + if (second_indent >= 0) + { + #ifdef FEAT_VREPLACE +*************** +*** 6336,6342 **** +--- 6337,6367 ---- + FALSE, NUL, TRUE); + else + #endif ++ #ifdef FEAT_COMMENTS ++ if (leader_len > 0 && second_indent - leader_len > 0) ++ { ++ int i; ++ int padding = second_indent - leader_len; ++ ++ /* We started at the first_line of a numbered list ++ * that has a comment. the open_line() function has ++ * inserted the proper comment leader and positioned ++ * the cursor at the end of the split line. Now we ++ * add the additional whitespace needed after the ++ * comment leader for the numbered list. */ ++ for (i = 0; i < padding; i++) ++ { ++ ins_str((char_u *)" "); ++ changed_bytes(curwin->w_cursor.lnum, leader_len); ++ } ++ } ++ else ++ { ++ #endif + (void)set_indent(second_indent, SIN_CHANGED); ++ #ifdef FEAT_COMMENTS ++ } ++ #endif + } + } + first_line = FALSE; +*** ../vim-7.3.575/src/misc1.c 2012-06-20 17:56:06.000000000 +0200 +--- src/misc1.c 2012-06-29 14:10:12.000000000 +0200 +*************** +*** 424,491 **** + colnr_T col; + pos_T pos; + + if (lnum > curbuf->b_ml.ml_line_count) + return -1; + pos.lnum = 0; + + #ifdef FEAT_COMMENTS +! if (has_format_option(FO_Q_COMS) && has_format_option(FO_Q_NUMBER)) +! { +! regmatch_T regmatch; +! int lead_len; /* length of comment leader */ +! + lead_len = get_leader_len(ml_get(lnum), NULL, FALSE, TRUE); +- regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); +- if (regmatch.regprog != NULL) +- { +- regmatch.rm_ic = FALSE; +- +- /* vim_regexec() expects a pointer to a line. This lets us +- * start matching for the flp beyond any comment leader... */ +- if (vim_regexec(®match, ml_get(lnum) + lead_len, (colnr_T)0)) +- { +- pos.lnum = lnum; +- pos.col = (colnr_T)(*regmatch.endp - ml_get(lnum)); +- #ifdef FEAT_VIRTUALEDIT +- pos.coladd = 0; + #endif +! } +! } +! vim_free(regmatch.regprog); +! } +! else + { +! /* +! * What follows is the orig code that is not "comment aware"... +! * +! * I'm not sure if regmmatch_T (multi-match) is needed in this case. +! * It may be true that this section would work properly using the +! * regmatch_T code above, in which case, these two separate sections +! * should be consolidated w/ FEAT_COMMENTS making lead_len > 0... +! */ +! #endif +! regmmatch_T regmatch; + +! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); +! +! if (regmatch.regprog != NULL) + { +! regmatch.rmm_ic = FALSE; +! regmatch.rmm_maxcol = 0; +! if (vim_regexec_multi(®match, curwin, curbuf, +! lnum, (colnr_T)0, NULL)) +! { +! pos.lnum = regmatch.endpos[0].lnum + lnum; +! pos.col = regmatch.endpos[0].col; + #ifdef FEAT_VIRTUALEDIT +! pos.coladd = 0; + #endif +- } +- vim_free(regmatch.regprog); + } +- #ifdef FEAT_COMMENTS + } +! #endif + + if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL) + return -1; +--- 424,458 ---- + colnr_T col; + pos_T pos; + ++ regmatch_T regmatch; ++ int lead_len = 0; /* length of comment leader */ ++ + if (lnum > curbuf->b_ml.ml_line_count) + return -1; + pos.lnum = 0; + + #ifdef FEAT_COMMENTS +! /* In format_lines() (i.e. not insert mode), fo+=q is needed too... */ +! if ((State & INSERT) || has_format_option(FO_Q_COMS)) + lead_len = get_leader_len(ml_get(lnum), NULL, FALSE, TRUE); + #endif +! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); +! if (regmatch.regprog != NULL) + { +! regmatch.rm_ic = FALSE; + +! /* vim_regexec() expects a pointer to a line. This lets us +! * start matching for the flp beyond any comment leader... */ +! if (vim_regexec(®match, ml_get(lnum) + lead_len, (colnr_T)0)) + { +! pos.lnum = lnum; +! pos.col = (colnr_T)(*regmatch.endp - ml_get(lnum)); + #ifdef FEAT_VIRTUALEDIT +! pos.coladd = 0; + #endif + } + } +! vim_free(regmatch.regprog); + + if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL) + return -1; +*** ../vim-7.3.575/src/testdir/test68.in 2012-06-13 17:28:51.000000000 +0200 +--- src/testdir/test68.in 2012-06-29 14:27:27.000000000 +0200 +*************** +*** 52,57 **** +--- 52,68 ---- + + STARTTEST + /^{/+1 ++ :set tw=5 fo=tcn comments=:# ++ A bjA b ++ ENDTEST ++ ++ { ++ 1 a ++ # 1 a ++ } ++ ++ STARTTEST ++ /^{/+1 + :set tw=5 fo=qn comments=:# + gwap + ENDTEST +*************** +*** 83,88 **** +--- 94,107 ---- + } + + STARTTEST ++ /^#/ ++ :setl tw=12 fo=tqnc comments=:# ++ A foobar ++ ENDTEST ++ ++ # 1 xxxxx ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/^Results/,$wq! test.out + ENDTEST +*** ../vim-7.3.575/src/version.c 2012-06-29 13:56:01.000000000 +0200 +--- src/version.c 2012-06-29 15:03:10.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 576, + /**/ + +-- +Proof techniques #2: Proof by Oddity. + SAMPLE: To prove that horses have an infinite number of legs. +(1) Horses have an even number of legs. +(2) They have two legs in back and fore legs in front. +(3) This makes a total of six legs, which certainly is an odd number of + legs for a horse. +(4) But the only number that is both odd and even is infinity. +(5) Therefore, horses must have an infinite number of legs. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.577 b/source/ap/vim/patches/7.3.577 new file mode 100644 index 00000000..2929b22d --- /dev/null +++ b/source/ap/vim/patches/7.3.577 @@ -0,0 +1,273 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.577 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.577 +Problem: Size of memory does not fit in 32 bit unsigned. +Solution: Use Kbyte instead of byte. Call GlobalMemoryStatusEx() instead of + GlobalMemoryStatus() when available. +Files: src/misc2.c, src/option.c, src/os_amiga.c, src/os_msdos.c, + src/os_win16.c, src/os_win32.c + + +*** ../vim-7.3.576/src/misc2.c 2012-02-29 13:58:43.000000000 +0100 +--- src/misc2.c 2012-06-29 15:30:54.000000000 +0200 +*************** +*** 815,820 **** +--- 815,821 ---- + #else + # define KEEP_ROOM (2 * 8192L) + #endif ++ #define KEEP_ROOM_KB (KEEP_ROOM / 1024L) + + /* + * Note: if unsigned is 16 bits we can only allocate up to 64K with alloc(). +*************** +*** 940,946 **** + allocated = 0; + # endif + /* 3. check for available memory: call mch_avail_mem() */ +! if (mch_avail_mem(TRUE) < KEEP_ROOM && !releasing) + { + free((char *)p); /* System is low... no go! */ + p = NULL; +--- 941,947 ---- + allocated = 0; + # endif + /* 3. check for available memory: call mch_avail_mem() */ +! if (mch_avail_mem(TRUE) < KEEP_ROOM_KB && !releasing) + { + free((char *)p); /* System is low... no go! */ + p = NULL; +*** ../vim-7.3.576/src/option.c 2012-03-28 19:58:34.000000000 +0200 +--- src/option.c 2012-06-29 15:31:46.000000000 +0200 +*************** +*** 3154,3160 **** + { + #ifdef HAVE_AVAIL_MEM + /* Use amount of memory available at this moment. */ +! n = (mch_avail_mem(FALSE) >> 11); + #else + # ifdef HAVE_TOTAL_MEM + /* Use amount of memory available to Vim. */ +--- 3154,3160 ---- + { + #ifdef HAVE_AVAIL_MEM + /* Use amount of memory available at this moment. */ +! n = (mch_avail_mem(FALSE) >> 1); + #else + # ifdef HAVE_TOTAL_MEM + /* Use amount of memory available to Vim. */ +*************** +*** 6702,6708 **** + { + for (s = *varp; *s;) + { +! while(*s == ',' || *s == ' ') + s++; + if (!*s) + break; +--- 6702,6708 ---- + { + for (s = *varp; *s;) + { +! while (*s == ',' || *s == ' ') + s++; + if (!*s) + break; +*************** +*** 7391,7397 **** + new_unnamed |= CLIP_UNNAMED; + p += 7; + } +! else if (STRNCMP(p, "unnamedplus", 11) == 0 + && (p[11] == ',' || p[11] == NUL)) + { + new_unnamed |= CLIP_UNNAMED_PLUS; +--- 7391,7397 ---- + new_unnamed |= CLIP_UNNAMED; + p += 7; + } +! else if (STRNCMP(p, "unnamedplus", 11) == 0 + && (p[11] == ',' || p[11] == NUL)) + { + new_unnamed |= CLIP_UNNAMED_PLUS; +*** ../vim-7.3.576/src/os_amiga.c 2011-10-20 18:24:16.000000000 +0200 +--- src/os_amiga.c 2012-06-29 15:33:59.000000000 +0200 +*************** +*** 191,206 **** + } + + /* +! * Return amount of memory still available. + */ + long_u + mch_avail_mem(special) + int special; + { + #ifdef __amigaos4__ +! return (long_u)AvailMem(MEMF_ANY); + #else +! return (long_u)AvailMem(special ? (long)MEMF_CHIP : (long)MEMF_ANY); + #endif + } + +--- 191,206 ---- + } + + /* +! * Return amount of memory still available in Kbyte. + */ + long_u + mch_avail_mem(special) + int special; + { + #ifdef __amigaos4__ +! return (long_u)AvailMem(MEMF_ANY) >> 10; + #else +! return (long_u)(AvailMem(special ? (long)MEMF_CHIP : (long)MEMF_ANY)) >> 10; + #endif + } + +*** ../vim-7.3.576/src/os_msdos.c 2011-06-19 01:14:22.000000000 +0200 +--- src/os_msdos.c 2012-06-29 15:33:26.000000000 +0200 +*************** +*** 550,564 **** + #endif + + /* +! * Return amount of memory currently available. + */ + long_u + mch_avail_mem(int special) + { + #ifdef DJGPP +! return _go32_dpmi_remaining_virtual_memory(); + #else +! return coreleft(); + #endif + } + +--- 550,564 ---- + #endif + + /* +! * Return amount of memory currently available in Kbyte. + */ + long_u + mch_avail_mem(int special) + { + #ifdef DJGPP +! return _go32_dpmi_remaining_virtual_memory() >> 10; + #else +! return coreleft() >> 10; + #endif + } + +*** ../vim-7.3.576/src/os_win16.c 2011-10-20 18:24:16.000000000 +0200 +--- src/os_win16.c 2012-06-29 15:34:18.000000000 +0200 +*************** +*** 379,391 **** + + + /* +! * How much memory is available? + */ + long_u + mch_avail_mem( + int special) + { +! return GetFreeSpace(0); + } + + +--- 379,391 ---- + + + /* +! * How much memory is available in Kbyte? + */ + long_u + mch_avail_mem( + int special) + { +! return GetFreeSpace(0) >> 10; + } + + +*** ../vim-7.3.576/src/os_win32.c 2012-06-29 13:13:59.000000000 +0200 +--- src/os_win32.c 2012-06-29 15:39:52.000000000 +0200 +*************** +*** 4992,5009 **** + + + /* +! * How much memory is available? + * Return sum of available physical and page file memory. + */ + /*ARGSUSED*/ + long_u + mch_avail_mem(int special) + { +! MEMORYSTATUS ms; + +! ms.dwLength = sizeof(MEMORYSTATUS); +! GlobalMemoryStatus(&ms); +! return (long_u) (ms.dwAvailPhys + ms.dwAvailPageFile); + } + + #ifdef FEAT_MBYTE +--- 4992,5020 ---- + + + /* +! * How much memory is available in Kbyte? + * Return sum of available physical and page file memory. + */ + /*ARGSUSED*/ + long_u + mch_avail_mem(int special) + { +! if (g_PlatformId != VER_PLATFORM_WIN32_NT) +! { +! MEMORYSTATUS ms; + +! ms.dwLength = sizeof(MEMORYSTATUS); +! GlobalMemoryStatus(&ms); +! return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10); +! } +! else +! { +! MEMORYSTATUSEX ms; +! +! ms.dwLength = sizeof(MEMORYSTATUSEX); +! GlobalMemoryStatusEx(&ms); +! return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10); +! } + } + + #ifdef FEAT_MBYTE +*** ../vim-7.3.576/src/version.c 2012-06-29 15:04:34.000000000 +0200 +--- src/version.c 2012-06-29 15:45:44.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 577, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +75. You start wondering whether you could actually upgrade your brain + with a Pentium Pro microprocessor 80. The upgrade works just fine. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.578 b/source/ap/vim/patches/7.3.578 new file mode 100644 index 00000000..9b0aedd2 --- /dev/null +++ b/source/ap/vim/patches/7.3.578 @@ -0,0 +1,80 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.578 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.578 +Problem: Misplaced declaration. +Solution: Move declaration to start of block. +Files: src/if_py_both.h + + +*** ../vim-7.3.577/src/if_py_both.h 2012-06-29 12:54:32.000000000 +0200 +--- src/if_py_both.h 2012-06-29 16:15:29.000000000 +0200 +*************** +*** 818,838 **** + + if (valObject == NULL) + { + if (di == NULL) + { + PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); + return -1; + } +! hashitem_T *hi = hash_find(&d->dv_hashtab, di->di_key); + hash_remove(&d->dv_hashtab, hi); + dictitem_free(di); + return 0; + } + + if (ConvertFromPyObject(valObject, &tv) == -1) +- { + return -1; +- } + + if (di == NULL) + { +--- 818,838 ---- + + if (valObject == NULL) + { ++ hashitem_T *hi; ++ + if (di == NULL) + { + PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); + return -1; + } +! hi = hash_find(&d->dv_hashtab, di->di_key); + hash_remove(&d->dv_hashtab, hi); + dictitem_free(di); + return 0; + } + + if (ConvertFromPyObject(valObject, &tv) == -1) + return -1; + + if (di == NULL) + { +*** ../vim-7.3.577/src/version.c 2012-06-29 15:51:26.000000000 +0200 +--- src/version.c 2012-06-29 16:18:10.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 578, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +77. The phone company asks you to test drive their new PBX system + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.579 b/source/ap/vim/patches/7.3.579 new file mode 100644 index 00000000..ed618fe7 --- /dev/null +++ b/source/ap/vim/patches/7.3.579 @@ -0,0 +1,232 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.579 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.579 (after 7.3.569) +Problem: Can't compile with Python 2.5. +Solution: Use PyCObject when Capsules are not available. +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + + +*** ../vim-7.3.578/src/if_py_both.h 2012-06-29 16:19:46.000000000 +0200 +--- src/if_py_both.h 2012-06-29 16:15:29.000000000 +0200 +*************** +*** 56,62 **** + /* name, function, calling, documentation */ + {"write", OutputWrite, 1, ""}, + {"writelines", OutputWritelines, 1, ""}, +! {"flush", OutputFlush, 1, ""}, + { NULL, NULL, 0, NULL} + }; + +--- 56,62 ---- + /* name, function, calling, documentation */ + {"write", OutputWrite, 1, ""}, + {"writelines", OutputWritelines, 1, ""}, +! {"flush", OutputFlush, 1, ""}, + { NULL, NULL, 0, NULL} + }; + +*************** +*** 506,513 **** + /* name, function, calling, documentation */ + {"command", VimCommand, 1, "Execute a Vim ex-mode command" }, + {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" }, +! {"bindeval", VimEvalPy, 1, "Like eval(), but returns objects attached to vim ones"}, +! {"strwidth", VimStrwidth, 1, "Screen string width, counts <Tab> as having width 1"}, + { NULL, NULL, 0, NULL } + }; + +--- 506,513 ---- + /* name, function, calling, documentation */ + {"command", VimCommand, 1, "Execute a Vim ex-mode command" }, + {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" }, +! {"bindeval", VimEvalPy, 1, "Like eval(), but returns objects attached to vim ones"}, +! {"strwidth", VimStrwidth, 1, "Screen string width, counts <Tab> as having width 1"}, + { NULL, NULL, 0, NULL } + }; + +*************** +*** 2432,2448 **** +--- 2432,2463 ---- + convert_dl(PyObject *obj, typval_T *tv, + pytotvfunc py_to_tv, PyObject *lookupDict) + { ++ # ifdef PY_USE_CAPSULE + PyObject *capsule; ++ # else ++ PyCObject *cobject; ++ # endif + char hexBuf[sizeof(void *) * 2 + 3]; + + sprintf(hexBuf, "%p", obj); + ++ # ifdef PY_USE_CAPSULE + capsule = PyDict_GetItemString(lookupDict, hexBuf); + if (capsule == NULL) ++ # else ++ cobject = (PyCObject *)PyDict_GetItemString(lookupDict, hexBuf); ++ if (cobject == NULL) ++ # endif + { ++ # ifdef PY_USE_CAPSULE + capsule = PyCapsule_New(tv, NULL, NULL); + PyDict_SetItemString(lookupDict, hexBuf, capsule); + Py_DECREF(capsule); ++ # else ++ cobject = PyCObject_FromVoidPtr(tv, NULL); ++ PyDict_SetItemString(lookupDict, hexBuf, cobject); ++ Py_DECREF(cobject); ++ # endif + if (py_to_tv(obj, tv, lookupDict) == -1) + { + tv->v_type = VAR_UNKNOWN; +*************** +*** 2458,2464 **** + } + else + { +! typval_T *v = PyCapsule_GetPointer(capsule, NULL); + copy_tv(v, tv); + } + return 0; +--- 2473,2485 ---- + } + else + { +! typval_T *v; +! +! # ifdef PY_USE_CAPSULE +! v = PyCapsule_GetPointer(capsule, NULL); +! # else +! v = PyCObject_AsVoidPtr(cobject); +! # endif + copy_tv(v, tv); + } + return 0; +*** ../vim-7.3.578/src/if_python.c 2012-06-29 12:54:32.000000000 +0200 +--- src/if_python.c 2012-06-29 16:17:44.000000000 +0200 +*************** +*** 71,76 **** +--- 71,80 ---- + # define PySequenceMethods Py_ssize_t + #endif + ++ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 ++ # define PY_USE_CAPSULE ++ #endif ++ + #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 + # define PyInt Py_ssize_t + # define PyInquiry lenfunc +*************** +*** 220,227 **** + # define PyObject_Malloc dll_PyObject_Malloc + # define PyObject_Free dll_PyObject_Free + # endif +! # define PyCapsule_New dll_PyCapsule_New +! # define PyCapsule_GetPointer dll_PyCapsule_GetPointer + + /* + * Pointers for dynamic link +--- 224,236 ---- + # define PyObject_Malloc dll_PyObject_Malloc + # define PyObject_Free dll_PyObject_Free + # endif +! # ifdef PY_USE_CAPSULE +! # define PyCapsule_New dll_PyCapsule_New +! # define PyCapsule_GetPointer dll_PyCapsule_GetPointer +! # else +! # define PyCObject_FromVoidPtr dll_PyCObject_FromVoidPtr +! # define PyCObject_AsVoidPtr dll_PyCObject_AsVoidPtr +! # endif + + /* + * Pointers for dynamic link +*************** +*** 309,316 **** +--- 318,330 ---- + static void* (*dll_PyObject_Malloc)(size_t); + static void (*dll_PyObject_Free)(void*); + # endif ++ # ifdef PY_USE_CAPSULE + static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor); + static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *); ++ # else ++ static PyCObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *)); ++ static void* (*dll_PyCObject_AsVoidPtr)(PyCObject *); ++ # endif + + static HINSTANCE hinstPython = 0; /* Instance of python.dll */ + +*************** +*** 403,409 **** + {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready}, + {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue}, + {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod}, +! # if (PY_VERSION_HEX >= 0x02050000) && SIZEOF_SIZE_T != SIZEOF_INT + {"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4}, + # else + {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4}, +--- 417,424 ---- + {"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 + {"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4}, + # else + {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4}, +*************** +*** 424,431 **** +--- 439,451 ---- + {"PyObject_Malloc", (PYTHON_PROC*)&dll_PyObject_Malloc}, + {"PyObject_Free", (PYTHON_PROC*)&dll_PyObject_Free}, + # endif ++ # ifdef PY_USE_CAPSULE + {"PyCapsule_New", (PYTHON_PROC*)&dll_PyCapsule_New}, + {"PyCapsule_GetPointer", (PYTHON_PROC*)&dll_PyCapsule_GetPointer}, ++ # else ++ {"PyCObject_FromVoidPtr", (PYTHON_PROC*)&dll_PyCObject_FromVoidPtr}, ++ {"PyCObject_AsVoidPtr", (PYTHON_PROC*)&dll_PyCObject_AsVoidPtr}, ++ # endif + {"", NULL}, + }; + +*** ../vim-7.3.578/src/if_python3.c 2012-06-29 12:54:32.000000000 +0200 +--- src/if_python3.c 2012-06-29 16:16:54.000000000 +0200 +*************** +*** 75,80 **** +--- 75,83 ---- + # define CODEC_ERROR_HANDLER NULL + #endif + ++ /* Python 3 does not support CObjects, always use Capsules */ ++ #define PY_USE_CAPSULE ++ + #define PyInt Py_ssize_t + #define PyString_Check(obj) PyUnicode_Check(obj) + #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER) +*** ../vim-7.3.578/src/version.c 2012-06-29 16:19:46.000000000 +0200 +--- src/version.c 2012-06-29 16:21:25.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 579, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +78. You find yourself dialing IP numbers on the phone. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.580 b/source/ap/vim/patches/7.3.580 new file mode 100644 index 00000000..c2c2a537 --- /dev/null +++ b/source/ap/vim/patches/7.3.580 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.580 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.580 +Problem: Warning on 64 bit MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/if_py_both.h + + +*** ../vim-7.3.579/src/if_py_both.h 2012-06-29 16:28:23.000000000 +0200 +--- src/if_py_both.h 2012-06-29 17:49:59.000000000 +0200 +*************** +*** 495,501 **** + if (!PyArg_ParseTuple(args, "s", &expr)) + return NULL; + +! return PyLong_FromLong(mb_string2cells((char_u *)expr, STRLEN(expr))); + } + + /* +--- 495,501 ---- + if (!PyArg_ParseTuple(args, "s", &expr)) + return NULL; + +! return PyLong_FromLong(mb_string2cells((char_u *)expr, (int)STRLEN(expr))); + } + + /* +*** ../vim-7.3.579/src/version.c 2012-06-29 16:28:23.000000000 +0200 +--- src/version.c 2012-06-29 17:50:36.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 580, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +79. All of your most erotic dreams have a scrollbar at the right side. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.581 b/source/ap/vim/patches/7.3.581 new file mode 100644 index 00000000..55300303 --- /dev/null +++ b/source/ap/vim/patches/7.3.581 @@ -0,0 +1,117 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.581 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.581 +Problem: Problems compiling with Python. +Solution: Pick UCS2 or UCS4 function at runtime. (lilydjwg) +Files: src/if_python.c + + +*** ../vim-7.3.580/src/if_python.c 2012-06-29 16:28:23.000000000 +0200 +--- src/if_python.c 2012-06-29 19:10:53.000000000 +0200 +*************** +*** 196,202 **** + # define PyString_Size dll_PyString_Size + # define PyString_Type (*dll_PyString_Type) + # define PyUnicode_Type (*dll_PyUnicode_Type) +! # define PyUnicodeUCS4_AsEncodedString (*dll_PyUnicodeUCS4_AsEncodedString) + # define PyFloat_AsDouble dll_PyFloat_AsDouble + # define PyFloat_FromDouble dll_PyFloat_FromDouble + # define PyFloat_Type (*dll_PyFloat_Type) +--- 196,203 ---- + # define PyString_Size dll_PyString_Size + # define PyString_Type (*dll_PyString_Type) + # define PyUnicode_Type (*dll_PyUnicode_Type) +! # undef PyUnicode_AsEncodedString +! # define PyUnicode_AsEncodedString py_PyUnicode_AsEncodedString + # define PyFloat_AsDouble dll_PyFloat_AsDouble + # define PyFloat_FromDouble dll_PyFloat_FromDouble + # define PyFloat_Type (*dll_PyFloat_Type) +*************** +*** 290,296 **** + static PyInt(*dll_PyString_Size)(PyObject *); + static PyTypeObject* dll_PyString_Type; + static PyTypeObject* dll_PyUnicode_Type; +! static PyObject *(*PyUnicodeUCS4_AsEncodedString)(PyObject *, char *, char *); + static double(*dll_PyFloat_AsDouble)(PyObject *); + static PyObject*(*dll_PyFloat_FromDouble)(double); + static PyTypeObject* dll_PyFloat_Type; +--- 291,297 ---- + static PyInt(*dll_PyString_Size)(PyObject *); + static PyTypeObject* dll_PyString_Type; + static PyTypeObject* dll_PyUnicode_Type; +! static PyObject *(*py_PyUnicode_AsEncodedString)(PyObject *, char *, char *); + static double(*dll_PyFloat_AsDouble)(PyObject *); + static PyObject*(*dll_PyFloat_FromDouble)(double); + static PyTypeObject* dll_PyFloat_Type; +*************** +*** 406,412 **** + {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size}, + {"PyString_Type", (PYTHON_PROC*)&dll_PyString_Type}, + {"PyUnicode_Type", (PYTHON_PROC*)&dll_PyUnicode_Type}, +- {"PyUnicodeUCS4_AsEncodedString", (PYTHON_PROC*)&dll_PyUnicodeUCS4_AsEncodedString}, + {"PyFloat_Type", (PYTHON_PROC*)&dll_PyFloat_Type}, + {"PyFloat_AsDouble", (PYTHON_PROC*)&dll_PyFloat_AsDouble}, + {"PyFloat_FromDouble", (PYTHON_PROC*)&dll_PyFloat_FromDouble}, +--- 407,412 ---- +*************** +*** 471,476 **** +--- 471,477 ---- + python_runtime_link_init(char *libname, int verbose) + { + int i; ++ void *ucs_as_encoded_string; + + #if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON3) + /* Can't have Python and Python3 loaded at the same time. +*************** +*** 506,511 **** +--- 507,531 ---- + return FAIL; + } + } ++ ++ /* Load unicode functions separately as only the ucs2 or the ucs4 functions ++ * will be present in the library. */ ++ ucs_as_encoded_string = symbol_from_dll(hinstPython, ++ "PyUnicodeUCS2_AsEncodedString"); ++ if (ucs_as_encoded_string == NULL) ++ ucs_as_encoded_string = symbol_from_dll(hinstPython, ++ "PyUnicodeUCS4_AsEncodedString"); ++ if (ucs_as_encoded_string != NULL) ++ py_PyUnicode_AsEncodedString = ucs_as_encoded_string; ++ else ++ { ++ close_dll(hinstPython); ++ hinstPython = 0; ++ if (verbose) ++ EMSG2(_(e_loadfunc), "PyUnicode_UCSX_*"); ++ return FAIL; ++ } ++ + return OK; + } + +*** ../vim-7.3.580/src/version.c 2012-06-29 17:51:58.000000000 +0200 +--- src/version.c 2012-06-29 19:13:47.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 581, + /**/ + +-- +ASCII stupid question, get a stupid ANSI. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.582 b/source/ap/vim/patches/7.3.582 new file mode 100644 index 00000000..4e118a7d --- /dev/null +++ b/source/ap/vim/patches/7.3.582 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.582 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.582 (after 7.3.576) +Problem: Missing parts of the test OK file. +Solution: Add the missing parts. +Files: src/testdir/test68.ok + + +*** ../vim-7.3.581/src/testdir/test68.ok 2012-06-13 17:28:51.000000000 +0200 +--- src/testdir/test68.ok 2012-06-29 15:00:13.000000000 +0200 +*************** +*** 35,40 **** +--- 35,48 ---- + + + { ++ 1 a ++ b ++ # 1 a ++ # b ++ } ++ ++ ++ { + # 1 a + # b + } +*************** +*** 48,50 **** +--- 56,62 ---- + + { 1aa ^^2bb } + ++ ++ # 1 xxxxx ++ # foobar ++ +*** ../vim-7.3.581/src/version.c 2012-06-29 19:14:48.000000000 +0200 +--- src/version.c 2012-06-29 23:57:43.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 582, + /**/ + +-- +If your nose runs, and your feet smell, you might be upside down. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.583 b/source/ap/vim/patches/7.3.583 new file mode 100644 index 00000000..2ea7f9d2 --- /dev/null +++ b/source/ap/vim/patches/7.3.583 @@ -0,0 +1,79 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.583 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.583 +Problem: PyObject_NextNotImplemented is not defined before Python 2.7. + (Danek Duvall) +Solution: Add #ifdefs. +Files: src/if_python.c + + +*** ../vim-7.3.582/src/if_python.c 2012-06-29 19:14:48.000000000 +0200 +--- src/if_python.c 2012-06-30 12:59:38.000000000 +0200 +*************** +*** 214,220 **** + # define Py_Finalize dll_Py_Finalize + # define Py_IsInitialized dll_Py_IsInitialized + # define _PyObject_New dll__PyObject_New +! # define _PyObject_NextNotImplemented (*dll__PyObject_NextNotImplemented) + # define _Py_NoneStruct (*dll__Py_NoneStruct) + # define PyObject_Init dll__PyObject_Init + # define PyObject_GetIter dll_PyObject_GetIter +--- 214,222 ---- + # define Py_Finalize dll_Py_Finalize + # define Py_IsInitialized dll_Py_IsInitialized + # define _PyObject_New dll__PyObject_New +! # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 +! # define _PyObject_NextNotImplemented (*dll__PyObject_NextNotImplemented) +! # endif + # define _Py_NoneStruct (*dll__Py_NoneStruct) + # define PyObject_Init dll__PyObject_Init + # define PyObject_GetIter dll_PyObject_GetIter +*************** +*** 310,316 **** +--- 312,320 ---- + static PyObject*(*dll__PyObject_New)(PyTypeObject *, PyObject *); + static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *); + static PyObject* (*dll_PyObject_GetIter)(PyObject *); ++ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 + static iternextfunc dll__PyObject_NextNotImplemented; ++ # endif + static PyObject* dll__Py_NoneStruct; + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 + static int (*dll_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *); +*************** +*** 430,436 **** +--- 434,442 ---- + {"_PyObject_New", (PYTHON_PROC*)&dll__PyObject_New}, + {"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init}, + {"PyObject_GetIter", (PYTHON_PROC*)&dll_PyObject_GetIter}, ++ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 + {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&dll__PyObject_NextNotImplemented}, ++ # endif + {"_Py_NoneStruct", (PYTHON_PROC*)&dll__Py_NoneStruct}, + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 + {"PyType_IsSubtype", (PYTHON_PROC*)&dll_PyType_IsSubtype}, +*** ../vim-7.3.582/src/version.c 2012-06-29 23:57:50.000000000 +0200 +--- src/version.c 2012-06-30 13:20:46.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 583, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +90. Instead of calling you to dinner, your spouse sends e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.584 b/source/ap/vim/patches/7.3.584 new file mode 100644 index 00000000..d7f1bdeb --- /dev/null +++ b/source/ap/vim/patches/7.3.584 @@ -0,0 +1,134 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.584 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.584 +Problem: PyCObject is not always defined. +Solution: Use PyObject instead. +Files: src/if_py_both.h, src/if_python.c + + +*** ../vim-7.3.583/src/if_py_both.h 2012-06-29 17:51:58.000000000 +0200 +--- src/if_py_both.h 2012-06-30 13:25:24.000000000 +0200 +*************** +*** 2432,2463 **** + convert_dl(PyObject *obj, typval_T *tv, + pytotvfunc py_to_tv, PyObject *lookupDict) + { +- # ifdef PY_USE_CAPSULE + PyObject *capsule; +- # else +- PyCObject *cobject; +- # endif + char hexBuf[sizeof(void *) * 2 + 3]; + + sprintf(hexBuf, "%p", obj); + + # ifdef PY_USE_CAPSULE + capsule = PyDict_GetItemString(lookupDict, hexBuf); +- if (capsule == NULL) + # else +! cobject = (PyCObject *)PyDict_GetItemString(lookupDict, hexBuf); +! if (cobject == NULL) + # endif + { + # ifdef PY_USE_CAPSULE + capsule = PyCapsule_New(tv, NULL, NULL); +- PyDict_SetItemString(lookupDict, hexBuf, capsule); +- Py_DECREF(capsule); + # else +! cobject = PyCObject_FromVoidPtr(tv, NULL); +! PyDict_SetItemString(lookupDict, hexBuf, cobject); +! Py_DECREF(cobject); + # endif + if (py_to_tv(obj, tv, lookupDict) == -1) + { + tv->v_type = VAR_UNKNOWN; +--- 2432,2456 ---- + convert_dl(PyObject *obj, typval_T *tv, + pytotvfunc py_to_tv, PyObject *lookupDict) + { + PyObject *capsule; + char hexBuf[sizeof(void *) * 2 + 3]; + + sprintf(hexBuf, "%p", obj); + + # ifdef PY_USE_CAPSULE + capsule = PyDict_GetItemString(lookupDict, hexBuf); + # else +! capsule = (PyObject *)PyDict_GetItemString(lookupDict, hexBuf); + # endif ++ if (capsule == NULL) + { + # ifdef PY_USE_CAPSULE + capsule = PyCapsule_New(tv, NULL, NULL); + # else +! capsule = PyCObject_FromVoidPtr(tv, NULL); + # endif ++ PyDict_SetItemString(lookupDict, hexBuf, capsule); ++ Py_DECREF(capsule); + if (py_to_tv(obj, tv, lookupDict) == -1) + { + tv->v_type = VAR_UNKNOWN; +*************** +*** 2478,2484 **** + # ifdef PY_USE_CAPSULE + v = PyCapsule_GetPointer(capsule, NULL); + # else +! v = PyCObject_AsVoidPtr(cobject); + # endif + copy_tv(v, tv); + } +--- 2471,2477 ---- + # ifdef PY_USE_CAPSULE + v = PyCapsule_GetPointer(capsule, NULL); + # else +! v = PyCObject_AsVoidPtr(capsule); + # endif + copy_tv(v, tv); + } +*** ../vim-7.3.583/src/if_python.c 2012-06-30 13:21:03.000000000 +0200 +--- src/if_python.c 2012-06-30 13:23:22.000000000 +0200 +*************** +*** 327,334 **** + static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor); + static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *); + # else +! static PyCObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *)); +! static void* (*dll_PyCObject_AsVoidPtr)(PyCObject *); + # endif + + static HINSTANCE hinstPython = 0; /* Instance of python.dll */ +--- 327,334 ---- + static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor); + static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *); + # else +! static PyObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *)); +! static void* (*dll_PyCObject_AsVoidPtr)(PyObject *); + # endif + + static HINSTANCE hinstPython = 0; /* Instance of python.dll */ +*** ../vim-7.3.583/src/version.c 2012-06-30 13:21:03.000000000 +0200 +--- src/version.c 2012-06-30 13:33:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 584, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +91. It's Saturday afternoon in the middle of May and you + are on computer. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.585 b/source/ap/vim/patches/7.3.585 new file mode 100644 index 00000000..6509780c --- /dev/null +++ b/source/ap/vim/patches/7.3.585 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.585 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.585 +Problem: Calling changed_bytes() too often. +Solution: Move changed_bytes() out of a loop. (Tor Perkins) +Files: src/edit.c + + +*** ../vim-7.3.584/src/edit.c 2012-06-29 15:04:34.000000000 +0200 +--- src/edit.c 2012-07-06 13:29:25.000000000 +0200 +*************** +*** 6350,6359 **** + * add the additional whitespace needed after the + * comment leader for the numbered list. */ + for (i = 0; i < padding; i++) +- { + ins_str((char_u *)" "); +! changed_bytes(curwin->w_cursor.lnum, leader_len); +! } + } + else + { +--- 6350,6357 ---- + * add the additional whitespace needed after the + * comment leader for the numbered list. */ + for (i = 0; i < padding; i++) + ins_str((char_u *)" "); +! changed_bytes(curwin->w_cursor.lnum, leader_len); + } + else + { +*** ../vim-7.3.584/src/version.c 2012-07-06 13:36:02.000000000 +0200 +--- src/version.c 2012-07-06 13:35:03.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 585, + /**/ + +-- +From "know your smileys": + :'-D Laughing so much that they're crying + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.586 b/source/ap/vim/patches/7.3.586 new file mode 100644 index 00000000..889ebd13 --- /dev/null +++ b/source/ap/vim/patches/7.3.586 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.586 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.586 +Problem: When compiling with Cygwin or MingW MEMORYSTATUSEX is not defined. +Solution: Set the default for WINVER to 0x0500. +Files: src/Make_ming.mak, src/Make_cyg.mak + + +*** ../vim-7.3.585/src/Make_ming.mak 2012-04-20 16:13:21.000000000 +0200 +--- src/Make_ming.mak 2012-06-30 21:23:55.000000000 +0200 +*************** +*** 52,58 **** + OLE=no + # Set the default $(WINVER) to make it work with pre-Win2k + ifndef WINVER +! WINVER = 0x0400 + endif + # Set to yes to enable Cscope support + CSCOPE=yes +--- 52,58 ---- + 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 +*** ../vim-7.3.585/src/Make_cyg.mak 2011-09-30 16:56:00.000000000 +0200 +--- src/Make_cyg.mak 2012-06-30 21:23:42.000000000 +0200 +*************** +*** 1,6 **** + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Last updated by Dan Sharp. Last Change: 2010 Nov 03 + # + # Also read INSTALLpc.txt! + # +--- 1,6 ---- + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Last updated by Dan Sharp. Last Change: 2012 Jun 30 + # + # Also read INSTALLpc.txt! + # +*************** +*** 48,54 **** + # -L/lib/w32api to EXTRA_LIBS. + # POSTSCRIPT no or yes: set to yes for PostScript printing (no) + # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG) +! # WINVER Lowest Win32 version to support. (0x0400) + # CSCOPE no or yes: to include cscope interface support (yes) + # OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED) + # NETBEANS no or yes: to include netbeans interface support (yes when GUI +--- 48,54 ---- + # -L/lib/w32api to EXTRA_LIBS. + # POSTSCRIPT no or yes: set to yes for PostScript printing (no) + # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG) +! # WINVER Lowest Win32 version to support. (0x0500) + # CSCOPE no or yes: to include cscope interface support (yes) + # OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED) + # NETBEANS no or yes: to include netbeans interface support (yes when GUI +*************** +*** 85,91 **** + endif + + ifndef WINVER +! WINVER = 0x0400 + endif + + ifndef CSCOPE +--- 85,91 ---- + endif + + ifndef WINVER +! WINVER = 0x0500 + endif + + ifndef CSCOPE +*** ../vim-7.3.585/src/version.c 2012-07-06 13:36:36.000000000 +0200 +--- src/version.c 2012-07-06 13:39:41.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 586, + /**/ + +-- +From "know your smileys": + :-& Eating spaghetti + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.587 b/source/ap/vim/patches/7.3.587 new file mode 100644 index 00000000..22252318 --- /dev/null +++ b/source/ap/vim/patches/7.3.587 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.587 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.587 +Problem: Compiler warning for local var shadowing global var. +Solution: Rename the var and move it to an inner block. (Christian Brabandt) +Files: src/buffer.c + + +*** ../vim-7.3.586/src/buffer.c 2012-06-20 17:54:34.000000000 +0200 +--- src/buffer.c 2012-07-06 16:19:32.000000000 +0200 +*************** +*** 1363,1371 **** + int action; + { + buf_T *prevbuf; +- #ifdef FEAT_WINDOWS +- win_T *prevwin; +- #endif + int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL + || action == DOBUF_WIPE); + +--- 1363,1368 ---- +*************** +*** 1406,1412 **** + #endif + { + #ifdef FEAT_WINDOWS +! prevwin = curwin; + #endif + if (prevbuf == curbuf) + u_sync(FALSE); +--- 1403,1409 ---- + #endif + { + #ifdef FEAT_WINDOWS +! win_T *previouswin = curwin; + #endif + if (prevbuf == curbuf) + u_sync(FALSE); +*************** +*** 1415,1423 **** + && !P_HID(prevbuf) + && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); + #ifdef FEAT_WINDOWS +! if (curwin != prevwin && win_valid(prevwin)) + /* autocommands changed curwin, Grr! */ +! curwin = prevwin; + #endif + } + } +--- 1412,1420 ---- + && !P_HID(prevbuf) + && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); + #ifdef FEAT_WINDOWS +! if (curwin != previouswin && win_valid(previouswin)) + /* autocommands changed curwin, Grr! */ +! curwin = previouswin; + #endif + } + } +*** ../vim-7.3.586/src/version.c 2012-07-06 13:40:44.000000000 +0200 +--- src/version.c 2012-07-06 16:19:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 587, + /**/ + +-- +There's no place like $(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 /// diff --git a/source/ap/vim/patches/7.3.588 b/source/ap/vim/patches/7.3.588 new file mode 100644 index 00000000..6dfabd07 --- /dev/null +++ b/source/ap/vim/patches/7.3.588 @@ -0,0 +1,85 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.588 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.588 +Problem: Crash on NULL pointer. +Solution: Fix the immediate problem by checking for NULL. (Lech Lorens) +Files: src/window.c + + +*** ../vim-7.3.587/src/window.c 2012-06-13 18:15:13.000000000 +0200 +--- src/window.c 2012-07-06 16:32:59.000000000 +0200 +*************** +*** 2184,2190 **** + } + + #ifdef FEAT_AUTOCMD +! if (win->w_closing || win->w_buffer->b_closing) + return; /* window is already being closed */ + if (win == aucmd_win) + { +--- 2184,2190 ---- + } + + #ifdef FEAT_AUTOCMD +! if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing)) + return; /* window is already being closed */ + if (win == aucmd_win) + { +*************** +*** 3723,3729 **** + enter_tabpage(tp, old_curbuf, trigger_autocmds) + tabpage_T *tp; + buf_T *old_curbuf UNUSED; +! int trigger_autocmds UNUSED; + { + int old_off = tp->tp_firstwin->w_winrow; + win_T *next_prevwin = tp->tp_prevwin; +--- 3723,3729 ---- + enter_tabpage(tp, old_curbuf, trigger_autocmds) + tabpage_T *tp; + buf_T *old_curbuf UNUSED; +! int trigger_autocmds UNUSED; + { + int old_off = tp->tp_firstwin->w_winrow; + win_T *next_prevwin = tp->tp_prevwin; +*************** +*** 3868,3874 **** + void + goto_tabpage_tp(tp, trigger_autocmds) + tabpage_T *tp; +! int trigger_autocmds; + { + /* Don't repeat a message in another tab page. */ + set_keep_msg(NULL, 0); +--- 3868,3874 ---- + void + goto_tabpage_tp(tp, trigger_autocmds) + tabpage_T *tp; +! int trigger_autocmds; + { + /* Don't repeat a message in another tab page. */ + set_keep_msg(NULL, 0); +*** ../vim-7.3.587/src/version.c 2012-07-06 16:21:58.000000000 +0200 +--- src/version.c 2012-07-06 16:37:47.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 588, + /**/ + +-- +Momento mori, ergo carpe diem + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.589 b/source/ap/vim/patches/7.3.589 new file mode 100644 index 00000000..fdda2b95 --- /dev/null +++ b/source/ap/vim/patches/7.3.589 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.589 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.589 +Problem: Crash when $HOME is not set. +Solution: Check for a NULL pointer. (Chris Webb) +Files: src/misc1.c + + +*** ../vim-7.3.588/src/misc1.c 2012-06-29 15:04:34.000000000 +0200 +--- src/misc1.c 2012-07-06 16:44:39.000000000 +0200 +*************** +*** 4496,4503 **** + #else + homedir_env_orig = homedir_env = mch_getenv((char_u *)"HOME"); + #endif + #if defined(FEAT_MODIFY_FNAME) || defined(WIN3264) +! if (vim_strchr(homedir_env, '~') != NULL) + { + int usedlen = 0; + int flen; +--- 4496,4507 ---- + #else + homedir_env_orig = homedir_env = mch_getenv((char_u *)"HOME"); + #endif ++ /* Empty is the same as not set. */ ++ if (homedir_env != NULL && *homedir_env == NUL) ++ homedir_env = NULL; ++ + #if defined(FEAT_MODIFY_FNAME) || defined(WIN3264) +! if (homedir_env != NULL && vim_strchr(homedir_env, '~') != NULL) + { + int usedlen = 0; + int flen; +*************** +*** 4513,4520 **** + } + #endif + +- if (homedir_env != NULL && *homedir_env == NUL) +- homedir_env = NULL; + if (homedir_env != NULL) + envlen = STRLEN(homedir_env); + +--- 4517,4522 ---- +*** ../vim-7.3.588/src/version.c 2012-07-06 16:39:43.000000000 +0200 +--- src/version.c 2012-07-06 16:45:18.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 589, + /**/ + +-- +I AM THANKFUL... +...for the taxes that I pay because it means that I am employed. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.590 b/source/ap/vim/patches/7.3.590 new file mode 100644 index 00000000..4e524f79 --- /dev/null +++ b/source/ap/vim/patches/7.3.590 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.590 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.590 +Problem: The '< and '> marks cannot be set directly. +Solution: Allow setting '< and '>. (Christian Brabandt) +Files: src/mark.c + + +*** ../vim-7.3.589/src/mark.c 2011-02-25 15:11:17.000000000 +0100 +--- src/mark.c 2012-07-06 17:47:23.000000000 +0200 +*************** +*** 98,103 **** +--- 98,116 ---- + return OK; + } + ++ #ifdef FEAT_VISUAL ++ if (c == '<') ++ { ++ curbuf->b_visual.vi_start = *pos; ++ return OK; ++ } ++ if (c == '>') ++ { ++ curbuf->b_visual.vi_end = *pos; ++ return OK; ++ } ++ #endif ++ + #ifndef EBCDIC + if (c > 'z') /* some islower() and isupper() cannot handle + characters above 127 */ +*** ../vim-7.3.589/src/version.c 2012-07-06 16:49:37.000000000 +0200 +--- src/version.c 2012-07-06 17:49:00.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 590, + /**/ + +-- +The primary purpose of the DATA statement is to give names to constants; +instead of referring to pi as 3.141592653589793 at every appearance, the +variable PI can be given that value with a DATA statement and used instead +of the longer form of the constant. This also simplifies modifying the +program, should the value of pi change. + -- FORTRAN manual for Xerox Computers + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.591 b/source/ap/vim/patches/7.3.591 new file mode 100644 index 00000000..180fe608 --- /dev/null +++ b/source/ap/vim/patches/7.3.591 @@ -0,0 +1,208 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.591 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.591 +Problem: Can only move to a tab by absolute number. +Solution: Move a number of tabs to the left or the right. (Lech Lorens) +Files: runtime/doc/tabpage.txt, src/ex_cmds.h, src/ex_docmd.c, + src/testdir/test62.in, src/testdir/test62.ok, src/window.c + + +*** ../vim-7.3.590/runtime/doc/tabpage.txt 2010-08-15 21:57:17.000000000 +0200 +--- runtime/doc/tabpage.txt 2012-07-06 18:10:06.000000000 +0200 +*************** +*** 173,182 **** +--- 173,192 ---- + REORDERING TAB PAGES: + + :tabm[ove] [N] *:tabm* *:tabmove* ++ :[N]tabm[ove] + Move the current tab page to after tab page N. Use zero to + make the current tab page the first one. Without N the tab + page is made the last one. + ++ :tabm[ove] +[N] ++ :tabm[ove] -[N] ++ Move the current tab page N places to the right (with +) or to ++ the left (with -). ++ ++ Note that although it is possible to move a tab behind the N-th one by using ++ :Ntabmove, it is impossible to move it by N places by using :+Ntabmove. For ++ clarification what +N means in this context see |[range]|. ++ + + LOOPING OVER TAB PAGES: + +*** ../vim-7.3.590/src/ex_cmds.h 2012-05-18 18:47:11.000000000 +0200 +--- src/ex_cmds.h 2012-07-06 18:10:13.000000000 +0200 +*************** +*** 944,950 **** + EX(CMD_tabfirst, "tabfirst", ex_tabnext, + TRLBAR), + EX(CMD_tabmove, "tabmove", ex_tabmove, +! RANGE|NOTADR|ZEROR|COUNT|TRLBAR|ZEROR), + EX(CMD_tablast, "tablast", ex_tabnext, + TRLBAR), + EX(CMD_tabnext, "tabnext", ex_tabnext, +--- 944,950 ---- + EX(CMD_tabfirst, "tabfirst", ex_tabnext, + TRLBAR), + EX(CMD_tabmove, "tabmove", ex_tabmove, +! RANGE|NOTADR|ZEROR|EXTRA|NOSPC|TRLBAR), + EX(CMD_tablast, "tablast", ex_tabnext, + TRLBAR), + EX(CMD_tabnext, "tabnext", ex_tabnext, +*** ../vim-7.3.590/src/ex_docmd.c 2012-06-06 19:02:40.000000000 +0200 +--- src/ex_docmd.c 2012-07-06 18:16:25.000000000 +0200 +*************** +*** 7478,7484 **** + ex_tabmove(eap) + exarg_T *eap; + { +! tabpage_move(eap->addr_count == 0 ? 9999 : (int)eap->line2); + } + + /* +--- 7478,7519 ---- + ex_tabmove(eap) + exarg_T *eap; + { +! int tab_number = 9999; +! +! if (eap->arg && *eap->arg != NUL) +! { +! char_u *p = eap->arg; +! int relative = 0; /* argument +N/-N means: move N places to the +! * right/left relative to the current position. */ +! +! if (*eap->arg == '-') +! { +! relative = -1; +! p = eap->arg + 1; +! } +! else if (*eap->arg == '+') +! { +! relative = 1; +! p = eap->arg + 1; +! } +! else +! p = eap->arg; +! +! if (p == skipdigits(p)) +! { +! /* No numbers as argument. */ +! eap->errmsg = e_invarg; +! return; +! } +! +! tab_number = getdigits(&p); +! if (relative != 0) +! tab_number = tab_number * relative + tabpage_index(curtab) - 1;; +! } +! else if (eap->addr_count != 0) +! tab_number = eap->line2; +! +! tabpage_move(tab_number); + } + + /* +*** ../vim-7.3.590/src/testdir/test62.in 2012-03-07 22:55:17.000000000 +0100 +--- src/testdir/test62.in 2012-07-06 18:10:13.000000000 +0200 +*************** +*** 93,98 **** +--- 93,126 ---- + :endif + :" + :" ++ :for i in range(9) | tabnew | endfor ++ 1gt ++ Go=tabpagenr()
++ :tabmove 5 ++ i=tabpagenr()
++ :tabmove -2 ++ i=tabpagenr()
++ :tabmove +4 ++ i=tabpagenr()
++ :tabmove ++ i=tabpagenr()
++ :tabmove -20 ++ i=tabpagenr()
++ :tabmove +20 ++ i=tabpagenr()
++ :3tabmove ++ i=tabpagenr()
++ :7tabmove 5 ++ i=tabpagenr()
++ :let a='No error caught.' ++ :try ++ :tabmove foo ++ :catch E474 ++ :let a='E474 caught.' ++ :endtry ++ i=a
++ :" ++ :" + :/^Results/,$w! test.out + :qa! + ENDTEST +*** ../vim-7.3.590/src/testdir/test62.ok 2012-02-22 19:13:00.000000000 +0100 +--- src/testdir/test62.ok 2012-07-06 18:10:13.000000000 +0200 +*************** +*** 8,10 **** +--- 8,20 ---- + tab drop 1: pass + tab drop 2: pass + tab drop 3: pass ++ 1 ++ 6 ++ 4 ++ 8 ++ 10 ++ 1 ++ 10 ++ 4 ++ 6 ++ E474 caught. +*** ../vim-7.3.590/src/window.c 2012-07-06 16:39:43.000000000 +0200 +--- src/window.c 2012-07-06 18:10:13.000000000 +0200 +*************** +*** 3929,3935 **** + } + + /* Re-insert it at the specified position. */ +! if (n == 0) + { + curtab->tp_next = first_tabpage; + first_tabpage = curtab; +--- 3929,3935 ---- + } + + /* Re-insert it at the specified position. */ +! if (n <= 0) + { + curtab->tp_next = first_tabpage; + first_tabpage = curtab; +*** ../vim-7.3.590/src/version.c 2012-07-06 17:51:24.000000000 +0200 +--- src/version.c 2012-07-06 18:11:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 591, + /**/ + +-- +Bare feet magnetize sharp metal objects so they point upward from the +floor -- especially in the dark. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.592 b/source/ap/vim/patches/7.3.592 new file mode 100644 index 00000000..be13ef74 --- /dev/null +++ b/source/ap/vim/patches/7.3.592 @@ -0,0 +1,126 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.592 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.592 +Problem: Vim on GTK does not support g:browsefilter. +Solution: Add a GtkFileFilter to the file chooser. (Christian Brabandt) +Files: src/gui_gtk.c + + +*** ../vim-7.3.591/src/gui_gtk.c 2012-06-06 16:14:36.000000000 +0200 +--- src/gui_gtk.c 2012-07-10 13:08:06.000000000 +0200 +*************** +*** 840,846 **** + char_u *dflt, + char_u *ext UNUSED, + char_u *initdir, +! char_u *filter UNUSED) + { + #ifdef USE_FILE_CHOOSER + GtkWidget *fc; +--- 840,846 ---- + char_u *dflt, + char_u *ext UNUSED, + char_u *initdir, +! char_u *filter) + { + #ifdef USE_FILE_CHOOSER + GtkWidget *fc; +*************** +*** 848,853 **** +--- 848,854 ---- + char_u dirbuf[MAXPATHL]; + guint log_handler; + const gchar *domain = "Gtk"; ++ GtkFileFilter *gfilter; + + title = CONVERT_TO_UTF8(title); + +*************** +*** 879,884 **** +--- 880,924 ---- + NULL); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(fc), + (const gchar *)dirbuf); ++ ++ if (filter != NULL && *filter != NUL) ++ { ++ int i = 0; ++ char_u *patt; ++ char_u *p = filter; ++ ++ gfilter = gtk_file_filter_new(); ++ patt = alloc(STRLEN(filter)); ++ while (p != NULL && *p != NUL) ++ { ++ if (*p == '\n' || *p == ';' || *p == '\t') ++ { ++ STRNCPY(patt, filter, i); ++ patt[i] = '\0'; ++ if (*p == '\t') ++ gtk_file_filter_set_name(gfilter, (gchar *)patt); ++ else ++ { ++ gtk_file_filter_add_pattern(gfilter, (gchar *)patt); ++ if (*p == '\n') ++ { ++ gtk_file_chooser_add_filter((GtkFileChooser *)fc, ++ gfilter); ++ if (*(p + 1) != NUL) ++ gfilter = gtk_file_filter_new(); ++ } ++ } ++ filter = ++p; ++ i = 0; ++ } ++ else ++ { ++ p++; ++ i++; ++ } ++ } ++ vim_free(patt); ++ } + if (saving && dflt != NULL && *dflt != NUL) + gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(fc), (char *)dflt); + +*************** +*** 1304,1310 **** + gtk_widget_show(entry); + + /* Make Enter work like pressing OK. */ +! gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); + + text = CONVERT_TO_UTF8(textfield); + gtk_entry_set_text(GTK_ENTRY(entry), (const char *)text); +--- 1344,1350 ---- + gtk_widget_show(entry); + + /* Make Enter work like pressing OK. */ +! gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); + + text = CONVERT_TO_UTF8(textfield); + gtk_entry_set_text(GTK_ENTRY(entry), (const char *)text); +*** ../vim-7.3.591/src/version.c 2012-07-06 18:27:34.000000000 +0200 +--- src/version.c 2012-07-10 13:00:29.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 592, + /**/ + +-- +To be rich is not the end, but only a change of worries. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.593 b/source/ap/vim/patches/7.3.593 new file mode 100644 index 00000000..b8f26748 --- /dev/null +++ b/source/ap/vim/patches/7.3.593 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.593 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.593 +Problem: No easy way to decide if b:browsefilter will work. +Solution: Add the browsefilter feature. +Files: src/gui_gtk.c, src/eval.c, src/vim.h + + +*** ../vim-7.3.592/src/gui_gtk.c 2012-07-10 13:12:46.000000000 +0200 +--- src/gui_gtk.c 2012-07-10 13:40:38.000000000 +0200 +*************** +*** 779,787 **** + /* + * Implementation of the file selector related stuff + */ +- #if GTK_CHECK_VERSION(2,4,0) +- # define USE_FILE_CHOOSER +- #endif + + #ifndef USE_FILE_CHOOSER + static void +--- 779,784 ---- +*** ../vim-7.3.592/src/eval.c 2012-06-29 12:54:32.000000000 +0200 +--- src/eval.c 2012-07-10 13:34:10.000000000 +0200 +*************** +*** 12044,12049 **** +--- 12044,12054 ---- + "all_builtin_terms", + # endif + #endif ++ #if defined(FEAT_BROWSE) && (defined(USE_FILE_CHOOSER) \ ++ || defined(FEAT_GUI_W32) \ ++ || defined(FEAT_GUI_MOTIF)) ++ "browsefilter", ++ #endif + #ifdef FEAT_BYTEOFF + "byte_offset", + #endif +*** ../vim-7.3.592/src/vim.h 2012-06-13 17:28:51.000000000 +0200 +--- src/vim.h 2012-07-10 13:30:44.000000000 +0200 +*************** +*** 2125,2130 **** +--- 2125,2136 ---- + # endif + #endif + ++ #if defined(FEAT_BROWSE) && defined(GTK_CHECK_VERSION) ++ # if GTK_CHECK_VERSION(2,4,0) ++ # define USE_FILE_CHOOSER ++ # endif ++ #endif ++ + #ifndef FEAT_NETBEANS_INTG + # undef NBDEBUG + #endif +*** ../vim-7.3.592/src/version.c 2012-07-10 13:12:46.000000000 +0200 +--- src/version.c 2012-07-10 13:34:50.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 593, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +102. When filling out your driver's license application, you give + your IP address. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.594 b/source/ap/vim/patches/7.3.594 new file mode 100644 index 00000000..3f7d3b26 --- /dev/null +++ b/source/ap/vim/patches/7.3.594 @@ -0,0 +1,171 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.594 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.594 +Problem: The X command server doesn't work perfectly. It sends an empty + reply for as-keys requests. +Solution: Remove duplicate ga_init2(). Do not send a reply for as-keys + requests. (Brian Burns) +Files: src/if_xcmdsrv.c + + +*** ../vim-7.3.593/src/if_xcmdsrv.c 2010-08-15 21:57:27.000000000 +0200 +--- src/if_xcmdsrv.c 2012-07-10 14:15:59.000000000 +0200 +*************** +*** 655,661 **** + if (SendInit(dpy) < 0) + return NULL; + } +- ga_init2(&ga, 1, 100); + + /* + * Read the registry property. +--- 655,660 ---- +*************** +*** 1198,1206 **** + if ((*p == 'c' || *p == 'k') && (p[1] == 0)) + { + Window resWindow; +! char_u *name, *script, *serial, *end, *res; + Bool asKeys = *p == 'k'; +- garray_T reply; + char_u *enc; + + /* +--- 1197,1204 ---- + if ((*p == 'c' || *p == 'k') && (p[1] == 0)) + { + Window resWindow; +! char_u *name, *script, *serial, *end; + Bool asKeys = *p == 'k'; + char_u *enc; + + /* +*************** +*** 1256,1305 **** + if (script == NULL || name == NULL) + continue; + +! /* +! * Initialize the result property, so that we're ready at any +! * time if we need to return an error. +! */ +! if (resWindow != None) +! { +! ga_init2(&reply, 1, 100); + #ifdef FEAT_MBYTE +! ga_grow(&reply, 50 + STRLEN(p_enc)); +! sprintf(reply.ga_data, "%cr%c-E %s%c-s %s%c-r ", + 0, 0, p_enc, 0, serial, 0); +! reply.ga_len = 14 + STRLEN(p_enc) + STRLEN(serial); + #else +! ga_grow(&reply, 50); +! sprintf(reply.ga_data, "%cr%c-s %s%c-r ", 0, 0, serial, 0); +! reply.ga_len = 10 + STRLEN(serial); + #endif +! } +! res = NULL; +! if (serverName != NULL && STRICMP(name, serverName) == 0) +! { +! script = serverConvert(enc, script, &tofree); +! if (asKeys) +! server_to_input_buf(script); +! else +! res = eval_client_expr_to_string(script); +! vim_free(tofree); +! } +! if (resWindow != None) +! { +! if (res != NULL) +! ga_concat(&reply, res); +! else if (asKeys == 0) +! { +! ga_concat(&reply, (char_u *)_(e_invexprmsg)); +! ga_append(&reply, 0); +! ga_concat(&reply, (char_u *)"-c 1"); +! } +! ga_append(&reply, NUL); +! (void)AppendPropCarefully(dpy, resWindow, commProperty, +! reply.ga_data, reply.ga_len); +! ga_clear(&reply); +! } +! vim_free(res); + } + else if (*p == 'r' && p[1] == 0) + { +--- 1254,1305 ---- + if (script == NULL || name == NULL) + continue; + +! if (serverName != NULL && STRICMP(name, serverName) == 0) +! { +! script = serverConvert(enc, script, &tofree); +! if (asKeys) +! server_to_input_buf(script); +! else +! { +! char_u *res; +! +! res = eval_client_expr_to_string(script); +! if (resWindow != None) +! { +! garray_T reply; +! +! /* Initialize the result property. */ +! ga_init2(&reply, 1, 100); + #ifdef FEAT_MBYTE +! ga_grow(&reply, 50 + STRLEN(p_enc)); +! sprintf(reply.ga_data, "%cr%c-E %s%c-s %s%c-r ", + 0, 0, p_enc, 0, serial, 0); +! reply.ga_len = 14 + STRLEN(p_enc) + STRLEN(serial); + #else +! ga_grow(&reply, 50); +! sprintf(reply.ga_data, "%cr%c-s %s%c-r ", +! 0, 0, serial, 0); +! reply.ga_len = 10 + STRLEN(serial); + #endif +! +! /* Evaluate the expression and return the result. */ +! if (res != NULL) +! ga_concat(&reply, res); +! else +! { +! ga_concat(&reply, (char_u *)_(e_invexprmsg)); +! ga_append(&reply, 0); +! ga_concat(&reply, (char_u *)"-c 1"); +! } +! ga_append(&reply, NUL); +! (void)AppendPropCarefully(dpy, resWindow, commProperty, +! reply.ga_data, reply.ga_len); +! ga_clear(&reply); +! } +! vim_free(res); +! } +! vim_free(tofree); +! } + } + else if (*p == 'r' && p[1] == 0) + { +*** ../vim-7.3.593/src/version.c 2012-07-10 13:41:09.000000000 +0200 +--- src/version.c 2012-07-10 14:17:50.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 594, + /**/ + +-- +A meeting is an event at which the minutes are kept and the hours are lost. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.595 b/source/ap/vim/patches/7.3.595 new file mode 100644 index 00000000..0fc9b522 --- /dev/null +++ b/source/ap/vim/patches/7.3.595 @@ -0,0 +1,154 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.595 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.595 +Problem: The X command server responds slowly +Solution: Change the loop that waits for replies. (Brian Burns) +Files: src/if_xcmdsrv.c + + +*** ../vim-7.3.594/src/if_xcmdsrv.c 2012-07-10 14:25:00.000000000 +0200 +--- src/if_xcmdsrv.c 2012-07-10 14:44:13.000000000 +0200 +*************** +*** 572,632 **** + { + time_t start; + time_t now; +- time_t lastChk = 0; + XEvent event; +! XPropertyEvent *e = (XPropertyEvent *)&event; +! # define SEND_MSEC_POLL 50 + + time(&start); +! while (endCond(endData) == 0) + { + time(&now); + if (seconds >= 0 && (now - start) >= seconds) + break; +! if (now != lastChk) +! { +! lastChk = now; +! if (!WindowValid(dpy, w)) +! break; +! /* +! * Sometimes the PropertyChange event doesn't come. +! * This can be seen in eg: vim -c 'echo remote_expr("gvim", "3+2")' +! */ +! serverEventProc(dpy, NULL); +! } + if (localLoop) + { +- /* Just look out for the answer without calling back into Vim */ + #ifndef HAVE_SELECT +- struct pollfd fds; +- +- fds.fd = ConnectionNumber(dpy); +- fds.events = POLLIN; + if (poll(&fds, 1, SEND_MSEC_POLL) < 0) + break; + #else +! fd_set fds; +! struct timeval tv; +! +! tv.tv_sec = 0; +! tv.tv_usec = SEND_MSEC_POLL * 1000; +! FD_ZERO(&fds); +! FD_SET(ConnectionNumber(dpy), &fds); +! if (select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &tv) < 0) + break; + #endif +- while (XEventsQueued(dpy, QueuedAfterReading) > 0) +- { +- XNextEvent(dpy, &event); +- if (event.type == PropertyNotify && e->window == commWindow) +- serverEventProc(dpy, &event); +- } + } + else + { + if (got_int) + break; +! ui_delay((long)SEND_MSEC_POLL, TRUE); + ui_breakcheck(); + } + } +--- 572,626 ---- + { + time_t start; + time_t now; + XEvent event; +! +! #define UI_MSEC_DELAY 50 +! #define SEND_MSEC_POLL 500 +! #ifndef HAVE_SELECT +! struct pollfd fds; +! +! fds.fd = ConnectionNumber(dpy); +! fds.events = POLLIN; +! #else +! fd_set fds; +! struct timeval tv; +! +! tv.tv_sec = 0; +! tv.tv_usec = SEND_MSEC_POLL * 1000; +! FD_ZERO(&fds); +! FD_SET(ConnectionNumber(dpy), &fds); +! #endif + + time(&start); +! while (TRUE) + { ++ while (XCheckWindowEvent(dpy, commWindow, PropertyChangeMask, &event)) ++ serverEventProc(dpy, &event); ++ ++ if (endCond(endData) != 0) ++ break; ++ if (!WindowValid(dpy, w)) ++ break; + time(&now); + if (seconds >= 0 && (now - start) >= seconds) + break; +! +! /* Just look out for the answer without calling back into Vim */ + if (localLoop) + { + #ifndef HAVE_SELECT + if (poll(&fds, 1, SEND_MSEC_POLL) < 0) + break; + #else +! if (select(FD_SETSIZE, &fds, NULL, NULL, &tv) < 0) + break; + #endif + } + else + { + if (got_int) + break; +! ui_delay((long)UI_MSEC_DELAY, TRUE); + ui_breakcheck(); + } + } +*** ../vim-7.3.594/src/version.c 2012-07-10 14:25:00.000000000 +0200 +--- src/version.c 2012-07-10 14:52:16.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 595, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +104. When people ask about the Presidential Election you ask "Which country?" + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.596 b/source/ap/vim/patches/7.3.596 new file mode 100644 index 00000000..59513b2b --- /dev/null +++ b/source/ap/vim/patches/7.3.596 @@ -0,0 +1,171 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.596 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.596 +Problem: Can't remove all signs for a file or buffer. +Solution: Support "*" for the sign id. (Christian Brabandt) +Files: runtime/doc/sign.txt, src/buffer.c, src/ex_cmds.c, + src/proto/buffer.pro + + +*** ../vim-7.3.595/runtime/doc/sign.txt 2010-08-15 21:57:17.000000000 +0200 +--- runtime/doc/sign.txt 2012-07-10 15:05:19.000000000 +0200 +*************** +*** 150,157 **** + Remove the previously placed sign {id} from file {fname}. + See remark above about {fname} |:sign-fname|. + + :sign unplace {id} buffer={nr} +! Same, but use buffer {nr}. + + :sign unplace {id} + Remove the previously placed sign {id} from all files it +--- 153,166 ---- + Remove the previously placed sign {id} from file {fname}. + See remark above about {fname} |:sign-fname|. + ++ :sign unplace * file={fname} ++ Remove all placed signs in file {fname}. ++ + :sign unplace {id} buffer={nr} +! Remove the previously placed sign {id} from buffer {nr}. +! +! :sign unplace * buffer={nr} +! Remove all placed signs in buffer {nr}. + + :sign unplace {id} + Remove the previously placed sign {id} from all files it +*** ../vim-7.3.595/src/buffer.c 2012-07-06 16:21:58.000000000 +0200 +--- src/buffer.c 2012-07-10 15:06:05.000000000 +0200 +*************** +*** 57,63 **** + + #if defined(FEAT_SIGNS) + static void insert_sign __ARGS((buf_T *buf, signlist_T *prev, signlist_T *next, int id, linenr_T lnum, int typenr)); +- static void buf_delete_signs __ARGS((buf_T *buf)); + #endif + + #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) +--- 57,62 ---- +*************** +*** 5537,5543 **** + /* + * Delete signs in buffer "buf". + */ +! static void + buf_delete_signs(buf) + buf_T *buf; + { +--- 5536,5542 ---- + /* + * Delete signs in buffer "buf". + */ +! void + buf_delete_signs(buf) + buf_T *buf; + { +*** ../vim-7.3.595/src/ex_cmds.c 2012-05-18 16:24:06.000000000 +0200 +--- src/ex_cmds.c 2012-07-10 15:14:22.000000000 +0200 +*************** +*** 6997,7002 **** +--- 6997,7012 ---- + lnum = atoi((char *)arg); + arg = skiptowhite(arg); + } ++ else if (STRNCMP(arg, "*", 1) == 0 && idx == SIGNCMD_UNPLACE) ++ { ++ if (id != -1) ++ { ++ EMSG(_(e_invarg)); ++ return; ++ } ++ id = -2; ++ arg = skiptowhite(arg + 1); ++ } + else if (STRNCMP(arg, "name=", 5) == 0) + { + arg += 5; +*************** +*** 7033,7039 **** + { + EMSG2(_("E158: Invalid buffer name: %s"), arg); + } +! else if (id <= 0) + { + if (lnum >= 0 || sign_name != NULL) + EMSG(_(e_invarg)); +--- 7043,7049 ---- + { + EMSG2(_("E158: Invalid buffer name: %s"), arg); + } +! else if (id <= 0 && !(idx == SIGNCMD_UNPLACE && id == -2)) + { + if (lnum >= 0 || sign_name != NULL) + EMSG(_(e_invarg)); +*************** +*** 7074,7084 **** + } + else if (idx == SIGNCMD_UNPLACE) + { +- /* ":sign unplace {id} file={fname}" */ + if (lnum >= 0 || sign_name != NULL) + EMSG(_(e_invarg)); + else + { + lnum = buf_delsign(buf, id); + update_debug_sign(buf, lnum); + } +--- 7084,7100 ---- + } + else if (idx == SIGNCMD_UNPLACE) + { + if (lnum >= 0 || sign_name != NULL) + EMSG(_(e_invarg)); ++ else if (id == -2) ++ { ++ /* ":sign unplace * file={fname}" */ ++ redraw_buf_later(buf, NOT_VALID); ++ buf_delete_signs(buf); ++ } + else + { ++ /* ":sign unplace {id} file={fname}" */ + lnum = buf_delsign(buf, id); + update_debug_sign(buf, lnum); + } +*** ../vim-7.3.595/src/proto/buffer.pro 2012-02-22 14:58:24.000000000 +0100 +--- src/proto/buffer.pro 2012-07-10 15:06:10.000000000 +0200 +*************** +*** 60,65 **** +--- 60,66 ---- + int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum)); + int buf_findsigntype_id __ARGS((buf_T *buf, linenr_T lnum, int typenr)); + int buf_signcount __ARGS((buf_T *buf, linenr_T lnum)); ++ void buf_delete_signs __ARGS((buf_T *buf)); + void buf_delete_all_signs __ARGS((void)); + void sign_list_placed __ARGS((buf_T *rbuf)); + void sign_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after)); +*** ../vim-7.3.595/src/version.c 2012-07-10 14:56:42.000000000 +0200 +--- src/version.c 2012-07-10 15:16:40.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 596, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +105. When someone asks you for your address, you tell them your URL. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.597 b/source/ap/vim/patches/7.3.597 new file mode 100644 index 00000000..2a4f0b3d --- /dev/null +++ b/source/ap/vim/patches/7.3.597 @@ -0,0 +1,720 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.597 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.597 +Problem: 'clipboard' "autoselect" only applies to the * register. (Sergey + Vakulenko) +Solution: Make 'autoselect' work for the + register. (Christian Brabant) + Add the "autoselectplus" option in 'clipboard' and the "P" flag in + 'guioptions'. +Files: runtime/doc/options.txt, src/normal.c, src/ops.c, src/screen.c, + src/ui.c, src/globals.h, src/proto/ui.pro, src/option.h, src/gui.c + + +*** ../vim-7.3.596/runtime/doc/options.txt 2012-02-20 22:18:23.000000000 +0100 +--- runtime/doc/options.txt 2012-07-10 15:40:35.000000000 +0200 +*************** +*** 1437,1442 **** +--- 1452,1458 ---- + This option is a list of comma separated names. + These names are recognized: + ++ *clipboard-unnamed* + unnamed When included, Vim will use the clipboard register '*' + for all yank, delete, change and put operations which + would normally go to the unnamed register. When a +*************** +*** 1446,1460 **** + explicitly accessed using the "* notation. Also see + |gui-clipboard|. + + unnamedplus A variant of "unnamed" flag which uses the clipboard + register '+' (|quoteplus|) instead of register '*' for + all operations except yank. Yank shall copy the text + into register '+' and also into '*' when "unnamed" is + included. +! Only available with the |+x11| feature. + Availability can be checked with: > + if has('unnamedplus') + < + autoselect Works like the 'a' flag in 'guioptions': If present, + then whenever Visual mode is started, or the Visual + area extended, Vim tries to become the owner of the +--- 1462,1478 ---- + explicitly accessed using the "* notation. Also see + |gui-clipboard|. + ++ *clipboard-unnamedplus* + unnamedplus A variant of "unnamed" flag which uses the clipboard + register '+' (|quoteplus|) instead of register '*' for + all operations except yank. Yank shall copy the text + into register '+' and also into '*' when "unnamed" is + included. +! Only available with the |+X11| feature. + Availability can be checked with: > + if has('unnamedplus') + < ++ *clipboard-autoselect* + autoselect Works like the 'a' flag in 'guioptions': If present, + then whenever Visual mode is started, or the Visual + area extended, Vim tries to become the owner of the +*************** +*** 1466,1474 **** +--- 1484,1499 ---- + "autoselect" flag is used. + Also applies to the modeless selection. + ++ *clipboard-autoselectplus* ++ autoselectplus Like "autoselect" but using the + register instead of ++ the * register. Compare to the 'P' flag in ++ 'guioptions'. ++ ++ *clipboard-autoselectml* + autoselectml Like "autoselect", but for the modeless selection + only. Compare to the 'A' flag in 'guioptions'. + ++ *clipboard-html* + html When the clipboard contains HTML, use this when + pasting. When putting text on the clipboard, mark it + as HTML. This works to copy rendered HTML from +*************** +*** 1479,1484 **** +--- 1504,1510 ---- + Only supported for GTK version 2 and later. + Only available with the |+multi_byte| feature. + ++ *clipboard-exclude* + exclude:{pattern} + Defines a pattern that is matched against the name of + the terminal 'term'. If there is a match, no +*************** +*** 3547,3552 **** +--- 3600,3608 ---- + windowing system's global selection unless explicitly told to + by a yank or delete operation for the "* register. + The same applies to the modeless selection. ++ *'go-P'* ++ 'P' Like autoselect but using the "+ register instead of the "* ++ register. + *'go-A'* + 'A' Autoselect for the modeless selection. Like 'a', but only + applies to the modeless selection. +*** ../vim-7.3.596/src/normal.c 2012-06-29 13:56:01.000000000 +0200 +--- src/normal.c 2012-07-10 15:44:24.000000000 +0200 +*************** +*** 1451,1457 **** + * This could call do_pending_operator() recursively, but that's OK + * because gui_yank will be TRUE for the nested call. + */ +! if (clip_star.available + && oap->op_type != OP_NOP + && !gui_yank + # ifdef FEAT_VISUAL +--- 1451,1457 ---- + * This could call do_pending_operator() recursively, but that's OK + * because gui_yank will be TRUE for the nested call. + */ +! if ((clip_star.available || clip_plus.available) + && oap->op_type != OP_NOP + && !gui_yank + # ifdef FEAT_VISUAL +*** ../vim-7.3.596/src/ops.c 2012-06-29 13:34:15.000000000 +0200 +--- src/ops.c 2012-07-10 16:20:29.000000000 +0200 +*************** +*** 962,969 **** + * selection too. */ + if (name == '*' && clip_star.available) + { +! if (clip_isautosel()) +! clip_update_selection(); + may_get_selection(name); + } + #endif +--- 962,975 ---- + * selection too. */ + if (name == '*' && clip_star.available) + { +! if (clip_isautosel_star()) +! clip_update_selection(&clip_star); +! may_get_selection(name); +! } +! if (name == '+' && clip_plus.available) +! { +! if (clip_isautosel_plus()) +! clip_update_selection(&clip_plus); + may_get_selection(name); + } + #endif +*************** +*** 3190,3196 **** + + clip_own_selection(&clip_plus); + clip_gen_set_selection(&clip_plus); +! if (!clip_isautosel() && !did_star && curr == &(y_regs[PLUS_REGISTER])) + { + copy_yank_reg(&(y_regs[STAR_REGISTER])); + clip_own_selection(&clip_star); +--- 3196,3203 ---- + + clip_own_selection(&clip_plus); + clip_gen_set_selection(&clip_plus); +! if (!clip_isautosel_star() && !did_star +! && curr == &(y_regs[PLUS_REGISTER])) + { + copy_yank_reg(&(y_regs[STAR_REGISTER])); + clip_own_selection(&clip_star); +*** ../vim-7.3.596/src/screen.c 2012-06-13 18:06:32.000000000 +0200 +--- src/screen.c 2012-07-10 16:39:01.000000000 +0200 +*************** +*** 519,526 **** + # endif + # ifdef FEAT_CLIPBOARD + /* When Visual area changed, may have to update selection. */ +! if (clip_star.available && clip_isautosel()) +! clip_update_selection(); + # endif + #ifdef FEAT_GUI + /* Remove the cursor before starting to do anything, because +--- 519,528 ---- + # endif + # ifdef FEAT_CLIPBOARD + /* When Visual area changed, may have to update selection. */ +! if (clip_star.available && clip_isautosel_star()) +! clip_update_selection(&clip_star); +! if (clip_plus.available && clip_isautosel_plus()) +! clip_update_selection(&clip_plus); + # endif + #ifdef FEAT_GUI + /* Remove the cursor before starting to do anything, because +*************** +*** 814,821 **** + + #ifdef FEAT_CLIPBOARD + /* When Visual area changed, may have to update selection. */ +! if (clip_star.available && clip_isautosel()) +! clip_update_selection(); + #endif + + win_update(wp); +--- 816,825 ---- + + #ifdef FEAT_CLIPBOARD + /* When Visual area changed, may have to update selection. */ +! if (clip_star.available && clip_isautosel_star()) +! clip_update_selection(&clip_star); +! if (clip_plus.available && clip_isautosel_plus()) +! clip_update_selection(&clip_plus); + #endif + + win_update(wp); +*************** +*** 3000,3006 **** + area_highlighting = TRUE; + attr = hl_attr(HLF_V); + #if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) +! if (clip_star.available && !clip_star.owned && clip_isautosel()) + attr = hl_attr(HLF_VNC); + #endif + } +--- 3004,3013 ---- + area_highlighting = TRUE; + attr = hl_attr(HLF_V); + #if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) +! if ((clip_star.available && !clip_star.owned +! && clip_isautosel_star()) +! || (clip_plus.available && !clip_plus.owned +! && clip_isautosel_plus())) + attr = hl_attr(HLF_VNC); + #endif + } +*************** +*** 9060,9066 **** + || (wp != NULL && wp->w_width != Columns) + # endif + ) +! clip_clear_selection(); + else + clip_scroll_selection(-line_count); + #endif +--- 9067,9073 ---- + || (wp != NULL && wp->w_width != Columns) + # endif + ) +! clip_clear_selection(&clip_star); + else + clip_scroll_selection(-line_count); + #endif +*************** +*** 9281,9287 **** + || (wp != NULL && wp->w_width != Columns) + # endif + ) +! clip_clear_selection(); + else + clip_scroll_selection(line_count); + #endif +--- 9288,9294 ---- + || (wp != NULL && wp->w_width != Columns) + # endif + ) +! clip_clear_selection(&clip_star); + else + clip_scroll_selection(line_count); + #endif +*** ../vim-7.3.596/src/ui.c 2012-02-12 01:35:06.000000000 +0100 +--- src/ui.c 2012-07-10 16:43:17.000000000 +0200 +*************** +*** 381,386 **** +--- 381,388 ---- + + #if defined(FEAT_CLIPBOARD) || defined(PROTO) + ++ static void clip_copy_selection __ARGS((VimClipboard *clip)); ++ + /* + * Selection stuff using Visual mode, for cutting and pasting text to other + * windows. +*************** +*** 423,431 **** + * this is called whenever VIsual mode is ended. + */ + void +! clip_update_selection() + { +! pos_T start, end; + + /* If visual mode is only due to a redo command ("."), then ignore it */ + if (!redo_VIsual_busy && VIsual_active && (State & NORMAL)) +--- 425,434 ---- + * this is called whenever VIsual mode is ended. + */ + void +! clip_update_selection(clip) +! VimClipboard *clip; + { +! pos_T start, end; + + /* If visual mode is only due to a redo command ("."), then ignore it */ + if (!redo_VIsual_busy && VIsual_active && (State & NORMAL)) +*************** +*** 444,460 **** + start = curwin->w_cursor; + end = VIsual; + } +! if (!equalpos(clip_star.start, start) +! || !equalpos(clip_star.end, end) +! || clip_star.vmode != VIsual_mode) + { +! clip_clear_selection(); +! clip_star.start = start; +! clip_star.end = end; +! clip_star.vmode = VIsual_mode; +! clip_free_selection(&clip_star); +! clip_own_selection(&clip_star); +! clip_gen_set_selection(&clip_star); + } + } + } +--- 447,463 ---- + start = curwin->w_cursor; + end = VIsual; + } +! if (!equalpos(clip->start, start) +! || !equalpos(clip->end, end) +! || clip->vmode != VIsual_mode) + { +! clip_clear_selection(clip); +! clip->start = start; +! clip->end = end; +! clip->vmode = VIsual_mode; +! clip_free_selection(clip); +! clip_own_selection(clip); +! clip_gen_set_selection(clip); + } + } + } +*************** +*** 475,481 **** + int was_owned = cbd->owned; + + cbd->owned = (clip_gen_own_selection(cbd) == OK); +! if (!was_owned && cbd == &clip_star) + { + /* May have to show a different kind of highlighting for the + * selected area. There is no specific redraw command for this, +--- 478,484 ---- + int was_owned = cbd->owned; + + cbd->owned = (clip_gen_own_selection(cbd) == OK); +! if (!was_owned && (cbd == &clip_star || cbd == &clip_plus)) + { + /* May have to show a different kind of highlighting for the + * selected area. There is no specific redraw command for this, +*************** +*** 483,489 **** + if (cbd->owned + && (get_real_state() == VISUAL + || get_real_state() == SELECTMODE) +! && clip_isautosel() + && hl_attr(HLF_V) != hl_attr(HLF_VNC)) + redraw_curbuf_later(INVERTED_ALL); + } +--- 486,493 ---- + if (cbd->owned + && (get_real_state() == VISUAL + || get_real_state() == SELECTMODE) +! && (cbd == &clip_star ? clip_isautosel_star() +! : clip_isautosel_plus()) + && hl_attr(HLF_V) != hl_attr(HLF_VNC)) + redraw_curbuf_later(INVERTED_ALL); + } +*************** +*** 502,513 **** + #ifdef FEAT_X11 + int was_owned = cbd->owned; + #endif +! int visual_selection = (cbd == &clip_star); + + clip_free_selection(cbd); + cbd->owned = FALSE; + if (visual_selection) +! clip_clear_selection(); + clip_gen_lose_selection(cbd); + #ifdef FEAT_X11 + if (visual_selection) +--- 506,520 ---- + #ifdef FEAT_X11 + int was_owned = cbd->owned; + #endif +! int visual_selection = FALSE; +! +! if (cbd == &clip_star || cbd == &clip_plus) +! visual_selection = TRUE; + + clip_free_selection(cbd); + cbd->owned = FALSE; + if (visual_selection) +! clip_clear_selection(cbd); + clip_gen_lose_selection(cbd); + #ifdef FEAT_X11 + if (visual_selection) +*************** +*** 518,524 **** + if (was_owned + && (get_real_state() == VISUAL + || get_real_state() == SELECTMODE) +! && clip_isautosel() + && hl_attr(HLF_V) != hl_attr(HLF_VNC)) + { + update_curbuf(INVERTED_ALL); +--- 525,532 ---- + if (was_owned + && (get_real_state() == VISUAL + || get_real_state() == SELECTMODE) +! && (cbd == &clip_star ? +! clip_isautosel_star() : clip_isautosel_plus()) + && hl_attr(HLF_V) != hl_attr(HLF_VNC)) + { + update_curbuf(INVERTED_ALL); +*************** +*** 534,551 **** + #endif + } + +! void +! clip_copy_selection() +! { +! if (VIsual_active && (State & NORMAL) && clip_star.available) +! { +! if (clip_isautosel()) +! clip_update_selection(); +! clip_free_selection(&clip_star); +! clip_own_selection(&clip_star); +! if (clip_star.owned) +! clip_get_selection(&clip_star); +! clip_gen_set_selection(&clip_star); + } + } + +--- 542,559 ---- + #endif + } + +! static void +! clip_copy_selection(clip) +! VimClipboard *clip; +! { +! if (VIsual_active && (State & NORMAL) && clip->available) +! { +! clip_update_selection(clip); +! clip_free_selection(clip); +! clip_own_selection(clip); +! if (clip->owned) +! clip_get_selection(clip); +! clip_gen_set_selection(clip); + } + } + +*************** +*** 555,575 **** + void + clip_auto_select() + { +! if (clip_isautosel()) +! clip_copy_selection(); + } + + /* +! * Return TRUE if automatic selection of Visual area is desired. + */ + int +! clip_isautosel() + { + return ( + #ifdef FEAT_GUI + gui.in_use ? (vim_strchr(p_go, GO_ASEL) != NULL) : + #endif +! clip_autoselect); + } + + +--- 563,600 ---- + void + clip_auto_select() + { +! if (clip_isautosel_star()) +! clip_copy_selection(&clip_star); +! if (clip_isautosel_plus()) +! clip_copy_selection(&clip_plus); + } + + /* +! * Return TRUE if automatic selection of Visual area is desired for the * +! * register. + */ + int +! clip_isautosel_star() + { + return ( + #ifdef FEAT_GUI + gui.in_use ? (vim_strchr(p_go, GO_ASEL) != NULL) : + #endif +! clip_autoselect_star); +! } +! +! /* +! * Return TRUE if automatic selection of Visual area is desired for the + +! * register. +! */ +! int +! clip_isautosel_plus() +! { +! return ( +! #ifdef FEAT_GUI +! gui.in_use ? (vim_strchr(p_go, GO_ASELPLUS) != NULL) : +! #endif +! clip_autoselect_plus); + } + + +*************** +*** 657,663 **** + VimClipboard *cb = &clip_star; + + if (cb->state == SELECT_DONE) +! clip_clear_selection(); + + row = check_row(row); + col = check_col(col); +--- 682,688 ---- + VimClipboard *cb = &clip_star; + + if (cb->state == SELECT_DONE) +! clip_clear_selection(cb); + + row = check_row(row); + col = check_col(col); +*************** +*** 749,755 **** + printf("Selection ended: (%u,%u) to (%u,%u)\n", cb->start.lnum, + cb->start.col, cb->end.lnum, cb->end.col); + #endif +! if (clip_isautosel() + || ( + #ifdef FEAT_GUI + gui.in_use ? (vim_strchr(p_go, GO_ASELML) != NULL) : +--- 774,780 ---- + printf("Selection ended: (%u,%u) to (%u,%u)\n", cb->start.lnum, + cb->start.col, cb->end.lnum, cb->end.col); + #endif +! if (clip_isautosel_star() + || ( + #ifdef FEAT_GUI + gui.in_use ? (vim_strchr(p_go, GO_ASELML) != NULL) : +*************** +*** 932,947 **** + * Called from outside to clear selected region from the display + */ + void +! clip_clear_selection() + { +- VimClipboard *cb = &clip_star; + +! if (cb->state == SELECT_CLEARED) + return; + +! clip_invert_area((int)cb->start.lnum, cb->start.col, (int)cb->end.lnum, +! cb->end.col, CLIP_CLEAR); +! cb->state = SELECT_CLEARED; + } + + /* +--- 957,972 ---- + * Called from outside to clear selected region from the display + */ + void +! clip_clear_selection(cbd) +! VimClipboard *cbd; + { + +! if (cbd->state == SELECT_CLEARED) + return; + +! clip_invert_area((int)cbd->start.lnum, cbd->start.col, (int)cbd->end.lnum, +! cbd->end.col, CLIP_CLEAR); +! cbd->state = SELECT_CLEARED; + } + + /* +*************** +*** 954,960 **** + if (clip_star.state == SELECT_DONE + && row2 >= clip_star.start.lnum + && row1 <= clip_star.end.lnum) +! clip_clear_selection(); + } + + /* +--- 979,985 ---- + if (clip_star.state == SELECT_DONE + && row2 >= clip_star.start.lnum + && row1 <= clip_star.end.lnum) +! clip_clear_selection(&clip_star); + } + + /* +*** ../vim-7.3.596/src/globals.h 2012-06-29 12:35:40.000000000 +0200 +--- src/globals.h 2012-07-10 16:35:13.000000000 +0200 +*************** +*** 517,523 **** + # define CLIP_UNNAMED_PLUS 2 + EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */ + +! EXTERN int clip_autoselect INIT(= FALSE); + EXTERN int clip_autoselectml INIT(= FALSE); + EXTERN int clip_html INIT(= FALSE); + EXTERN regprog_T *clip_exclude_prog INIT(= NULL); +--- 517,524 ---- + # define CLIP_UNNAMED_PLUS 2 + EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */ + +! EXTERN int clip_autoselect_star INIT(= FALSE); +! EXTERN int clip_autoselect_plus INIT(= FALSE); + EXTERN int clip_autoselectml INIT(= FALSE); + EXTERN int clip_html INIT(= FALSE); + EXTERN regprog_T *clip_exclude_prog INIT(= NULL); +*** ../vim-7.3.596/src/proto/ui.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/ui.pro 2012-07-10 16:37:35.000000000 +0200 +*************** +*** 11,27 **** + void ui_new_shellsize __ARGS((void)); + void ui_breakcheck __ARGS((void)); + void clip_init __ARGS((int can_use)); +! void clip_update_selection __ARGS((void)); + void clip_own_selection __ARGS((VimClipboard *cbd)); + void clip_lose_selection __ARGS((VimClipboard *cbd)); +- void clip_copy_selection __ARGS((void)); + void clip_auto_select __ARGS((void)); +! int clip_isautosel __ARGS((void)); + void clip_modeless __ARGS((int button, int is_click, int is_drag)); + void clip_start_selection __ARGS((int col, int row, int repeated_click)); + void clip_process_selection __ARGS((int button, int col, int row, int_u repeated_click)); + void clip_may_redraw_selection __ARGS((int row, int col, int len)); +! void clip_clear_selection __ARGS((void)); + void clip_may_clear_selection __ARGS((int row1, int row2)); + void clip_scroll_selection __ARGS((int rows)); + void clip_copy_modeless_selection __ARGS((int both)); +--- 11,27 ---- + void ui_new_shellsize __ARGS((void)); + void ui_breakcheck __ARGS((void)); + void clip_init __ARGS((int can_use)); +! void clip_update_selection __ARGS((VimClipboard *clip)); + void clip_own_selection __ARGS((VimClipboard *cbd)); + void clip_lose_selection __ARGS((VimClipboard *cbd)); + void clip_auto_select __ARGS((void)); +! int clip_isautosel_star __ARGS((void)); +! int clip_isautosel_plus __ARGS((void)); + void clip_modeless __ARGS((int button, int is_click, int is_drag)); + void clip_start_selection __ARGS((int col, int row, int repeated_click)); + void clip_process_selection __ARGS((int button, int col, int row, int_u repeated_click)); + void clip_may_redraw_selection __ARGS((int row, int col, int len)); +! void clip_clear_selection __ARGS((VimClipboard *cbd)); + void clip_may_clear_selection __ARGS((int row1, int row2)); + void clip_scroll_selection __ARGS((int rows)); + void clip_copy_modeless_selection __ARGS((int both)); +*** ../vim-7.3.596/src/option.h 2012-06-06 16:12:54.000000000 +0200 +--- src/option.h 2012-07-10 15:54:32.000000000 +0200 +*************** +*** 229,234 **** +--- 229,235 ---- + #define GO_MENUS 'm' /* use menu bar */ + #define GO_NOSYSMENU 'M' /* don't source system menu */ + #define GO_POINTER 'p' /* pointer enter/leave callbacks */ ++ #define GO_ASELPLUS 'P' /* autoselectPlus */ + #define GO_RIGHT 'r' /* use right scrollbar */ + #define GO_VRIGHT 'R' /* right scrollbar with vert split */ + #define GO_TEAROFF 't' /* add tear-off menu items */ +*** ../vim-7.3.596/src/gui.c 2012-05-27 00:37:45.000000000 +0200 +--- src/gui.c 2012-07-10 16:43:34.000000000 +0200 +*************** +*** 3154,3160 **** + } + + if (clip_star.state != SELECT_CLEARED && !did_clip) +! clip_clear_selection(); + #endif + + /* Don't put events in the input queue now. */ +--- 3154,3160 ---- + } + + if (clip_star.state != SELECT_CLEARED && !did_clip) +! clip_clear_selection(&clip_star); + #endif + + /* Don't put events in the input queue now. */ +*** ../vim-7.3.596/src/version.c 2012-07-10 15:18:18.000000000 +0200 +--- src/version.c 2012-07-10 16:32:16.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 597, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +106. When told to "go to your room" you inform your parents that you + can't...because you were kicked out and banned. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.598 b/source/ap/vim/patches/7.3.598 new file mode 100644 index 00000000..3a38b4a7 --- /dev/null +++ b/source/ap/vim/patches/7.3.598 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.598 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.598 +Problem: Cannot act upon end of completion. (Taro Muraoka) +Solution: Add an autocommand event that is triggered when completion has + finished. (Idea by Florian Klein) +Files: src/edit.c, src/fileio.c, src/vim.h + + +*** ../vim-7.3.597/src/edit.c 2012-07-06 13:36:36.000000000 +0200 +--- src/edit.c 2012-07-10 17:02:37.000000000 +0200 +*************** +*** 3824,3829 **** +--- 3824,3834 ---- + if (want_cindent && in_cinkeys(KEY_COMPLETE, ' ', inindent(0))) + do_c_expr_indent(); + #endif ++ #ifdef FEAT_AUTOCMD ++ /* Trigger the CompleteDone event to give scripts a chance to act ++ * upon the completion. */ ++ apply_autocmds(EVENT_COMPLETEDONE, NULL, NULL, FALSE, curbuf); ++ #endif + } + } + +*** ../vim-7.3.597/src/fileio.c 2012-06-13 14:28:16.000000000 +0200 +--- src/fileio.c 2012-07-10 17:05:51.000000000 +0200 +*************** +*** 7643,7648 **** +--- 7643,7649 ---- + {"CmdwinEnter", EVENT_CMDWINENTER}, + {"CmdwinLeave", EVENT_CMDWINLEAVE}, + {"ColorScheme", EVENT_COLORSCHEME}, ++ {"CompleteDone", EVENT_COMPLETEDONE}, + {"CursorHold", EVENT_CURSORHOLD}, + {"CursorHoldI", EVENT_CURSORHOLDI}, + {"CursorMoved", EVENT_CURSORMOVED}, +*** ../vim-7.3.597/src/vim.h 2012-07-10 13:41:09.000000000 +0200 +--- src/vim.h 2012-07-10 17:06:24.000000000 +0200 +*************** +*** 1241,1246 **** +--- 1241,1247 ---- + EVENT_CMDWINENTER, /* after entering the cmdline window */ + EVENT_CMDWINLEAVE, /* before leaving the cmdline window */ + EVENT_COLORSCHEME, /* after loading a colorscheme */ ++ EVENT_COMPLETEDONE, /* after finishing insert complete */ + EVENT_FILEAPPENDPOST, /* after appending to a file */ + EVENT_FILEAPPENDPRE, /* before appending to a file */ + EVENT_FILEAPPENDCMD, /* append to a file using command */ +*** ../vim-7.3.597/src/version.c 2012-07-10 16:49:08.000000000 +0200 +--- src/version.c 2012-07-10 17:08:41.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 598, + /**/ + +-- +Laughing helps. It's like jogging on the inside. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.599 b/source/ap/vim/patches/7.3.599 new file mode 100644 index 00000000..adfe6f99 --- /dev/null +++ b/source/ap/vim/patches/7.3.599 @@ -0,0 +1,107 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.599 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.599 (after 7.3.597) +Problem: Missing change in one file. +Solution: Patch for changed clip_autoselect(). +Files: src/option.c + + +*** ../vim-7.3.598/src/option.c 2012-06-29 15:51:26.000000000 +0200 +--- src/option.c 2012-07-10 16:35:07.000000000 +0200 +*************** +*** 7377,7383 **** + check_clipboard_option() + { + int new_unnamed = 0; +! int new_autoselect = FALSE; + int new_autoselectml = FALSE; + int new_html = FALSE; + regprog_T *new_exclude_prog = NULL; +--- 7377,7384 ---- + check_clipboard_option() + { + int new_unnamed = 0; +! int new_autoselect_star = FALSE; +! int new_autoselect_plus = FALSE; + int new_autoselectml = FALSE; + int new_html = FALSE; + regprog_T *new_exclude_prog = NULL; +*************** +*** 7398,7410 **** + p += 11; + } + else if (STRNCMP(p, "autoselect", 10) == 0 +! && (p[10] == ',' || p[10] == NUL)) + { +! new_autoselect = TRUE; + p += 10; + } + else if (STRNCMP(p, "autoselectml", 12) == 0 +! && (p[12] == ',' || p[12] == NUL)) + { + new_autoselectml = TRUE; + p += 12; +--- 7399,7417 ---- + p += 11; + } + else if (STRNCMP(p, "autoselect", 10) == 0 +! && (p[10] == ',' || p[10] == NUL)) + { +! new_autoselect_star = TRUE; + p += 10; + } ++ else if (STRNCMP(p, "autoselectplus", 14) == 0 ++ && (p[14] == ',' || p[14] == NUL)) ++ { ++ new_autoselect_plus = TRUE; ++ p += 14; ++ } + else if (STRNCMP(p, "autoselectml", 12) == 0 +! && (p[12] == ',' || p[12] == NUL)) + { + new_autoselectml = TRUE; + p += 12; +*************** +*** 7433,7439 **** + if (errmsg == NULL) + { + clip_unnamed = new_unnamed; +! clip_autoselect = new_autoselect; + clip_autoselectml = new_autoselectml; + clip_html = new_html; + vim_free(clip_exclude_prog); +--- 7440,7447 ---- + if (errmsg == NULL) + { + clip_unnamed = new_unnamed; +! clip_autoselect_star = new_autoselect_star; +! clip_autoselect_plus = new_autoselect_plus; + clip_autoselectml = new_autoselectml; + clip_html = new_html; + vim_free(clip_exclude_prog); +*** ../vim-7.3.598/src/version.c 2012-07-10 17:14:50.000000000 +0200 +--- src/version.c 2012-07-10 18:30:17.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 599, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +108. While reading a magazine, you look for the Zoom icon for a better + look at a photograph. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.600 b/source/ap/vim/patches/7.3.600 new file mode 100644 index 00000000..6504da01 --- /dev/null +++ b/source/ap/vim/patches/7.3.600 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.600 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.600 +Problem: <f-args> is not expanded properly with DBCS encoding. +Solution: Skip over character instead of byte. (Yukihiro Nakadaira) +Files: src/ex_docmd.c + + +*** ../vim-7.3.599/src/ex_docmd.c 2012-07-06 18:27:34.000000000 +0200 +--- src/ex_docmd.c 2012-07-10 19:20:10.000000000 +0200 +*************** +*** 5845,5852 **** +--- 5845,5858 ---- + } + else + { ++ #ifdef FEAT_MBYTE ++ int charlen = (*mb_ptr2len)(p); ++ len += charlen; ++ p += charlen; ++ #else + ++len; + ++p; ++ #endif + } + } + +*************** +*** 5889,5895 **** + } + else + { +! *q++ = *p++; + } + } + *q++ = '"'; +--- 5895,5901 ---- + } + else + { +! MB_COPY_CHAR(p, q); + } + } + *q++ = '"'; +*** ../vim-7.3.599/src/version.c 2012-07-10 18:31:49.000000000 +0200 +--- src/version.c 2012-07-10 19:21:29.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 600, + /**/ + +-- +In a world without walls and borders, who needs windows and gates? + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.601 b/source/ap/vim/patches/7.3.601 new file mode 100644 index 00000000..b61a9331 --- /dev/null +++ b/source/ap/vim/patches/7.3.601 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.601 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.601 +Problem: Bad code style. +Solution: Insert space, remove parens. +Files: src/farsi.c + + +*** ../vim-7.3.600/src/farsi.c 2010-08-15 21:57:28.000000000 +0200 +--- src/farsi.c 2012-07-12 21:59:15.000000000 +0200 +*************** +*** 1813,1819 **** + ptr[i] = toF_leading(ptr[i]); + ++i; + +! while(canF_Rjoin(ptr[i]) && (i < llen)) + { + ptr[i] = toF_Rjoin(ptr[i]); + if (F_isterm(ptr[i]) || !F_isalpha(ptr[i])) +--- 1813,1819 ---- + ptr[i] = toF_leading(ptr[i]); + ++i; + +! while (canF_Rjoin(ptr[i]) && i < llen) + { + ptr[i] = toF_Rjoin(ptr[i]); + if (F_isterm(ptr[i]) || !F_isalpha(ptr[i])) +*** ../vim-7.3.600/src/version.c 2012-07-10 19:25:06.000000000 +0200 +--- src/version.c 2012-07-16 17:25:48.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 601, + /**/ + +-- +There are three kinds of persons: Those who can count and 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 /// diff --git a/source/ap/vim/patches/7.3.602 b/source/ap/vim/patches/7.3.602 new file mode 100644 index 00000000..fd5f3cf4 --- /dev/null +++ b/source/ap/vim/patches/7.3.602 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.602 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.602 +Problem: Missing files in distribution. +Solution: Update the list of files. +Files: Filelist + + +*** ../vim-7.3.601/Filelist 2011-10-20 16:35:25.000000000 +0200 +--- Filelist 2012-06-20 12:06:41.000000000 +0200 +*************** +*** 463,468 **** +--- 463,469 ---- + runtime/macros/hanoi/hanoi.vim \ + runtime/macros/hanoi/poster \ + runtime/macros/justify.vim \ ++ runtime/macros/less.bat \ + runtime/macros/less.sh \ + runtime/macros/less.vim \ + runtime/macros/life/click.me \ +*************** +*** 666,671 **** +--- 667,674 ---- + + # generic language files + LANG_GEN = \ ++ runtime/doc/*-de.1 \ ++ runtime/doc/*-de.UTF-8.1 \ + runtime/doc/*-fr.1 \ + runtime/doc/*-fr.UTF-8.1 \ + runtime/doc/*-it.1 \ +*** ../vim-7.3.601/src/version.c 2012-07-16 17:26:18.000000000 +0200 +--- src/version.c 2012-07-16 17:27:31.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 602, + /**/ + +-- +Never eat yellow snow. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.603 b/source/ap/vim/patches/7.3.603 new file mode 100644 index 00000000..00a024b0 --- /dev/null +++ b/source/ap/vim/patches/7.3.603 @@ -0,0 +1,370 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.603 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.603 +Problem: It is possible to add replace builtin functions by calling + extend() on g:. +Solution: Add a flag to a dict to indicate it is a scope. Check for + existing functions. (ZyX) +Files: src/buffer.c, src/eval.c, src/proto/eval.pro, src/structs.h, + src/testdir/test34.in, src/testdir/test34.ok, src/window.c + + +*** ../vim-7.3.602/src/buffer.c 2012-07-10 15:18:18.000000000 +0200 +--- src/buffer.c 2012-07-16 16:52:58.000000000 +0200 +*************** +*** 1747,1753 **** + buf->b_wininfo->wi_win = curwin; + + #ifdef FEAT_EVAL +! init_var_dict(&buf->b_vars, &buf->b_bufvar); /* init b: variables */ + #endif + #ifdef FEAT_SYN_HL + hash_init(&buf->b_s.b_keywtab); +--- 1747,1754 ---- + buf->b_wininfo->wi_win = curwin; + + #ifdef FEAT_EVAL +! /* init b: variables */ +! init_var_dict(&buf->b_vars, &buf->b_bufvar, VAR_SCOPE); + #endif + #ifdef FEAT_SYN_HL + hash_init(&buf->b_s.b_keywtab); +*** ../vim-7.3.602/src/eval.c 2012-07-10 13:41:09.000000000 +0200 +--- src/eval.c 2012-07-16 17:18:11.000000000 +0200 +*************** +*** 850,857 **** + int i; + struct vimvar *p; + +! init_var_dict(&globvardict, &globvars_var); +! init_var_dict(&vimvardict, &vimvars_var); + vimvardict.dv_lock = VAR_FIXED; + hash_init(&compat_hashtab); + hash_init(&func_hashtab); +--- 850,857 ---- + int i; + struct vimvar *p; + +! init_var_dict(&globvardict, &globvars_var, VAR_DEF_SCOPE); +! init_var_dict(&vimvardict, &vimvars_var, VAR_SCOPE); + vimvardict.dv_lock = VAR_FIXED; + hash_init(&compat_hashtab); + hash_init(&func_hashtab); +*************** +*** 2725,2738 **** + lp->ll_dict = lp->ll_tv->vval.v_dict; + lp->ll_di = dict_find(lp->ll_dict, key, len); + +! /* When assigning to g: check that a function and variable name is +! * valid. */ +! if (rettv != NULL && lp->ll_dict == &globvardict) + { +! if (rettv->v_type == VAR_FUNC + && var_check_func_name(key, lp->ll_di == NULL)) +! return NULL; +! if (!valid_varname(key)) + return NULL; + } + +--- 2725,2750 ---- + lp->ll_dict = lp->ll_tv->vval.v_dict; + lp->ll_di = dict_find(lp->ll_dict, key, len); + +! /* When assigning to a scope dictionary check that a function and +! * variable name is valid (only variable name unless it is l: or +! * g: dictionary). Disallow overwriting a builtin function. */ +! if (rettv != NULL && lp->ll_dict->dv_scope != 0) + { +! int prevval; +! int wrong; +! +! if (len != -1) +! { +! prevval = key[len]; +! key[len] = NUL; +! } +! wrong = (lp->ll_dict->dv_scope == VAR_DEF_SCOPE +! && rettv->v_type == VAR_FUNC + && var_check_func_name(key, lp->ll_di == NULL)) +! || !valid_varname(key); +! if (len != -1) +! key[len] = prevval; +! if (wrong) + return NULL; + } + +*************** +*** 6951,6957 **** + d = (dict_T *)alloc(sizeof(dict_T)); + if (d != NULL) + { +! /* Add the list to the list of dicts for garbage collection. */ + if (first_dict != NULL) + first_dict->dv_used_prev = d; + d->dv_used_next = first_dict; +--- 6963,6969 ---- + d = (dict_T *)alloc(sizeof(dict_T)); + if (d != NULL) + { +! /* Add the dict to the list of dicts for garbage collection. */ + if (first_dict != NULL) + first_dict->dv_used_prev = d; + d->dv_used_next = first_dict; +*************** +*** 6960,6965 **** +--- 6972,6978 ---- + + hash_init(&d->dv_hashtab); + d->dv_lock = 0; ++ d->dv_scope = 0; + d->dv_refcount = 0; + d->dv_copyID = 0; + } +*************** +*** 10203,10208 **** +--- 10216,10234 ---- + { + --todo; + di1 = dict_find(d1, hi2->hi_key, -1); ++ if (d1->dv_scope != 0) ++ { ++ /* Disallow replacing a builtin function in l: and g:. ++ * Check the key to be valid when adding to any ++ * scope. */ ++ if (d1->dv_scope == VAR_DEF_SCOPE ++ && HI2DI(hi2)->di_tv.v_type == VAR_FUNC ++ && var_check_func_name(hi2->hi_key, ++ di1 == NULL)) ++ break; ++ if (!valid_varname(hi2->hi_key)) ++ break; ++ } + if (di1 == NULL) + { + di1 = dictitem_copy(HI2DI(hi2)); +*************** +*** 20027,20033 **** + { + sv = SCRIPT_SV(ga_scripts.ga_len + 1) = + (scriptvar_T *)alloc_clear(sizeof(scriptvar_T)); +! init_var_dict(&sv->sv_dict, &sv->sv_var); + ++ga_scripts.ga_len; + } + } +--- 20053,20059 ---- + { + sv = SCRIPT_SV(ga_scripts.ga_len + 1) = + (scriptvar_T *)alloc_clear(sizeof(scriptvar_T)); +! init_var_dict(&sv->sv_dict, &sv->sv_var, VAR_SCOPE); + ++ga_scripts.ga_len; + } + } +*************** +*** 20038,20049 **** + * point to it. + */ + void +! init_var_dict(dict, dict_var) + dict_T *dict; + dictitem_T *dict_var; + { + hash_init(&dict->dv_hashtab); + dict->dv_lock = 0; + dict->dv_refcount = DO_NOT_FREE_CNT; + dict->dv_copyID = 0; + dict_var->di_tv.vval.v_dict = dict; +--- 20064,20077 ---- + * point to it. + */ + void +! init_var_dict(dict, dict_var, scope) + dict_T *dict; + dictitem_T *dict_var; ++ int scope; + { + hash_init(&dict->dv_hashtab); + dict->dv_lock = 0; ++ dict->dv_scope = scope; + dict->dv_refcount = DO_NOT_FREE_CNT; + dict->dv_copyID = 0; + dict_var->di_tv.vval.v_dict = dict; +*************** +*** 22304,22310 **** + /* + * Init l: variables. + */ +! init_var_dict(&fc->l_vars, &fc->l_vars_var); + if (selfdict != NULL) + { + /* Set l:self to "selfdict". Use "name" to avoid a warning from +--- 22332,22338 ---- + /* + * Init l: variables. + */ +! init_var_dict(&fc->l_vars, &fc->l_vars_var, VAR_DEF_SCOPE); + if (selfdict != NULL) + { + /* Set l:self to "selfdict". Use "name" to avoid a warning from +*************** +*** 22325,22331 **** + * Set a:0 to "argcount". + * Set a:000 to a list with room for the "..." arguments. + */ +! init_var_dict(&fc->l_avars, &fc->l_avars_var); + add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0", + (varnumber_T)(argcount - fp->uf_args.ga_len)); + /* Use "name" to avoid a warning from some compiler that checks the +--- 22353,22359 ---- + * Set a:0 to "argcount". + * Set a:000 to a list with room for the "..." arguments. + */ +! init_var_dict(&fc->l_avars, &fc->l_avars_var, VAR_SCOPE); + add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0", + (varnumber_T)(argcount - fp->uf_args.ga_len)); + /* Use "name" to avoid a warning from some compiler that checks the +*** ../vim-7.3.602/src/proto/eval.pro 2012-06-29 12:54:32.000000000 +0200 +--- src/proto/eval.pro 2012-07-16 16:55:16.000000000 +0200 +*************** +*** 93,99 **** + char_u *get_tv_string_chk __ARGS((typval_T *varp)); + char_u *get_var_value __ARGS((char_u *name)); + void new_script_vars __ARGS((scid_T id)); +! void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var)); + void vars_clear __ARGS((hashtab_T *ht)); + void copy_tv __ARGS((typval_T *from, typval_T *to)); + void ex_echo __ARGS((exarg_T *eap)); +--- 93,99 ---- + char_u *get_tv_string_chk __ARGS((typval_T *varp)); + char_u *get_var_value __ARGS((char_u *name)); + void new_script_vars __ARGS((scid_T id)); +! void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var, int scope)); + void vars_clear __ARGS((hashtab_T *ht)); + void copy_tv __ARGS((typval_T *from, typval_T *to)); + void ex_echo __ARGS((exarg_T *eap)); +*** ../vim-7.3.602/src/structs.h 2012-06-06 19:02:40.000000000 +0200 +--- src/structs.h 2012-07-16 16:56:43.000000000 +0200 +*************** +*** 1106,1111 **** +--- 1106,1116 ---- + #define VAR_DICT 5 /* "v_dict" is used */ + #define VAR_FLOAT 6 /* "v_float" is used */ + ++ /* Values for "dv_scope". */ ++ #define VAR_SCOPE 1 /* a:, v:, s:, etc. scope dictionaries */ ++ #define VAR_DEF_SCOPE 2 /* l:, g: scope dictionaries: here funcrefs are not ++ allowed to mask existing functions */ ++ + /* Values for "v_lock". */ + #define VAR_LOCKED 1 /* locked with lock(), can use unlock() */ + #define VAR_FIXED 2 /* locked forever */ +*************** +*** 1181,1186 **** +--- 1186,1192 ---- + int dv_copyID; /* ID used by deepcopy() */ + dict_T *dv_copydict; /* copied dict used by deepcopy() */ + char dv_lock; /* zero, VAR_LOCKED, VAR_FIXED */ ++ char dv_scope; /* zero, VAR_SCOPE, VAR_DEF_SCOPE */ + dict_T *dv_used_next; /* next dict in used dicts list */ + dict_T *dv_used_prev; /* previous dict in used dicts list */ + }; +*** ../vim-7.3.602/src/testdir/test34.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test34.in 2012-07-16 16:51:29.000000000 +0200 +*************** +*** 1,5 **** +--- 1,6 ---- + Test for user functions. + Also test an <expr> mapping calling a function. ++ Also test that a builtin function cannot be replaced. + + STARTTEST + :so small.vim +*************** +*** 58,64 **** + ---*--- + (one + (two +! [(one again:$-5,$w! test.out + :delfunc Table + :delfunc Compute + :delfunc Expr1 +--- 59,68 ---- + ---*--- + (one + (two +! [(one again:call append(line('$'), max([1, 2, 3])) +! :call extend(g:, {'max': function('min')}) +! :call append(line('$'), max([1, 2, 3])) +! :$-7,$w! test.out + :delfunc Table + :delfunc Compute + :delfunc Expr1 +*** ../vim-7.3.602/src/testdir/test34.ok 2011-10-12 22:02:07.000000000 +0200 +--- src/testdir/test34.ok 2012-07-16 16:43:15.000000000 +0200 +*************** +*** 4,6 **** +--- 4,8 ---- + 1. one + 2. two + 1. one again ++ 3 ++ 3 +*** ../vim-7.3.602/src/window.c 2012-07-06 18:27:34.000000000 +0200 +--- src/window.c 2012-07-16 16:53:45.000000000 +0200 +*************** +*** 3468,3474 **** + # endif + #ifdef FEAT_EVAL + /* init t: variables */ +! init_var_dict(&tp->tp_vars, &tp->tp_winvar); + #endif + tp->tp_ch_used = p_ch; + } +--- 3468,3474 ---- + # endif + #ifdef FEAT_EVAL + /* init t: variables */ +! init_var_dict(&tp->tp_vars, &tp->tp_winvar, VAR_SCOPE); + #endif + tp->tp_ch_used = p_ch; + } +*************** +*** 4410,4416 **** + #endif + #ifdef FEAT_EVAL + /* init w: variables */ +! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar); + #endif + #ifdef FEAT_FOLDING + foldInitWin(new_wp); +--- 4410,4416 ---- + #endif + #ifdef FEAT_EVAL + /* init w: variables */ +! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar, VAR_SCOPE); + #endif + #ifdef FEAT_FOLDING + foldInitWin(new_wp); +*** ../vim-7.3.602/src/version.c 2012-07-16 17:27:57.000000000 +0200 +--- src/version.c 2012-07-16 17:29:06.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 603, + /**/ + +-- +Birthdays are healthy. The more you have them, the longer you live. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.604 b/source/ap/vim/patches/7.3.604 new file mode 100644 index 00000000..f7e63bd0 --- /dev/null +++ b/source/ap/vim/patches/7.3.604 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.604 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.604 +Problem: inputdialog() doesn't use the cancel argument in the console. + (David Fishburn) +Solution: Use the third argument. (Christian Brabant) +Files: src/eval.c + + +*** ../vim-7.3.603/src/eval.c 2012-07-16 17:31:48.000000000 +0200 +--- src/eval.c 2012-07-16 19:20:47.000000000 +0200 +*************** +*** 12940,12945 **** +--- 12940,12946 ---- + int xp_namelen; + long argt; + ++ /* input() with a third argument: completion */ + rettv->vval.v_string = NULL; + + xp_name = get_tv_string_buf_chk(&argvars[2], buf); +*************** +*** 12958,12963 **** +--- 12959,12969 ---- + rettv->vval.v_string = + getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr, + xp_type, xp_arg); ++ if (rettv->vval.v_string == NULL ++ && argvars[1].v_type != VAR_UNKNOWN ++ && argvars[2].v_type != VAR_UNKNOWN) ++ rettv->vval.v_string = vim_strsave(get_tv_string_buf( ++ &argvars[2], buf)); + + vim_free(xp_arg); + +*** ../vim-7.3.603/src/version.c 2012-07-16 17:31:48.000000000 +0200 +--- src/version.c 2012-07-16 19:23:11.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 604, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +135. You cut classes or miss work so you can stay home and browse the web. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.605 b/source/ap/vim/patches/7.3.605 new file mode 100644 index 00000000..70338251 --- /dev/null +++ b/source/ap/vim/patches/7.3.605 @@ -0,0 +1,86 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.605 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.605 (after 7.3.577) +Problem: MS-Windows: Can't compile with older compilers. (Titov Anatoly) +Solution: Add #ifdef for MEMORYSTATUSEX. +Files: src/os_win32.c + + +*** ../vim-7.3.604/src/os_win32.c 2012-06-29 15:51:26.000000000 +0200 +--- src/os_win32.c 2012-07-19 11:35:00.000000000 +0200 +*************** +*** 4999,5020 **** + long_u + mch_avail_mem(int special) + { +! if (g_PlatformId != VER_PLATFORM_WIN32_NT) +! { +! MEMORYSTATUS ms; +! +! ms.dwLength = sizeof(MEMORYSTATUS); +! GlobalMemoryStatus(&ms); +! return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10); +! } +! else + { + MEMORYSTATUSEX ms; + + ms.dwLength = sizeof(MEMORYSTATUSEX); + GlobalMemoryStatusEx(&ms); + return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10); + } + } + + #ifdef FEAT_MBYTE +--- 4999,5025 ---- + long_u + mch_avail_mem(int special) + { +! #ifdef MEMORYSTATUSEX +! PlatformId(); +! if (g_PlatformId == VER_PLATFORM_WIN32_NT) + { + MEMORYSTATUSEX ms; + ++ /* Need to use GlobalMemoryStatusEx() when there is more memory than ++ * what fits in 32 bits. But it's not always available. */ + ms.dwLength = sizeof(MEMORYSTATUSEX); + GlobalMemoryStatusEx(&ms); + return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10); + } ++ else ++ #endif ++ { ++ MEMORYSTATUS ms; ++ ++ ms.dwLength = sizeof(MEMORYSTATUS); ++ GlobalMemoryStatus(&ms); ++ return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10); ++ } + } + + #ifdef FEAT_MBYTE +*** ../vim-7.3.604/src/version.c 2012-07-16 19:27:25.000000000 +0200 +--- src/version.c 2012-07-19 11:36:12.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 605, + /**/ + +-- +Fingers not found - Pound head on keyboard to continue. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.606 b/source/ap/vim/patches/7.3.606 new file mode 100644 index 00000000..2296653c --- /dev/null +++ b/source/ap/vim/patches/7.3.606 @@ -0,0 +1,76 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.606 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.606 +Problem: CTRL-P completion has a problem with multi-byte characters. +Solution: Check for next character being NUL properly. (Yasuhiro Matsumoto) +Files: src/search.c, src/macros.h + + +*** ../vim-7.3.605/src/search.c 2012-06-06 16:12:54.000000000 +0200 +--- src/search.c 2012-07-19 17:09:20.000000000 +0200 +*************** +*** 5141,5147 **** + && !(compl_cont_status & CONT_SOL) + #endif + && *startp != NUL +! && *(p = startp + 1) != NUL) + goto search_line; + } + line_breakcheck(); +--- 5141,5147 ---- + && !(compl_cont_status & CONT_SOL) + #endif + && *startp != NUL +! && *(p = startp + MB_PTR2LEN(startp)) != NUL) + goto search_line; + } + line_breakcheck(); +*** ../vim-7.3.605/src/macros.h 2010-09-21 16:56:29.000000000 +0200 +--- src/macros.h 2012-07-19 17:08:38.000000000 +0200 +*************** +*** 259,264 **** +--- 259,266 ---- + * PTR2CHAR(): get character from pointer. + */ + #ifdef FEAT_MBYTE ++ /* Get the length of the character p points to */ ++ # define MB_PTR2LEN(p) (has_mbyte ? (*mb_ptr2len)(p) : 1) + /* Advance multi-byte pointer, skip over composing chars. */ + # define mb_ptr_adv(p) p += has_mbyte ? (*mb_ptr2len)(p) : 1 + /* Advance multi-byte pointer, do not skip over composing chars. */ +*************** +*** 272,277 **** +--- 274,280 ---- + # define MB_CHARLEN(p) (has_mbyte ? mb_charlen(p) : (int)STRLEN(p)) + # define PTR2CHAR(p) (has_mbyte ? mb_ptr2char(p) : (int)*(p)) + #else ++ # define MB_PTR2LEN(p) 1 + # define mb_ptr_adv(p) ++p + # define mb_cptr_adv(p) ++p + # define mb_ptr_back(s, p) --p +*** ../vim-7.3.605/src/version.c 2012-07-19 11:37:22.000000000 +0200 +--- src/version.c 2012-07-19 17:13:53.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 606, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +151. You find yourself engaged to someone you've never actually met, + except through e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.607 b/source/ap/vim/patches/7.3.607 new file mode 100644 index 00000000..4dbf559d --- /dev/null +++ b/source/ap/vim/patches/7.3.607 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.607 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.607 +Problem: With an 8 color terminal the selected menu item is black on black, + because darkGrey as bg is the same as black. +Solution: Swap fg and bg colors. (James McCoy) +Files: src/syntax.c + + +*** ../vim-7.3.606/src/syntax.c 2012-06-01 13:18:48.000000000 +0200 +--- src/syntax.c 2012-07-19 17:34:42.000000000 +0200 +*************** +*** 6653,6660 **** + "PmenuThumb ctermbg=White guibg=White"), + CENT("Pmenu ctermbg=Magenta ctermfg=Black", + "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"), +! CENT("PmenuSel ctermbg=DarkGrey ctermfg=Black", +! "PmenuSel ctermbg=DarkGrey ctermfg=Black guibg=DarkGrey"), + #endif + CENT("Title term=bold ctermfg=LightMagenta", + "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"), +--- 6653,6660 ---- + "PmenuThumb ctermbg=White guibg=White"), + CENT("Pmenu ctermbg=Magenta ctermfg=Black", + "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"), +! CENT("PmenuSel ctermbg=Black ctermfg=DarkGrey", +! "PmenuSel ctermbg=Black ctermfg=DarkGrey guibg=DarkGrey"), + #endif + CENT("Title term=bold ctermfg=LightMagenta", + "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"), +*** ../vim-7.3.606/src/version.c 2012-07-19 17:18:21.000000000 +0200 +--- src/version.c 2012-07-19 17:38:05.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 607, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +152. You find yourself falling for someone you've never seen or hardly + know, but, boy can he/she TYPE!!!!!! + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.608 b/source/ap/vim/patches/7.3.608 new file mode 100644 index 00000000..148bc494 --- /dev/null +++ b/source/ap/vim/patches/7.3.608 @@ -0,0 +1,119 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.608 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.608 +Problem: winrestview() does not always restore the view correctly. +Solution: Call win_new_height() and win_new_width(). (Lech Lorens) +Files: src/eval.c, src/proto/window.pro, src/window.c + + +*** ../vim-7.3.607/src/eval.c 2012-07-16 19:27:25.000000000 +0200 +--- src/eval.c 2012-07-19 17:50:16.000000000 +0200 +*************** +*** 18601,18606 **** +--- 18601,18610 ---- + curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol"); + + check_cursor(); ++ win_new_height(curwin, curwin->w_height); ++ # ifdef FEAT_VERTSPLIT ++ win_new_width(curwin, W_WIDTH(curwin)); ++ # endif + changed_window_setting(); + + if (curwin->w_topline == 0) +*** ../vim-7.3.607/src/proto/window.pro 2012-06-13 14:28:16.000000000 +0200 +--- src/proto/window.pro 2012-07-19 18:05:10.000000000 +0200 +*************** +*** 51,56 **** +--- 51,58 ---- + void win_setminheight __ARGS((void)); + void win_drag_status_line __ARGS((win_T *dragwin, int offset)); + void win_drag_vsep_line __ARGS((win_T *dragwin, int offset)); ++ void win_new_height __ARGS((win_T *wp, int height)); ++ void win_new_width __ARGS((win_T *wp, int width)); + void win_comp_scroll __ARGS((win_T *wp)); + void command_height __ARGS((void)); + void last_status __ARGS((int morewin)); +*** ../vim-7.3.607/src/window.c 2012-07-16 17:31:48.000000000 +0200 +--- src/window.c 2012-07-19 18:05:18.000000000 +0200 +*************** +*** 54,60 **** + static void frame_insert __ARGS((frame_T *before, frame_T *frp)); + static void frame_remove __ARGS((frame_T *frp)); + #ifdef FEAT_VERTSPLIT +- static void win_new_width __ARGS((win_T *wp, int width)); + static void win_goto_ver __ARGS((int up, long count)); + static void win_goto_hor __ARGS((int left, long count)); + #endif +--- 54,59 ---- +*************** +*** 71,77 **** + + static win_T *win_alloc __ARGS((win_T *after, int hidden)); + static void set_fraction __ARGS((win_T *wp)); +- static void win_new_height __ARGS((win_T *wp, int height)); + + #define URL_SLASH 1 /* path_is_url() has found "://" */ + #define URL_BACKSLASH 2 /* path_is_url() has found ":\\" */ +--- 70,75 ---- +*************** +*** 5557,5563 **** + * This takes care of the things inside the window, not what happens to the + * window position, the frame or to other windows. + */ +! static void + win_new_height(wp, height) + win_T *wp; + int height; +--- 5555,5561 ---- + * This takes care of the things inside the window, not what happens to the + * window position, the frame or to other windows. + */ +! void + win_new_height(wp, height) + win_T *wp; + int height; +*************** +*** 5697,5703 **** + /* + * Set the width of a window. + */ +! static void + win_new_width(wp, width) + win_T *wp; + int width; +--- 5695,5701 ---- + /* + * Set the width of a window. + */ +! void + win_new_width(wp, width) + win_T *wp; + int width; +*** ../vim-7.3.607/src/version.c 2012-07-19 17:39:01.000000000 +0200 +--- src/version.c 2012-07-19 17:53:37.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 608, + /**/ + +-- +Although the scythe isn't pre-eminent among the weapons of war, anyone who +has been on the wrong end of, say, a peasants' revolt will know that in +skilled hands it is fearsome. + -- (Terry Pratchett, Mort) + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.609 b/source/ap/vim/patches/7.3.609 new file mode 100644 index 00000000..ed731f50 --- /dev/null +++ b/source/ap/vim/patches/7.3.609 @@ -0,0 +1,251 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.609 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.609 +Problem: File names in :checkpath! output are garbled. +Solution: Check for \zs in the pattern. (Lech Lorens) +Files: src/search.c, src/testdir/test17.in, src/testdir/test17.ok + + +*** ../vim-7.3.608/src/search.c 2012-07-19 17:18:21.000000000 +0200 +--- src/search.c 2012-07-25 13:33:08.000000000 +0200 +*************** +*** 4740,4756 **** + * Isolate the file name. + * Include the surrounding "" or <> if present. + */ +! for (p = incl_regmatch.endp[0]; !vim_isfilec(*p); p++) +! ; +! for (i = 0; vim_isfilec(p[i]); i++) +! ; + if (i == 0) + { + /* Nothing found, use the rest of the line. */ + p = incl_regmatch.endp[0]; + i = (int)STRLEN(p); + } +! else + { + if (p[-1] == '"' || p[-1] == '<') + { +--- 4740,4772 ---- + * Isolate the file name. + * Include the surrounding "" or <> if present. + */ +! if (inc_opt != NULL +! && strstr((char *)inc_opt, "\\zs") != NULL) +! { +! /* pattern contains \zs, use the match */ +! p = incl_regmatch.startp[0]; +! i = (int)(incl_regmatch.endp[0] +! - incl_regmatch.startp[0]); +! } +! else +! { +! /* find the file name after the end of the match */ +! for (p = incl_regmatch.endp[0]; +! *p && !vim_isfilec(*p); p++) +! ; +! for (i = 0; vim_isfilec(p[i]); i++) +! ; +! } +! + if (i == 0) + { + /* Nothing found, use the rest of the line. */ + p = incl_regmatch.endp[0]; + i = (int)STRLEN(p); + } +! /* Avoid checking before the start of the line, can +! * happen if \zs appears in the regexp. */ +! else if (p > line) + { + if (p[-1] == '"' || p[-1] == '<') + { +*** ../vim-7.3.608/src/testdir/test17.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test17.in 2012-07-25 13:41:43.000000000 +0200 +*************** +*** 1,4 **** +! Tests for "gf" on ${VAR} + + STARTTEST + :so small.vim +--- 1,6 ---- +! Tests for: +! - "gf" on ${VAR}, +! - ":checkpath!" with various 'include' settings. + + STARTTEST + :so small.vim +*************** +*** 20,27 **** + :endif + gf + :w! test.out +! :qa! + ENDTEST + + ${CDIR}/test17a.in + $TDIR/test17a.in +--- 22,120 ---- + :endif + gf + :w! test.out +! :brewind + ENDTEST + + ${CDIR}/test17a.in + $TDIR/test17a.in ++ ++ STARTTEST ++ :" check for 'include' without \zs or \ze ++ :lang C ++ :!rm -f ./Xbase.a ++ :!rm -rf ./Xdir1 ++ :!mkdir -p Xdir1/dir2 ++ :e Xdir1/dir2/foo.a ++ i#include "bar.a" ++ :w ++ :e Xdir1/dir2/bar.a ++ i#include "baz.a" ++ :w ++ :e Xdir1/dir2/baz.a ++ i#include "foo.a" ++ :w ++ :e Xbase.a ++ :set path=Xdir1/dir2 ++ i#include <foo.a> ++ :w ++ :redir! >>test.out ++ :checkpath! ++ :redir END ++ :brewind ++ ENDTEST ++ ++ STARTTEST ++ :" check for 'include' with \zs and \ze ++ :!rm -f ./Xbase.b ++ :!rm -rf ./Xdir1 ++ :!mkdir -p Xdir1/dir2 ++ :let &include='^\s*%inc\s*/\zs[^/]\+\ze' ++ :function! DotsToSlashes() ++ : return substitute(v:fname, '\.', '/', 'g') . '.b' ++ :endfunction ++ :let &includeexpr='DotsToSlashes()' ++ :e Xdir1/dir2/foo.b ++ i%inc /bar/ ++ :w ++ :e Xdir1/dir2/bar.b ++ i%inc /baz/ ++ :w ++ :e Xdir1/dir2/baz.b ++ i%inc /foo/ ++ :w ++ :e Xbase.b ++ :set path=Xdir1/dir2 ++ i%inc /foo/ ++ :w ++ :redir! >>test.out ++ :checkpath! ++ :redir END ++ :brewind ++ ENDTEST ++ ++ STARTTEST ++ :" check for 'include' with \zs and no \ze ++ :!rm -f ./Xbase.c ++ :!rm -rf ./Xdir1 ++ :!mkdir -p Xdir1/dir2 ++ :let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze' ++ :function! StripNewlineChar() ++ : if v:fname =~ '\n$' ++ : return v:fname[:-2] ++ : endif ++ : return v:fname ++ :endfunction ++ :let &includeexpr='StripNewlineChar()' ++ :e Xdir1/dir2/foo.c ++ i%inc bar.c ++ :w ++ :e Xdir1/dir2/bar.c ++ i%inc baz.c ++ :w ++ :e Xdir1/dir2/baz.c ++ i%inc foo.c ++ :w ++ :e Xdir1/dir2/FALSE.c ++ i%inc foo.c ++ :w ++ :e Xbase.c ++ :set path=Xdir1/dir2 ++ i%inc FALSE.c foo.c ++ :w ++ :redir! >>test.out ++ :checkpath! ++ :redir END ++ :brewind ++ :q ++ ENDTEST ++ +*** ../vim-7.3.608/src/testdir/test17.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test17.ok 2012-07-25 13:45:37.000000000 +0200 +*************** +*** 1,3 **** +--- 1,33 ---- + This file is just to test "gf" in test 17. + The contents is not important. + Just testing! ++ ++ ++ --- Included files in path --- ++ Xdir1/dir2/foo.a ++ Xdir1/dir2/foo.a --> ++ Xdir1/dir2/bar.a ++ Xdir1/dir2/bar.a --> ++ Xdir1/dir2/baz.a ++ Xdir1/dir2/baz.a --> ++ "foo.a" (Already listed) ++ ++ ++ --- Included files in path --- ++ Xdir1/dir2/foo.b ++ Xdir1/dir2/foo.b --> ++ Xdir1/dir2/bar.b ++ Xdir1/dir2/bar.b --> ++ Xdir1/dir2/baz.b ++ Xdir1/dir2/baz.b --> ++ foo (Already listed) ++ ++ ++ --- Included files in path --- ++ Xdir1/dir2/foo.c ++ Xdir1/dir2/foo.c --> ++ Xdir1/dir2/bar.c ++ Xdir1/dir2/bar.c --> ++ Xdir1/dir2/baz.c ++ Xdir1/dir2/baz.c --> ++ foo.c^@ (Already listed) +*** ../vim-7.3.608/src/version.c 2012-07-19 18:05:40.000000000 +0200 +--- src/version.c 2012-07-25 13:38:54.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 609, + /**/ + +-- +"The question of whether computers can think is just like the question +of whether submarines can swim." -- Edsger W. Dijkstra + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.610 b/source/ap/vim/patches/7.3.610 new file mode 100644 index 00000000..5e48837f --- /dev/null +++ b/source/ap/vim/patches/7.3.610 @@ -0,0 +1,400 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.610 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.610 +Problem: Cannot operate on the text that a search pattern matches. +Solution: Add the "gn" and "gN" commands. (Christian Brabandt) +Files: runtime/doc/index.txt, runtime/doc/visual.txt, src/normal.c, + src/proto/search.pro, src/search.c, src/testdir/test53.in, + src/testdir/test53.ok + + +*** ../vim-7.3.609/runtime/doc/index.txt 2010-08-15 21:57:18.000000000 +0200 +--- runtime/doc/index.txt 2012-07-25 14:27:20.000000000 +0200 +*************** +*** 719,726 **** +--- 719,729 ---- + |gH| gH start Select line mode + |gI| gI 2 like "I", but always start in column 1 + |gJ| gJ 2 join lines without inserting space ++ |gN| gN 1,2 find the previous match with the last used ++ search pattern and Visually select it + |gP| ["x]gP 2 put the text [from register x] before the + cursor N times, leave the cursor after it ++ |gQ| gQ switch to "Ex" mode with Vim editing + |gR| gR 2 enter Virtual Replace mode + |gU| gU{motion} 2 make Nmove text uppercase + |gV| gV don't reselect the previous Visual area +*************** +*** 750,755 **** +--- 753,760 ---- + lines down + |gk| gk 1 like "k", but when 'wrap' on go N screen + lines up ++ |gn| gn 1,2 find the next match with the last used ++ search pattern and Visually select it + |gm| gm 1 go to character at middle of the screenline + |go| go 1 cursor to byte N in the buffer + |gp| ["x]gp 2 put the text [from register x] after the +*** ../vim-7.3.609/runtime/doc/visual.txt 2010-08-15 21:57:16.000000000 +0200 +--- runtime/doc/visual.txt 2012-07-25 14:42:22.000000000 +0200 +*************** +*** 94,99 **** +--- 99,116 ---- + After using "p" or "P" in Visual mode the text that + was put will be selected. + ++ *gn* *v_gn* ++ gn Search forward for the last used search pattern, like ++ with `n`, and start Visual mode to select the match. ++ If the cursor is on the match, visually selects it. ++ If an operator is pending, operates on the match. ++ E.g., "dgn" deletes the text of the next match. ++ If Visual mode is active, extends the selection ++ until the end of the next match. ++ ++ *gN* *v_gN* ++ gN Like |gn| but searches backward, like with `N`. ++ + *<LeftMouse>* + <LeftMouse> Set the current cursor position. If Visual mode is + active it is stopped. Only when 'mouse' option is +*** ../vim-7.3.609/src/normal.c 2012-07-10 16:49:08.000000000 +0200 +--- src/normal.c 2012-07-25 14:31:40.000000000 +0200 +*************** +*** 1780,1789 **** + { + /* Prepare for redoing. Only use the nchar field for "r", + * otherwise it might be the second char of the operator. */ +! prep_redo(oap->regname, 0L, NUL, 'v', +! get_op_char(oap->op_type), +! get_extra_op_char(oap->op_type), +! oap->op_type == OP_REPLACE ? cap->nchar : NUL); + if (!redo_VIsual_busy) + { + redo_VIsual_mode = resel_VIsual_mode; +--- 1780,1797 ---- + { + /* Prepare for redoing. Only use the nchar field for "r", + * otherwise it might be the second char of the operator. */ +! if (cap->cmdchar == 'g' && (cap->nchar == 'n' +! || cap->nchar == 'N')) +! /* "gn" and "gN" are a bit different */ +! prep_redo(oap->regname, 0L, NUL, cap->cmdchar, cap->nchar, +! get_op_char(oap->op_type), +! get_extra_op_char(oap->op_type)); +! else +! prep_redo(oap->regname, 0L, NUL, 'v', +! get_op_char(oap->op_type), +! get_extra_op_char(oap->op_type), +! oap->op_type == OP_REPLACE +! ? cap->nchar : NUL); + if (!redo_VIsual_busy) + { + redo_VIsual_mode = resel_VIsual_mode; +*************** +*** 7987,7992 **** +--- 7995,8011 ---- + cap->arg = TRUE; + nv_visual(cap); + break; ++ ++ /* "gn", "gN" visually select next/previous search match ++ * "gn" selects next match ++ * "gN" selects previous match ++ */ ++ case 'N': ++ case 'n': ++ if (!current_search(cap->count1, cap->nchar == 'n')) ++ beep_flush(); ++ ++ break; + #endif /* FEAT_VISUAL */ + + /* +*** ../vim-7.3.609/src/proto/search.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/search.pro 2012-07-25 14:24:01.000000000 +0200 +*************** +*** 27,32 **** +--- 27,33 ---- + int end_word __ARGS((long count, int bigword, int stop, int empty)); + int bckend_word __ARGS((long count, int bigword, int eol)); + int current_word __ARGS((oparg_T *oap, long count, int include, int bigword)); ++ int current_search __ARGS((long count, int forward)); + int current_sent __ARGS((oparg_T *oap, long count, int include)); + int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other)); + int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include)); +*** ../vim-7.3.609/src/search.c 2012-07-25 13:46:25.000000000 +0200 +--- src/search.c 2012-07-25 14:54:28.000000000 +0200 +*************** +*** 3397,3402 **** +--- 3397,3547 ---- + return OK; + } + ++ #if defined(FEAT_VISUAL) || defined(PROTO) ++ /* ++ * Find next search match under cursor, cursor at end. ++ * Used while an operator is pending, and in Visual mode. ++ * TODO: redo only works when used in operator pending mode ++ */ ++ int ++ current_search(count, forward) ++ long count; ++ int forward; /* move forward or backwards */ ++ { ++ pos_T start_pos; /* position before the pattern */ ++ pos_T orig_pos; /* position of the cursor at beginning */ ++ pos_T pos; /* position after the pattern */ ++ int i; ++ 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; ++ ++ ++ /* wrapping should not occur */ ++ p_ws = FALSE; ++ ++ /* Correct cursor when 'selection' is exclusive */ ++ if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor)) ++ dec_cursor(); ++ ++ if (VIsual_active) ++ { ++ 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; ++ ++ /* make sure, searching further will extend the match */ ++ if (VIsual_active) ++ { ++ if (forward) ++ incl(&pos); ++ else ++ decl(&pos); ++ } ++ } ++ else ++ orig_pos = pos = start_pos = curwin->w_cursor; ++ ++ /* ++ * The trick is to first search backwards and then search forward again, ++ * so that a match at the current cursor position will be correctly ++ * captured. ++ */ ++ for (i = 0; i < 2; i++) ++ { ++ if (i && count == 1) ++ flags = SEARCH_START; ++ ++ if (forward) ++ dir = i; ++ else ++ dir = !i; ++ result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), ++ spats[last_idx].pat, (long) (i ? count : 1), ++ SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END), ++ RE_SEARCH, 0, NULL); ++ ++ /* First search may fail, but then start searching from the ++ * beginning of the file (cursor might be on the search match) ++ * except when Visual mode is active, so that extending the visual ++ * selection works. */ ++ if (!result && i) /* not found, abort */ ++ { ++ curwin->w_cursor = orig_pos; ++ if (VIsual_active) ++ VIsual = save_VIsual; ++ p_ws = old_p_ws; ++ return FAIL; ++ } ++ else if (!i && !result && !visual_active) ++ { ++ if (forward) /* try again from start of buffer */ ++ { ++ clearpos(&pos); ++ } ++ else /* try again from end of buffer */ ++ { ++ /* searching backwards, so set pos to last line and col */ ++ pos.lnum = curwin->w_buffer->b_ml.ml_line_count; ++ pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count)); ++ } ++ } ++ ++ } ++ ++ start_pos = pos; ++ flags = (forward ? SEARCH_END : 0); ++ ++ /* move to match */ ++ result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), ++ spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); ++ ++ if (!VIsual_active) ++ VIsual = start_pos; ++ ++ p_ws = old_p_ws; ++ curwin->w_cursor = pos; ++ VIsual_active = TRUE; ++ VIsual_mode = 'v'; ++ ++ if (VIsual_active) ++ { ++ redraw_curbuf_later(INVERTED); /* update the inversion */ ++ if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor)) ++ inc_cursor(); ++ } ++ ++ #ifdef FEAT_FOLDING ++ if (fdo_flags & FDO_SEARCH && KeyTyped) ++ foldOpenCursor(); ++ #endif ++ ++ may_start_select('c'); ++ #ifdef FEAT_MOUSE ++ setmouse(); ++ #endif ++ #ifdef FEAT_CLIPBOARD ++ /* Make sure the clipboard gets updated. Needed because start and ++ * end are still the same, and the selection needs to be owned */ ++ clip_star.vmode = NUL; ++ #endif ++ redraw_curbuf_later(INVERTED); ++ showmode(); ++ ++ return OK; ++ } ++ #endif /* FEAT_VISUAL */ ++ + /* + * Find sentence(s) under the cursor, cursor at end. + * When Visual active, extend it by one or more sentences. +*************** +*** 3420,3426 **** + + #ifdef FEAT_VISUAL + /* +! * When visual area is bigger than one character: Extend it. + */ + if (VIsual_active && !equalpos(start_pos, VIsual)) + { +--- 3565,3571 ---- + + #ifdef FEAT_VISUAL + /* +! * When the Visual area is bigger than one character: Extend it. + */ + if (VIsual_active && !equalpos(start_pos, VIsual)) + { +*************** +*** 3508,3515 **** + #endif + + /* +! * If cursor started on blank, check if it is just before the start of the +! * next sentence. + */ + while (c = gchar_pos(&pos), vim_iswhite(c)) /* vim_iswhite() is a macro */ + incl(&pos); +--- 3653,3660 ---- + #endif + + /* +! * If the cursor started on a blank, check if it is just before the start +! * of the next sentence. + */ + while (c = gchar_pos(&pos), vim_iswhite(c)) /* vim_iswhite() is a macro */ + incl(&pos); +*************** +*** 3558,3564 **** + #ifdef FEAT_VISUAL + if (VIsual_active) + { +! /* avoid getting stuck with "is" on a single space before a sent. */ + if (equalpos(start_pos, curwin->w_cursor)) + goto extend; + if (*p_sel == 'e') +--- 3703,3709 ---- + #ifdef FEAT_VISUAL + if (VIsual_active) + { +! /* Avoid getting stuck with "is" on a single space before a sentence. */ + if (equalpos(start_pos, curwin->w_cursor)) + goto extend; + if (*p_sel == 'e') +*** ../vim-7.3.609/src/testdir/test53.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test53.in 2012-07-25 15:01:34.000000000 +0200 +*************** +*** 28,33 **** +--- 28,40 ---- + :put =matchstr(\"abcd\", \".\", 0, -1) " a + :put =match(\"abcd\", \".\", 0, 5) " -1 + :put =match(\"abcd\", \".\", 0, -1) " 0 ++ /^foobar ++ gncsearchmatch/one\_s*two\_s ++ :1 ++ gnd ++ /[a]bcdx ++ :1 ++ 2gnd + :/^start:/,/^end:/wq! test.out + ENDTEST + +*************** +*** 45,48 **** +--- 52,60 ---- + -<b>asdf<i>Xasdf</i>asdf</b>- + -<b>asdX<i>as<b />df</i>asdf</b>- + </begin> ++ SEARCH: ++ foobar ++ one ++ two ++ abcdx | abcdx | abcdx + end: +*** ../vim-7.3.609/src/testdir/test53.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test53.ok 2012-07-25 14:24:01.000000000 +0200 +*************** +*** 18,21 **** +--- 18,24 ---- + a + -1 + 0 ++ SEARCH: ++ searchmatch ++ abcdx | | abcdx + end: +*** ../vim-7.3.609/src/version.c 2012-07-25 13:46:25.000000000 +0200 +--- src/version.c 2012-07-25 15:03:43.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 610, + /**/ + +-- +Did you ever see a "Hit any key to continue" message in a music piece? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.611 b/source/ap/vim/patches/7.3.611 new file mode 100644 index 00000000..5e366a78 --- /dev/null +++ b/source/ap/vim/patches/7.3.611 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.611 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.611 +Problem: Can't use Vim dictionary as self argument in Python. +Solution: Fix the check for the "self" argument. (ZyX) +Files: src/if_py_both.h + + +*** ../vim-7.3.610/src/if_py_both.h 2012-06-30 13:34:29.000000000 +0200 +--- src/if_py_both.h 2012-07-25 15:32:10.000000000 +0200 +*************** +*** 1284,1292 **** + selfdictObject = PyDict_GetItemString(kwargs, "self"); + if (selfdictObject != NULL) + { +! if (!PyDict_Check(selfdictObject)) + { +! PyErr_SetString(PyExc_TypeError, _("'self' argument must be a dictionary")); + clear_tv(&args); + return NULL; + } +--- 1284,1293 ---- + selfdictObject = PyDict_GetItemString(kwargs, "self"); + if (selfdictObject != NULL) + { +! if (!PyMapping_Check(selfdictObject)) + { +! PyErr_SetString(PyExc_TypeError, +! _("'self' argument must be a dictionary")); + clear_tv(&args); + return NULL; + } +*** ../vim-7.3.610/src/version.c 2012-07-25 15:06:20.000000000 +0200 +--- src/version.c 2012-07-25 15:32:24.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 611, + /**/ + +-- +In Joseph Heller's novel "Catch-22", the main character tries to get out of a +war by proving he is crazy. But the mere fact he wants to get out of the war +only shows he isn't crazy -- creating the original "Catch-22". + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.612 b/source/ap/vim/patches/7.3.612 new file mode 100644 index 00000000..7b2207ed --- /dev/null +++ b/source/ap/vim/patches/7.3.612 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.612 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.612 +Problem: Auto formatting messes up text when 'fo' contains "2". (ZyX) +Solution: Decrement "less_cols". (Tor Perkins) +Files: src/misc1.c, src/testdir/test68.in, src/testdir/test68.ok + + +*** ../vim-7.3.611/src/misc1.c 2012-07-06 16:49:37.000000000 +0200 +--- src/misc1.c 2012-07-25 16:03:58.000000000 +0200 +*************** +*** 1329,1334 **** +--- 1329,1335 ---- + for (i = 0; i < padding; i++) + { + STRCAT(leader, " "); ++ less_cols--; + newcol++; + } + } +*** ../vim-7.3.611/src/testdir/test68.in 2012-06-29 15:04:34.000000000 +0200 +--- src/testdir/test68.in 2012-07-25 15:57:06.000000000 +0200 +*************** +*** 94,99 **** +--- 94,109 ---- + } + + STARTTEST ++ /mno pqr/ ++ :setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/ ++ A vwx yz ++ ENDTEST ++ ++ /* abc def ghi jkl ++ * mno pqr stu ++ */ ++ ++ STARTTEST + /^#/ + :setl tw=12 fo=tqnc comments=:# + A foobar +*** ../vim-7.3.611/src/testdir/test68.ok 2012-06-29 23:57:50.000000000 +0200 +--- src/testdir/test68.ok 2012-07-25 16:03:05.000000000 +0200 +*************** +*** 57,62 **** +--- 57,68 ---- + { 1aa ^^2bb } + + ++ /* abc def ghi jkl ++ * mno pqr stu ++ * vwx yz ++ */ ++ ++ + # 1 xxxxx + # foobar + +*** ../vim-7.3.611/src/version.c 2012-07-25 15:36:00.000000000 +0200 +--- src/version.c 2012-07-25 16:08:02.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 612, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +169. You hire a housekeeper for your home page. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.613 b/source/ap/vim/patches/7.3.613 new file mode 100644 index 00000000..520e87c3 --- /dev/null +++ b/source/ap/vim/patches/7.3.613 @@ -0,0 +1,149 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.613 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.613 +Problem: Including Python's config.c in the build causes trouble. It is + not clear why it was there. +Solution: Omit the config file. (James McCoy) +Files: src/Makefile, src/auto/configure, src/configure.in + + +*** ../vim-7.3.612/src/Makefile 2012-06-20 18:39:12.000000000 +0200 +--- src/Makefile 2012-07-25 16:22:57.000000000 +0200 +*************** +*** 2559,2577 **** + objects/if_perlsfio.o: if_perlsfio.c + $(CCC) $(PERL_CFLAGS) -o $@ if_perlsfio.c + +- objects/py_config.o: $(PYTHON_CONFDIR)/config.c +- $(CCC) $(PYTHON_CFLAGS) -o $@ $(PYTHON_CONFDIR)/config.c \ +- -I$(PYTHON_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN +- + objects/py_getpath.o: $(PYTHON_CONFDIR)/getpath.c + $(CCC) $(PYTHON_CFLAGS) -o $@ $(PYTHON_CONFDIR)/getpath.c \ + -I$(PYTHON_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN \ + $(PYTHON_GETPATH_CFLAGS) + +- objects/py3_config.o: $(PYTHON3_CONFDIR)/config.c +- $(CCC) $(PYTHON3_CFLAGS) -o $@ $(PYTHON3_CONFDIR)/config.c \ +- -I$(PYTHON3_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN +- + objects/if_python.o: if_python.c if_py_both.h + $(CCC) $(PYTHON_CFLAGS) $(PYTHON_CFLAGS_EXTRA) -o $@ if_python.c + +--- 2559,2569 ---- +*** ../vim-7.3.612/src/auto/configure 2012-06-13 19:19:36.000000000 +0200 +--- src/auto/configure 2012-07-25 16:23:49.000000000 +0200 +*************** +*** 5357,5367 **** + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" + fi + PYTHON_SRC="if_python.c" +! if test "x$MACOSX" = "xyes"; then +! PYTHON_OBJ="objects/if_python.o" +! else +! PYTHON_OBJ="objects/if_python.o objects/py_config.o" +! fi + if test "${vi_cv_var_python_version}" = "1.4"; then + PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" + fi +--- 5357,5363 ---- + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" + fi + PYTHON_SRC="if_python.c" +! PYTHON_OBJ="objects/if_python.o" + if test "${vi_cv_var_python_version}" = "1.4"; then + PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" + fi +*************** +*** 5656,5666 **** + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" +! if test "x$MACOSX" = "xyes"; then +! PYTHON3_OBJ="objects/if_python3.o" +! else +! PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o" +! fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5 + $as_echo_n "checking if -pthread should be used... " >&6; } +--- 5652,5658 ---- + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" +! PYTHON3_OBJ="objects/if_python3.o" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5 + $as_echo_n "checking if -pthread should be used... " >&6; } +*** ../vim-7.3.612/src/configure.in 2012-06-13 19:19:36.000000000 +0200 +--- src/configure.in 2012-07-25 16:23:41.000000000 +0200 +*************** +*** 916,927 **** + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" + fi + PYTHON_SRC="if_python.c" +! dnl For Mac OSX 10.2 config.o is included in the Python library. +! if test "x$MACOSX" = "xyes"; then +! PYTHON_OBJ="objects/if_python.o" +! else +! PYTHON_OBJ="objects/if_python.o objects/py_config.o" +! fi + if test "${vi_cv_var_python_version}" = "1.4"; then + PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" + fi +--- 916,922 ---- + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" + fi + PYTHON_SRC="if_python.c" +! PYTHON_OBJ="objects/if_python.o" + if test "${vi_cv_var_python_version}" = "1.4"; then + PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" + fi +*************** +*** 1106,1117 **** + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" +! dnl For Mac OSX 10.2 config.o is included in the Python library. +! if test "x$MACOSX" = "xyes"; then +! PYTHON3_OBJ="objects/if_python3.o" +! else +! PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o" +! fi + + dnl On FreeBSD linking with "-pthread" is required to use threads. + dnl _THREAD_SAFE must be used for compiling then. +--- 1101,1107 ---- + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" + fi + PYTHON3_SRC="if_python3.c" +! PYTHON3_OBJ="objects/if_python3.o" + + dnl On FreeBSD linking with "-pthread" is required to use threads. + dnl _THREAD_SAFE must be used for compiling then. +*** ../vim-7.3.612/src/version.c 2012-07-25 16:09:59.000000000 +0200 +--- src/version.c 2012-07-25 16:29:52.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 613, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +170. You introduce your wife as "my_lady@home.wife" and refer to your + children as "forked processes." + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.614 b/source/ap/vim/patches/7.3.614 new file mode 100644 index 00000000..87d7a451 --- /dev/null +++ b/source/ap/vim/patches/7.3.614 @@ -0,0 +1,176 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.614 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.614 +Problem: Number argument gets turned into a number while it should be a + string. +Solution: Add flag to the call_vim_function() call. (Yasuhiro Matsumoto) +Files: src/edit.c, src/eval.c, src/proto/eval.pro + + +*** ../vim-7.3.613/src/edit.c 2012-07-10 17:14:50.000000000 +0200 +--- src/edit.c 2012-07-25 16:40:07.000000000 +0200 +*************** +*** 3959,3965 **** + curbuf_save = curbuf; + + /* Call a function, which returns a list or dict. */ +! if (call_vim_function(funcname, 2, args, FALSE, &rettv) == OK) + { + switch (rettv.v_type) + { +--- 3959,3965 ---- + curbuf_save = curbuf; + + /* Call a function, which returns a list or dict. */ +! if (call_vim_function(funcname, 2, args, FALSE, FALSE, &rettv) == OK) + { + switch (rettv.v_type) + { +*** ../vim-7.3.613/src/eval.c 2012-07-19 18:05:40.000000000 +0200 +--- src/eval.c 2012-07-25 16:42:41.000000000 +0200 +*************** +*** 1564,1574 **** + * Returns OK or FAIL. + */ + int +! call_vim_function(func, argc, argv, safe, rettv) + char_u *func; + int argc; + char_u **argv; + int safe; /* use the sandbox */ + typval_T *rettv; + { + typval_T *argvars; +--- 1564,1575 ---- + * Returns OK or FAIL. + */ + int +! call_vim_function(func, argc, argv, safe, str_arg_only, rettv) + char_u *func; + int argc; + char_u **argv; + int safe; /* use the sandbox */ ++ int str_arg_only; /* all arguments are strings */ + typval_T *rettv; + { + typval_T *argvars; +*************** +*** 1593,1600 **** + continue; + } + +! /* Recognize a number argument, the others must be strings. */ +! vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL); + if (len != 0 && len == (int)STRLEN(argv[i])) + { + argvars[i].v_type = VAR_NUMBER; +--- 1594,1604 ---- + continue; + } + +! if (str_arg_only) +! len = 0; +! else +! /* Recognize a number argument, the others must be strings. */ +! vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL); + if (len != 0 && len == (int)STRLEN(argv[i])) + { + argvars[i].v_type = VAR_NUMBER; +*************** +*** 1646,1652 **** + typval_T rettv; + char_u *retval; + +! if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL) + return NULL; + + retval = vim_strsave(get_tv_string(&rettv)); +--- 1650,1657 ---- + typval_T rettv; + char_u *retval; + +! /* All arguments are passed as strings, no conversion to number. */ +! if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) + return NULL; + + retval = vim_strsave(get_tv_string(&rettv)); +*************** +*** 1671,1677 **** + typval_T rettv; + long retval; + +! if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL) + return -1; + + retval = get_tv_number_chk(&rettv, NULL); +--- 1676,1683 ---- + typval_T rettv; + long retval; + +! /* All arguments are passed as strings, no conversion to number. */ +! if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) + return -1; + + retval = get_tv_number_chk(&rettv, NULL); +*************** +*** 1694,1700 **** + { + typval_T rettv; + +! if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL) + return NULL; + + if (rettv.v_type != VAR_LIST) +--- 1700,1707 ---- + { + typval_T rettv; + +! /* All arguments are passed as strings, no conversion to number. */ +! if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) + return NULL; + + if (rettv.v_type != VAR_LIST) +*** ../vim-7.3.613/src/proto/eval.pro 2012-07-16 17:31:48.000000000 +0200 +--- src/proto/eval.pro 2012-07-25 16:42:59.000000000 +0200 +*************** +*** 23,29 **** + list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr)); + int get_spellword __ARGS((list_T *list, char_u **pp)); + typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd)); +! int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv)); + void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe)); + long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe)); + void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe)); +--- 23,29 ---- + list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr)); + int get_spellword __ARGS((list_T *list, char_u **pp)); + typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd)); +! int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, int str_arg_only, typval_T *rettv)); + void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe)); + long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe)); + void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe)); +*** ../vim-7.3.613/src/version.c 2012-07-25 16:32:03.000000000 +0200 +--- src/version.c 2012-07-25 16:46:11.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 614, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +171. You invent another person and chat with yourself in empty chat rooms. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.615 b/source/ap/vim/patches/7.3.615 new file mode 100644 index 00000000..96f6885f --- /dev/null +++ b/source/ap/vim/patches/7.3.615 @@ -0,0 +1,107 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.615 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.615 +Problem: Completion for a user command does not recognize backslash before + a space. +Solution: Recognize escaped characters. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + + +*** ../vim-7.3.614/src/ex_docmd.c 2012-07-10 19:25:06.000000000 +0200 +--- src/ex_docmd.c 2012-07-25 17:10:16.000000000 +0200 +*************** +*** 3390,3401 **** + return NULL; + + /* Find start of last argument (argument just before cursor): */ +! p = buff + STRLEN(buff); +! while (p != arg && *p != ' ' && *p != TAB) +! p--; +! if (*p == ' ' || *p == TAB) +! p++; + xp->xp_pattern = p; + + if (ea.argt & XFILE) + { +--- 3390,3412 ---- + return NULL; + + /* Find start of last argument (argument just before cursor): */ +! p = buff; + xp->xp_pattern = p; ++ len = STRLEN(buff); ++ while (*p && p < buff + len) ++ { ++ if (*p == ' ' || *p == TAB) ++ { ++ /* argument starts after a space */ ++ xp->xp_pattern = ++p; ++ } ++ else ++ { ++ if (*p == '\\' && *(p + 1) != NUL) ++ ++p; /* skip over escaped character */ ++ mb_ptr_adv(p); ++ } ++ } + + if (ea.argt & XFILE) + { +*************** +*** 3821,3828 **** + if (compl == EXPAND_MAPPINGS) + return set_context_in_map_cmd(xp, (char_u *)"map", + arg, forceit, FALSE, FALSE, CMD_map); +! while ((xp->xp_pattern = vim_strchr(arg, ' ')) != NULL) +! arg = xp->xp_pattern + 1; + xp->xp_pattern = arg; + } + xp->xp_context = compl; +--- 3832,3853 ---- + if (compl == EXPAND_MAPPINGS) + return set_context_in_map_cmd(xp, (char_u *)"map", + arg, forceit, FALSE, FALSE, CMD_map); +! /* Find start of last argument. */ +! p = arg; +! while (*p) +! { +! if (*p == ' ') +! { +! /* argument starts after a space */ +! arg = p + 1; +! } +! else +! { +! if (*p == '\\' && *(p + 1) != NUL) +! ++p; /* skip over escaped character */ +! mb_ptr_adv(p); +! } +! } + xp->xp_pattern = arg; + } + xp->xp_context = compl; +*** ../vim-7.3.614/src/version.c 2012-07-25 16:46:59.000000000 +0200 +--- src/version.c 2012-07-25 17:17:05.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 615, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +172. You join listservers just for the extra e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.616 b/source/ap/vim/patches/7.3.616 new file mode 100644 index 00000000..5898eafe --- /dev/null +++ b/source/ap/vim/patches/7.3.616 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.616 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.616 (after 7.3.610) +Problem: Can't compile without +visual. +Solution: Add #ifdef. +Files: src/normal.c + + +*** ../vim-7.3.615/src/normal.c 2012-07-25 15:06:20.000000000 +0200 +--- src/normal.c 2012-07-27 20:52:01.000000000 +0200 +*************** +*** 8002,8008 **** +--- 8002,8010 ---- + */ + case 'N': + case 'n': ++ #ifdef FEAT_VISUAL + if (!current_search(cap->count1, cap->nchar == 'n')) ++ #endif + beep_flush(); + + break; +*** ../vim-7.3.615/src/version.c 2012-07-25 17:22:17.000000000 +0200 +--- src/version.c 2012-07-27 20:52:58.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 616, + /**/ + +-- +The CIA drives around in cars with the "Intel inside" logo. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/source/ap/vim/patches/7.3.617 b/source/ap/vim/patches/7.3.617 new file mode 100644 index 00000000..48062cd2 --- /dev/null +++ b/source/ap/vim/patches/7.3.617 @@ -0,0 +1,65 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.617 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.617 (after 7.3.615) +Problem: Hang on completion. +Solution: Skip over the space. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + + +*** ../vim-7.3.616/src/ex_docmd.c 2012-07-25 17:22:17.000000000 +0200 +--- src/ex_docmd.c 2012-07-27 21:07:42.000000000 +0200 +*************** +*** 3837,3852 **** + while (*p) + { + if (*p == ' ') +- { + /* argument starts after a space */ + arg = p + 1; +! } +! else +! { +! if (*p == '\\' && *(p + 1) != NUL) +! ++p; /* skip over escaped character */ +! mb_ptr_adv(p); +! } + } + xp->xp_pattern = arg; + } +--- 3837,3847 ---- + while (*p) + { + if (*p == ' ') + /* argument starts after a space */ + arg = p + 1; +! else if (*p == '\\' && *(p + 1) != NUL) +! ++p; /* skip over escaped character */ +! mb_ptr_adv(p); + } + xp->xp_pattern = arg; + } +*** ../vim-7.3.616/src/version.c 2012-07-27 21:05:51.000000000 +0200 +--- src/version.c 2012-07-27 21:08:31.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 617, + /**/ + +-- +If Microsoft would build a car... +... You'd have to press the "Start" button to turn the engine off. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.618 b/source/ap/vim/patches/7.3.618 new file mode 100644 index 00000000..d0cc9c68 --- /dev/null +++ b/source/ap/vim/patches/7.3.618 @@ -0,0 +1,367 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.618 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.618 (after 7.3.616) +Problem: Still doesn't compile with small features. +Solution: Move current_search() out of #ifdef. (Dominique Pelle) +Files: src/normal.c, src/search.c + + +*** ../vim-7.3.617/src/normal.c 2012-07-27 21:05:51.000000000 +0200 +--- src/normal.c 2012-07-28 13:34:13.000000000 +0200 +*************** +*** 7995,8000 **** +--- 7995,8001 ---- + cap->arg = TRUE; + nv_visual(cap); + break; ++ #endif /* FEAT_VISUAL */ + + /* "gn", "gN" visually select next/previous search match + * "gn" selects next match +*************** +*** 8006,8014 **** + if (!current_search(cap->count1, cap->nchar == 'n')) + #endif + beep_flush(); +- + break; +- #endif /* FEAT_VISUAL */ + + /* + * "gj" and "gk" two new funny movement keys -- up and down +--- 8007,8013 ---- +*** ../vim-7.3.617/src/search.c 2012-07-25 15:06:20.000000000 +0200 +--- src/search.c 2012-07-28 13:37:19.000000000 +0200 +*************** +*** 3397,3547 **** + return OK; + } + +- #if defined(FEAT_VISUAL) || defined(PROTO) +- /* +- * Find next search match under cursor, cursor at end. +- * Used while an operator is pending, and in Visual mode. +- * TODO: redo only works when used in operator pending mode +- */ +- int +- current_search(count, forward) +- long count; +- int forward; /* move forward or backwards */ +- { +- pos_T start_pos; /* position before the pattern */ +- pos_T orig_pos; /* position of the cursor at beginning */ +- pos_T pos; /* position after the pattern */ +- int i; +- 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; +- +- +- /* wrapping should not occur */ +- p_ws = FALSE; +- +- /* Correct cursor when 'selection' is exclusive */ +- if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor)) +- dec_cursor(); +- +- if (VIsual_active) +- { +- 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; +- +- /* make sure, searching further will extend the match */ +- if (VIsual_active) +- { +- if (forward) +- incl(&pos); +- else +- decl(&pos); +- } +- } +- else +- orig_pos = pos = start_pos = curwin->w_cursor; +- +- /* +- * The trick is to first search backwards and then search forward again, +- * so that a match at the current cursor position will be correctly +- * captured. +- */ +- for (i = 0; i < 2; i++) +- { +- if (i && count == 1) +- flags = SEARCH_START; +- +- if (forward) +- dir = i; +- else +- dir = !i; +- result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), +- spats[last_idx].pat, (long) (i ? count : 1), +- SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END), +- RE_SEARCH, 0, NULL); +- +- /* First search may fail, but then start searching from the +- * beginning of the file (cursor might be on the search match) +- * except when Visual mode is active, so that extending the visual +- * selection works. */ +- if (!result && i) /* not found, abort */ +- { +- curwin->w_cursor = orig_pos; +- if (VIsual_active) +- VIsual = save_VIsual; +- p_ws = old_p_ws; +- return FAIL; +- } +- else if (!i && !result && !visual_active) +- { +- if (forward) /* try again from start of buffer */ +- { +- clearpos(&pos); +- } +- else /* try again from end of buffer */ +- { +- /* searching backwards, so set pos to last line and col */ +- pos.lnum = curwin->w_buffer->b_ml.ml_line_count; +- pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count)); +- } +- } +- +- } +- +- start_pos = pos; +- flags = (forward ? SEARCH_END : 0); +- +- /* move to match */ +- result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), +- spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); +- +- if (!VIsual_active) +- VIsual = start_pos; +- +- p_ws = old_p_ws; +- curwin->w_cursor = pos; +- VIsual_active = TRUE; +- VIsual_mode = 'v'; +- +- if (VIsual_active) +- { +- redraw_curbuf_later(INVERTED); /* update the inversion */ +- if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor)) +- inc_cursor(); +- } +- +- #ifdef FEAT_FOLDING +- if (fdo_flags & FDO_SEARCH && KeyTyped) +- foldOpenCursor(); +- #endif +- +- may_start_select('c'); +- #ifdef FEAT_MOUSE +- setmouse(); +- #endif +- #ifdef FEAT_CLIPBOARD +- /* Make sure the clipboard gets updated. Needed because start and +- * end are still the same, and the selection needs to be owned */ +- clip_star.vmode = NUL; +- #endif +- redraw_curbuf_later(INVERTED); +- showmode(); +- +- return OK; +- } +- #endif /* FEAT_VISUAL */ +- + /* + * Find sentence(s) under the cursor, cursor at end. + * When Visual active, extend it by one or more sentences. +--- 3397,3402 ---- +*************** +*** 4670,4675 **** +--- 4525,4675 ---- + + #endif /* FEAT_TEXTOBJ */ + ++ #if defined(FEAT_VISUAL) || defined(PROTO) ++ /* ++ * Find next search match under cursor, cursor at end. ++ * Used while an operator is pending, and in Visual mode. ++ * TODO: redo only works when used in operator pending mode ++ */ ++ int ++ current_search(count, forward) ++ long count; ++ int forward; /* move forward or backwards */ ++ { ++ pos_T start_pos; /* position before the pattern */ ++ pos_T orig_pos; /* position of the cursor at beginning */ ++ pos_T pos; /* position after the pattern */ ++ int i; ++ 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; ++ ++ ++ /* wrapping should not occur */ ++ p_ws = FALSE; ++ ++ /* Correct cursor when 'selection' is exclusive */ ++ if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor)) ++ dec_cursor(); ++ ++ if (VIsual_active) ++ { ++ 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; ++ ++ /* make sure, searching further will extend the match */ ++ if (VIsual_active) ++ { ++ if (forward) ++ incl(&pos); ++ else ++ decl(&pos); ++ } ++ } ++ else ++ orig_pos = pos = start_pos = curwin->w_cursor; ++ ++ /* ++ * The trick is to first search backwards and then search forward again, ++ * so that a match at the current cursor position will be correctly ++ * captured. ++ */ ++ for (i = 0; i < 2; i++) ++ { ++ if (i && count == 1) ++ flags = SEARCH_START; ++ ++ if (forward) ++ dir = i; ++ else ++ dir = !i; ++ result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), ++ spats[last_idx].pat, (long) (i ? count : 1), ++ SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END), ++ RE_SEARCH, 0, NULL); ++ ++ /* First search may fail, but then start searching from the ++ * beginning of the file (cursor might be on the search match) ++ * except when Visual mode is active, so that extending the visual ++ * selection works. */ ++ if (!result && i) /* not found, abort */ ++ { ++ curwin->w_cursor = orig_pos; ++ if (VIsual_active) ++ VIsual = save_VIsual; ++ p_ws = old_p_ws; ++ return FAIL; ++ } ++ else if (!i && !result && !visual_active) ++ { ++ if (forward) /* try again from start of buffer */ ++ { ++ clearpos(&pos); ++ } ++ else /* try again from end of buffer */ ++ { ++ /* searching backwards, so set pos to last line and col */ ++ pos.lnum = curwin->w_buffer->b_ml.ml_line_count; ++ pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count)); ++ } ++ } ++ ++ } ++ ++ start_pos = pos; ++ flags = (forward ? SEARCH_END : 0); ++ ++ /* move to match */ ++ result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), ++ spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); ++ ++ if (!VIsual_active) ++ VIsual = start_pos; ++ ++ p_ws = old_p_ws; ++ curwin->w_cursor = pos; ++ VIsual_active = TRUE; ++ VIsual_mode = 'v'; ++ ++ if (VIsual_active) ++ { ++ redraw_curbuf_later(INVERTED); /* update the inversion */ ++ if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor)) ++ inc_cursor(); ++ } ++ ++ #ifdef FEAT_FOLDING ++ if (fdo_flags & FDO_SEARCH && KeyTyped) ++ foldOpenCursor(); ++ #endif ++ ++ may_start_select('c'); ++ #ifdef FEAT_MOUSE ++ setmouse(); ++ #endif ++ #ifdef FEAT_CLIPBOARD ++ /* Make sure the clipboard gets updated. Needed because start and ++ * end are still the same, and the selection needs to be owned */ ++ clip_star.vmode = NUL; ++ #endif ++ redraw_curbuf_later(INVERTED); ++ showmode(); ++ ++ return OK; ++ } ++ #endif /* FEAT_VISUAL */ ++ + #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \ + || defined(PROTO) + /* +*** ../vim-7.3.617/src/version.c 2012-07-27 21:12:03.000000000 +0200 +--- src/version.c 2012-07-29 12:54:29.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 618, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +185. You order fast food over the Internet + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.619 b/source/ap/vim/patches/7.3.619 new file mode 100644 index 00000000..1fedcc78 --- /dev/null +++ b/source/ap/vim/patches/7.3.619 @@ -0,0 +1,50 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.619 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.619 +Problem: When executing a shell command Vim may become slow to respond. +Solution: Don't wait after every processed message. (idea by Yasuhiro + Matsumoto) +Files: src/os_win32.c + + +*** ../vim-7.3.618/src/os_win32.c 2012-07-19 11:37:22.000000000 +0200 +--- src/os_win32.c 2012-08-02 12:30:52.000000000 +0200 +*************** +*** 3319,3324 **** +--- 3319,3326 ---- + { + TranslateMessage(&msg); + pDispatchMessage(&msg); ++ delay = 1; ++ continue; + } + if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) + break; +*** ../vim-7.3.618/src/version.c 2012-07-29 12:55:21.000000000 +0200 +--- src/version.c 2012-08-02 12:29:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 619, + /**/ + +-- +Some of the well know MS-Windows errors: + EMULTI Multitasking attempted, system confused + EKEYBOARD Keyboard locked, try getting out of this one! + EXPLAIN Unexplained error, please tell us what happened + EFUTURE Reserved for our future mistakes + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.620 b/source/ap/vim/patches/7.3.620 new file mode 100644 index 00000000..5890f15f --- /dev/null +++ b/source/ap/vim/patches/7.3.620 @@ -0,0 +1,163 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.620 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.620 +Problem: Building with recent Ruby on Win32 doesn't work. +Solution: Add a separate argument for the API version. (Yasuhiro Matsumoto) +Files: src/Make_ming.mak, src/Make_mvc.mak + + +*** ../vim-7.3.619/src/Make_ming.mak 2012-07-06 13:40:44.000000000 +0200 +--- src/Make_ming.mak 2012-08-02 17:02:34.000000000 +0200 +*************** +*** 260,266 **** + # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) + # RUBY_VER=[Ruby version, eg 16, 17] (default is 16) + # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6) +! # You must set RUBY_VER_LONG when change RUBY_VER. + #RUBY=c:/ruby + ifdef RUBY + ifndef DYNAMIC_RUBY +--- 260,268 ---- + # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) + # RUBY_VER=[Ruby version, eg 16, 17] (default is 16) + # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6) +! # You must set RUBY_VER_LONG when changing RUBY_VER. +! # You must set RUBY_API_VER version to RUBY_VER_LONG. +! # Don't set ruby API version to RUBY_VER like 191. + #RUBY=c:/ruby + ifdef RUBY + ifndef DYNAMIC_RUBY +*************** +*** 273,278 **** +--- 275,283 ---- + ifndef RUBY_VER_LONG + RUBY_VER_LONG = 1.6 + endif ++ ifndef RUBY_API_VER ++ RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG)) ++ endif + + ifndef RUBY_PLATFORM + ifeq ($(RUBY_VER), 16) +*************** +*** 288,296 **** + + ifndef RUBY_INSTALL_NAME + ifeq ($(RUBY_VER), 16) +! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER) + else +! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER) + endif + endif + +--- 293,301 ---- + + ifndef RUBY_INSTALL_NAME + ifeq ($(RUBY_VER), 16) +! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) + else +! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) + endif + endif + +*** ../vim-7.3.619/src/Make_mvc.mak 2012-02-22 16:01:53.000000000 +0100 +--- src/Make_mvc.mak 2012-08-02 17:42:31.000000000 +0200 +*************** +*** 63,68 **** +--- 63,70 ---- + # RUBY_VER=[Ruby version, eg 16, 17] (default is 18) + # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.8) + # You must set RUBY_VER_LONG when change RUBY_VER. ++ # You must set RUBY_API_VER to RUBY_VER_LONG. ++ # Don't set ruby API version to RUBY_VER like 191. + # + # Tcl interface: + # TCL=[Path to Tcl directory] +*************** +*** 807,834 **** + !ifndef RUBY_VER_LONG + RUBY_VER_LONG = 1.8 + !endif + + !if $(RUBY_VER) >= 18 + !ifndef RUBY_PLATFORM + RUBY_PLATFORM = i386-mswin32 + !endif + !ifndef RUBY_INSTALL_NAME +! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER) + !endif + !else + !ifndef RUBY_PLATFORM + RUBY_PLATFORM = i586-mswin32 + !endif + !ifndef RUBY_INSTALL_NAME +! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER) + !endif + !endif # $(RUBY_VER) >= 18 + + !message Ruby requested (version $(RUBY_VER)) - root dir is "$(RUBY)" + CFLAGS = $(CFLAGS) -DFEAT_RUBY + RUBY_OBJ = $(OUTDIR)\if_ruby.obj +! !if $(RUBY_VER) >= 190 +! RUBY_INC = /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)" + !else + RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" + !endif +--- 813,843 ---- + !ifndef RUBY_VER_LONG + RUBY_VER_LONG = 1.8 + !endif ++ !ifndef RUBY_API_VER ++ RUBY_API_VER = $(RUBY_VER_LONG:.=) ++ !endif + + !if $(RUBY_VER) >= 18 + !ifndef RUBY_PLATFORM + RUBY_PLATFORM = i386-mswin32 + !endif + !ifndef RUBY_INSTALL_NAME +! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) + !endif + !else + !ifndef RUBY_PLATFORM + RUBY_PLATFORM = i586-mswin32 + !endif + !ifndef RUBY_INSTALL_NAME +! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) + !endif + !endif # $(RUBY_VER) >= 18 + + !message Ruby requested (version $(RUBY_VER)) - root dir is "$(RUBY)" + CFLAGS = $(CFLAGS) -DFEAT_RUBY + RUBY_OBJ = $(OUTDIR)\if_ruby.obj +! !if $(RUBY_VER) >= 19 +! RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)" /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" + !else + RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" + !endif +*** ../vim-7.3.619/src/version.c 2012-08-02 12:31:40.000000000 +0200 +--- src/version.c 2012-08-02 21:20:28.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 620, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +199. You read this entire list of symptoms, looking for something + that doesn't describe you. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.621 b/source/ap/vim/patches/7.3.621 new file mode 100644 index 00000000..7e3fe2a5 --- /dev/null +++ b/source/ap/vim/patches/7.3.621 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.621 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.621 +Problem: Compiler warnings on 64 bit windows. +Solution: Add type casts. (Mike Williams) +Files: src/ex_docmd.c, src/search.c + + +*** ../vim-7.3.620/src/ex_docmd.c 2012-07-27 21:12:03.000000000 +0200 +--- src/ex_docmd.c 2012-08-02 21:19:22.000000000 +0200 +*************** +*** 3392,3398 **** + /* Find start of last argument (argument just before cursor): */ + p = buff; + xp->xp_pattern = p; +! len = STRLEN(buff); + while (*p && p < buff + len) + { + if (*p == ' ' || *p == TAB) +--- 3392,3398 ---- + /* Find start of last argument (argument just before cursor): */ + p = buff; + xp->xp_pattern = p; +! len = (int)STRLEN(buff); + while (*p && p < buff + len) + { + if (*p == ' ' || *p == TAB) +*** ../vim-7.3.620/src/search.c 2012-07-29 12:55:21.000000000 +0200 +--- src/search.c 2012-08-02 21:20:02.000000000 +0200 +*************** +*** 4621,4627 **** + { + /* searching backwards, so set pos to last line and col */ + pos.lnum = curwin->w_buffer->b_ml.ml_line_count; +! pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count)); + } + } + +--- 4621,4628 ---- + { + /* searching backwards, so set pos to last line and col */ + pos.lnum = curwin->w_buffer->b_ml.ml_line_count; +! pos.col = (colnr_T)STRLEN( +! ml_get(curwin->w_buffer->b_ml.ml_line_count)); + } + } + +*** ../vim-7.3.620/src/version.c 2012-08-02 21:21:43.000000000 +0200 +--- src/version.c 2012-08-02 21:23:13.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 621, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +200. You really believe in the concept of a "paperless" office. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.622 b/source/ap/vim/patches/7.3.622 new file mode 100644 index 00000000..a2c26014 --- /dev/null +++ b/source/ap/vim/patches/7.3.622 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.622 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.622 +Problem: XPM library for Win32 can't be found. +Solution: Suggest using the one from the Vim ftp site. +Files: src/Make_mvc.mak + + +*** ../vim-7.3.621/src/Make_mvc.mak 2012-08-02 21:21:43.000000000 +0200 +--- src/Make_mvc.mak 2012-08-02 21:45:52.000000000 +0200 +*************** +*** 281,287 **** + + !ifdef XPM + # XPM - Include support for XPM signs +! # you can get xpm.lib from http://iamphet.nm.ru/xpm or create it yourself + XPM_OBJ = $(OBJDIR)/xpm_w32.obj + XPM_DEFS = -DFEAT_XPM_W32 + XPM_LIB = $(XPM)\lib\libXpm.lib +--- 281,291 ---- + + !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 +*** ../vim-7.3.621/src/version.c 2012-08-02 21:24:38.000000000 +0200 +--- src/version.c 2012-08-02 21:46:43.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 622, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +202. You're amazed to find out Spam is a food. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.623 b/source/ap/vim/patches/7.3.623 new file mode 100644 index 00000000..72aea71f --- /dev/null +++ b/source/ap/vim/patches/7.3.623 @@ -0,0 +1,92 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.623 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.623 +Problem: Perl 5.14 commands crash Vim on MS-Windows. +Solution: Use perl_get_sv() instead of GvSV(). (Raymond Ko) +Files: src/if_perl.xs + + +*** ../vim-7.3.622/src/if_perl.xs 2012-03-16 19:34:43.000000000 +0100 +--- src/if_perl.xs 2012-08-08 13:15:29.000000000 +0200 +*************** +*** 76,81 **** +--- 76,87 ---- + # define EXTERN_C + #endif + ++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) && defined(_MSC_VER) ++ /* Using PL_errgv to get the error message after perl_eval_sv() causes a crash ++ * with MSVC and Perl version 5.14. */ ++ # define AVOID_PL_ERRGV ++ #endif ++ + /* Compatibility hacks over */ + + static PerlInterpreter *perl_interp = NULL; +*************** +*** 796,802 **** +--- 802,812 ---- + + SvREFCNT_dec(sv); + ++ #ifdef AVOID_PL_ERRGV ++ err = SvPV(perl_get_sv("@", GV_ADD), length); ++ #else + err = SvPV(GvSV(PL_errgv), length); ++ #endif + + FREETMPS; + LEAVE; +*************** +*** 866,872 **** +--- 876,886 ---- + sv_catpvn(sv, "}", 1); + perl_eval_sv(sv, G_DISCARD | G_NOARGS); + SvREFCNT_dec(sv); ++ #ifdef AVOID_PL_ERRGV ++ str = SvPV(perl_get_sv("@", GV_ADD), length); ++ #else + str = SvPV(GvSV(PL_errgv), length); ++ #endif + if (length) + goto err; + +*************** +*** 880,886 **** +--- 894,904 ---- + sv_setpv(GvSV(PL_defgv), (char *)ml_get(i)); + PUSHMARK(sp); + perl_call_pv("VIM::perldo", G_SCALAR | G_EVAL); ++ #ifdef AVOID_PL_ERRGV ++ str = SvPV(perl_get_sv("@", GV_ADD), length); ++ #else + str = SvPV(GvSV(PL_errgv), length); ++ #endif + if (length) + break; + SPAGAIN; +*** ../vim-7.3.622/src/version.c 2012-08-02 21:48:20.000000000 +0200 +--- src/version.c 2012-08-08 13:08:10.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 623, + /**/ + +-- +Don't be humble ... you're not that great. + -- Golda Meir + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.624 b/source/ap/vim/patches/7.3.624 new file mode 100644 index 00000000..f1150b63 --- /dev/null +++ b/source/ap/vim/patches/7.3.624 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.624 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.624 +Problem: When cancelling input() it returns the third argument. That should + only happen for inputdialog(). +Solution: Check if inputdialog() was used. (Hirohito Higashi) +Files: src/eval.c + + +*** ../vim-7.3.623/src/eval.c 2012-07-25 16:46:59.000000000 +0200 +--- src/eval.c 2012-08-08 14:31:48.000000000 +0200 +*************** +*** 12966,12972 **** + rettv->vval.v_string = + getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr, + xp_type, xp_arg); +! if (rettv->vval.v_string == NULL + && argvars[1].v_type != VAR_UNKNOWN + && argvars[2].v_type != VAR_UNKNOWN) + rettv->vval.v_string = vim_strsave(get_tv_string_buf( +--- 12966,12972 ---- + rettv->vval.v_string = + getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr, + xp_type, xp_arg); +! if (inputdialog && rettv->vval.v_string == NULL + && argvars[1].v_type != VAR_UNKNOWN + && argvars[2].v_type != VAR_UNKNOWN) + rettv->vval.v_string = vim_strsave(get_tv_string_buf( +*** ../vim-7.3.623/src/version.c 2012-08-08 13:17:26.000000000 +0200 +--- src/version.c 2012-08-08 14:28:46.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 624, + /**/ + +-- +Your fault: core dumped + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.625 b/source/ap/vim/patches/7.3.625 new file mode 100644 index 00000000..5334bc8f --- /dev/null +++ b/source/ap/vim/patches/7.3.625 @@ -0,0 +1,140 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.625 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.625 +Problem: "gn" does not handle zero-width matches correctly. +Solution: Handle zero-width patterns specially. (Christian Brabandt) +Files: src/search.c + + +*** ../vim-7.3.624/src/search.c 2012-08-02 21:24:38.000000000 +0200 +--- src/search.c 2012-08-08 15:25:12.000000000 +0200 +*************** +*** 4546,4551 **** +--- 4546,4554 ---- + int visual_active = FALSE; + int flags = 0; + pos_T save_VIsual; ++ regmmatch_T regmatch; ++ int nmatched = 0; ++ int zerowidth = FALSE; + + + /* wrapping should not occur */ +*************** +*** 4581,4603 **** + orig_pos = pos = start_pos = curwin->w_cursor; + + /* + * The trick is to first search backwards and then search forward again, + * so that a match at the current cursor position will be correctly + * captured. + */ + for (i = 0; i < 2; i++) + { +- if (i && count == 1) +- flags = SEARCH_START; +- + if (forward) + dir = i; + else + dir = !i; + result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), + spats[last_idx].pat, (long) (i ? count : 1), +! SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END), +! RE_SEARCH, 0, NULL); + + /* First search may fail, but then start searching from the + * beginning of the file (cursor might be on the search match) +--- 4584,4625 ---- + orig_pos = pos = start_pos = curwin->w_cursor; + + /* ++ * Check for zero-width pattern. ++ */ ++ if (search_regcomp(spats[last_idx].pat, RE_SEARCH, RE_SEARCH, ++ ((SEARCH_HIS + SEARCH_KEEP)), ®match) == FAIL) ++ return FAIL; ++ ++ /* 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, ++ curwin->w_cursor.lnum, (colnr_T)0, NULL); ++ if (called_emsg) ++ return FAIL; ++ if (nmatched && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum ++ && regmatch.endpos[0].col == regmatch.startpos[0].col) ++ zerowidth = TRUE; ++ vim_free(regmatch.regprog); ++ ++ /* + * The trick is to first search backwards and then search forward again, + * so that a match at the current cursor position will be correctly + * captured. + */ + for (i = 0; i < 2; i++) + { + if (forward) + dir = i; + else + dir = !i; ++ ++ flags = 0; ++ if (!dir && !zerowidth) ++ flags = SEARCH_END; ++ + result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), + spats[last_idx].pat, (long) (i ? count : 1), +! SEARCH_KEEP | flags, RE_SEARCH, 0, NULL); + + /* First search may fail, but then start searching from the + * beginning of the file (cursor might be on the search match) +*************** +*** 4629,4638 **** + } + + start_pos = pos; +! flags = (forward ? SEARCH_END : 0); + +! /* move to match */ +! result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), + spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); + + if (!VIsual_active) +--- 4651,4662 ---- + } + + start_pos = pos; +! flags = forward ? SEARCH_END : 0; + +! /* move to match, except for zero-width matches, in which case, we are +! * already on the next match */ +! if (!zerowidth) +! result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), + spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); + + if (!VIsual_active) +*** ../vim-7.3.624/src/version.c 2012-08-08 14:33:16.000000000 +0200 +--- src/version.c 2012-08-08 15:21:53.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 625, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +222. You send more than 20 personal e-mails a day. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.626 b/source/ap/vim/patches/7.3.626 new file mode 100644 index 00000000..33b15456 --- /dev/null +++ b/source/ap/vim/patches/7.3.626 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.626 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.626 +Problem: Python interface doesn't build with Python 2.4 or older. +Solution: Define Py_ssize_t. (Benjamin Bannier) +Files: src/if_py_both.h + + +*** ../vim-7.3.625/src/if_py_both.h 2012-07-25 15:36:00.000000000 +0200 +--- src/if_py_both.h 2012-08-08 15:53:24.000000000 +0200 +*************** +*** 12,17 **** +--- 12,21 ---- + * Common code for if_python.c and if_python3.c. + */ + ++ #if PY_VERSION_HEX < 0x02050000 ++ typedef int Py_ssize_t; /* Python 2.4 and earlier don't have this type. */ ++ #endif ++ + #ifdef FEAT_MBYTE + # define ENC_OPT p_enc + #else +*** ../vim-7.3.625/src/version.c 2012-08-08 15:27:54.000000000 +0200 +--- src/version.c 2012-08-08 15:52:07.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 626, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +224. You set up your own Web page. You set up a Web page for each + of your kids... and your pets. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.627 b/source/ap/vim/patches/7.3.627 new file mode 100644 index 00000000..97a0298d --- /dev/null +++ b/source/ap/vim/patches/7.3.627 @@ -0,0 +1,102 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.627 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.627 +Problem: When using the "n" flag with the ":s" command a \= substitution + will not be evaluated. +Solution: Do perform the evaluation, so that a function can be invoked at + every matching position without changing the text. (Christian + Brabandt) +Files: src/ex_cmds.c + + +*** ../vim-7.3.626/src/ex_cmds.c 2012-07-10 15:18:18.000000000 +0200 +--- src/ex_cmds.c 2012-08-08 16:44:16.000000000 +0200 +*************** +*** 4264,4269 **** +--- 4264,4272 ---- + int endcolumn = FALSE; /* cursor in last column when done */ + pos_T old_cursor = curwin->w_cursor; + int start_nsubs; ++ #ifdef FEAT_EVAL ++ int save_ma = 0; ++ #endif + + cmd = eap->arg; + if (!global_busy) +*************** +*** 4668,4674 **** + } + sub_nsubs++; + did_sub = TRUE; +! goto skip; + } + + if (do_ask) +--- 4671,4682 ---- + } + sub_nsubs++; + did_sub = TRUE; +! #ifdef FEAT_EVAL +! /* Skip the substitution, unless an expression is used, +! * then it is evaluated in the sandbox. */ +! if (!(sub[0] == '\\' && sub[1] == '=')) +! #endif +! goto skip; + } + + if (do_ask) +*************** +*** 4840,4849 **** +--- 4848,4874 ---- + /* + * 3. substitute the string. + */ ++ #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++; ++ } ++ #endif + /* get length of substitution part */ + sublen = vim_regsub_multi(®match, + sub_firstlnum - regmatch.startpos[0].lnum, + sub, sub_firstline, FALSE, p_magic, TRUE); ++ #ifdef FEAT_EVAL ++ if (do_count) ++ { ++ curbuf->b_p_ma = save_ma; ++ sandbox--; ++ goto skip; ++ } ++ #endif + + /* When the match included the "$" of the last line it may + * go beyond the last line of the buffer. */ +*** ../vim-7.3.626/src/version.c 2012-08-08 16:05:03.000000000 +0200 +--- src/version.c 2012-08-08 16:48:45.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 627, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +225. You sign up for free subscriptions for all the computer magazines + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.628 b/source/ap/vim/patches/7.3.628 new file mode 100644 index 00000000..bab31479 --- /dev/null +++ b/source/ap/vim/patches/7.3.628 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.628 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.628 +Problem: ":open" does not allow for a !, which results in a confusing error + message. (Shawn Wilson) +Solution: Allow ! on ":open". (Christian Brabandt) +Files: src/ex_cmds.h + + +*** ../vim-7.3.627/src/ex_cmds.h 2012-07-06 18:27:34.000000000 +0200 +--- src/ex_cmds.h 2012-08-08 17:15:45.000000000 +0200 +*************** +*** 662,668 **** + EX(CMD_nunmenu, "nunmenu", ex_menu, + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_open, "open", ex_open, +! RANGE|EXTRA), + EX(CMD_oldfiles, "oldfiles", ex_oldfiles, + BANG|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_omap, "omap", ex_map, +--- 662,668 ---- + EX(CMD_nunmenu, "nunmenu", ex_menu, + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_open, "open", ex_open, +! RANGE|BANG|EXTRA), + EX(CMD_oldfiles, "oldfiles", ex_oldfiles, + BANG|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_omap, "omap", ex_map, +*** ../vim-7.3.627/src/version.c 2012-08-08 16:50:40.000000000 +0200 +--- src/version.c 2012-08-08 17:30:14.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 628, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +226. You sit down at the computer right after dinner and your spouse + says "See you in the morning." + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.629 b/source/ap/vim/patches/7.3.629 new file mode 100644 index 00000000..8e26dd49 --- /dev/null +++ b/source/ap/vim/patches/7.3.629 @@ -0,0 +1,437 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.629 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.629 +Problem: There is no way to make 'shiftwidth' follow 'tabstop'. +Solution: When 'shiftwidth' is zero use the value of 'tabstop'. (Christian + Brabandt) +Files: src/edit.c, src/ex_getln.c, src/fold.c, src/misc1.c, src/ops.c, + src/option.c, src/proto/option.pro + + +*** ../vim-7.3.628/src/edit.c 2012-07-25 16:46:59.000000000 +0200 +--- src/edit.c 2012-08-08 17:55:37.000000000 +0200 +*************** +*** 8899,8907 **** + + *inserted_space_p = FALSE; + if (p_sta && in_indent) +! ts = curbuf->b_p_sw; + else +! ts = curbuf->b_p_sts; + /* Compute the virtual column where we want to be. Since + * 'showbreak' may get in the way, need to get the last column of + * the previous character. */ +--- 8899,8907 ---- + + *inserted_space_p = FALSE; + if (p_sta && in_indent) +! ts = (int)get_sw_value(); + else +! ts = (int)curbuf->b_p_sts; + /* Compute the virtual column where we want to be. Since + * 'showbreak' may get in the way, need to get the last column of + * the previous character. */ +*************** +*** 9589,9595 **** + * When nothing special, insert TAB like a normal character + */ + if (!curbuf->b_p_et +! && !(p_sta && ind && curbuf->b_p_ts != curbuf->b_p_sw) + && curbuf->b_p_sts == 0) + return TRUE; + +--- 9589,9595 ---- + * When nothing special, insert TAB like a normal character + */ + if (!curbuf->b_p_et +! && !(p_sta && ind && curbuf->b_p_ts != get_sw_value()) + && curbuf->b_p_sts == 0) + return TRUE; + +*************** +*** 9605,9611 **** + AppendToRedobuff((char_u *)"\t"); + + if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ +! temp = (int)curbuf->b_p_sw; + else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */ + temp = (int)curbuf->b_p_sts; + else /* otherwise use 'tabstop' */ +--- 9605,9611 ---- + AppendToRedobuff((char_u *)"\t"); + + if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ +! temp = (int)get_sw_value(); + else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */ + temp = (int)curbuf->b_p_sts; + else /* otherwise use 'tabstop' */ +*** ../vim-7.3.628/src/ex_getln.c 2012-06-29 13:44:37.000000000 +0200 +--- src/ex_getln.c 2012-08-08 17:39:40.000000000 +0200 +*************** +*** 2268,2277 **** + + if (c1 == Ctrl_T) + { + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; + indent = get_indent_str(p, 8); +! indent += curbuf->b_p_sw - indent % curbuf->b_p_sw; + add_indent: + while (get_indent_str(p, 8) < indent) + { +--- 2268,2279 ---- + + if (c1 == Ctrl_T) + { ++ long sw = get_sw_value(); ++ + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; + indent = get_indent_str(p, 8); +! indent += sw - indent % sw; + add_indent: + while (get_indent_str(p, 8) < indent) + { +*************** +*** 2323,2329 **** + p[line_ga.ga_len] = NUL; + indent = get_indent_str(p, 8); + --indent; +! indent -= indent % curbuf->b_p_sw; + } + while (get_indent_str(p, 8) > indent) + { +--- 2325,2331 ---- + p[line_ga.ga_len] = NUL; + indent = get_indent_str(p, 8); + --indent; +! indent -= indent % get_sw_value(); + } + while (get_indent_str(p, 8) > indent) + { +*** ../vim-7.3.628/src/fold.c 2012-02-29 19:19:57.000000000 +0100 +--- src/fold.c 2012-08-08 17:40:11.000000000 +0200 +*************** +*** 3025,3031 **** + flp->lvl = -1; + } + else +! flp->lvl = get_indent_buf(buf, lnum) / buf->b_p_sw; + if (flp->lvl > flp->wp->w_p_fdn) + { + flp->lvl = flp->wp->w_p_fdn; +--- 3025,3031 ---- + flp->lvl = -1; + } + else +! flp->lvl = get_indent_buf(buf, lnum) / get_sw_value(); + if (flp->lvl > flp->wp->w_p_fdn) + { + flp->lvl = flp->wp->w_p_fdn; +*** ../vim-7.3.628/src/misc1.c 2012-07-25 16:09:59.000000000 +0200 +--- src/misc1.c 2012-08-08 17:43:07.000000000 +0200 +*************** +*** 1389,1397 **** + #ifdef FEAT_SMARTINDENT + if (did_si) + { + if (p_sr) +! newindent -= newindent % (int)curbuf->b_p_sw; +! newindent += (int)curbuf->b_p_sw; + } + #endif + /* Copy the indent */ +--- 1389,1399 ---- + #ifdef FEAT_SMARTINDENT + if (did_si) + { ++ int sw = (int)get_sw_value(); ++ + if (p_sr) +! newindent -= newindent % sw; +! newindent += sw; + } + #endif + /* Copy the indent */ +*************** +*** 6461,6471 **** + int + get_c_indent() + { + /* + * spaces from a block's opening brace the prevailing indent for that + * block should be + */ +! int ind_level = curbuf->b_p_sw; + + /* + * spaces from the edge of the line an open brace that's at the end of a +--- 6463,6476 ---- + int + get_c_indent() + { ++ int sw = (int)get_sw_value(); ++ + /* + * spaces from a block's opening brace the prevailing indent for that + * block should be + */ +! +! int ind_level = sw; + + /* + * spaces from the edge of the line an open brace that's at the end of a +*************** +*** 6512,6523 **** + /* + * spaces from the switch() indent a "case xx" label should be located + */ +! int ind_case = curbuf->b_p_sw; + + /* + * spaces from the "case xx:" code after a switch() should be located + */ +! int ind_case_code = curbuf->b_p_sw; + + /* + * lineup break at end of case in switch() with case label +--- 6517,6528 ---- + /* + * spaces from the switch() indent a "case xx" label should be located + */ +! int ind_case = sw; + + /* + * spaces from the "case xx:" code after a switch() should be located + */ +! int ind_case_code = sw; + + /* + * lineup break at end of case in switch() with case label +*************** +*** 6528,6572 **** + * spaces from the class declaration indent a scope declaration label + * should be located + */ +! int ind_scopedecl = curbuf->b_p_sw; + + /* + * spaces from the scope declaration label code should be located + */ +! int ind_scopedecl_code = curbuf->b_p_sw; + + /* + * amount K&R-style parameters should be indented + */ +! int ind_param = curbuf->b_p_sw; + + /* + * amount a function type spec should be indented + */ +! int ind_func_type = curbuf->b_p_sw; + + /* + * amount a cpp base class declaration or constructor initialization + * should be indented + */ +! int ind_cpp_baseclass = curbuf->b_p_sw; + + /* + * additional spaces beyond the prevailing indent a continuation line + * should be located + */ +! int ind_continuation = curbuf->b_p_sw; + + /* + * spaces from the indent of the line with an unclosed parentheses + */ +! int ind_unclosed = curbuf->b_p_sw * 2; + + /* + * spaces from the indent of the line with an unclosed parentheses, which + * itself is also unclosed + */ +! int ind_unclosed2 = curbuf->b_p_sw; + + /* + * suppress ignoring spaces from the indent of a line starting with an +--- 6533,6577 ---- + * spaces from the class declaration indent a scope declaration label + * should be located + */ +! int ind_scopedecl = sw; + + /* + * spaces from the scope declaration label code should be located + */ +! int ind_scopedecl_code = sw; + + /* + * amount K&R-style parameters should be indented + */ +! int ind_param = sw; + + /* + * amount a function type spec should be indented + */ +! int ind_func_type = sw; + + /* + * amount a cpp base class declaration or constructor initialization + * should be indented + */ +! int ind_cpp_baseclass = sw; + + /* + * additional spaces beyond the prevailing indent a continuation line + * should be located + */ +! int ind_continuation = sw; + + /* + * spaces from the indent of the line with an unclosed parentheses + */ +! int ind_unclosed = sw * 2; + + /* + * spaces from the indent of the line with an unclosed parentheses, which + * itself is also unclosed + */ +! int ind_unclosed2 = sw; + + /* + * suppress ignoring spaces from the indent of a line starting with an +*************** +*** 6719,6730 **** + if (*options == 's') /* "2s" means two times 'shiftwidth' */ + { + if (options == digits) +! n = curbuf->b_p_sw; /* just "s" is one 'shiftwidth' */ + else + { +! n *= curbuf->b_p_sw; + if (divider) +! n += (curbuf->b_p_sw * fraction + divider / 2) / divider; + } + ++options; + } +--- 6724,6735 ---- + if (*options == 's') /* "2s" means two times 'shiftwidth' */ + { + if (options == digits) +! n = sw; /* just "s" is one 'shiftwidth' */ + else + { +! n *= sw; + if (divider) +! n += (sw * fraction + divider / 2) / divider; + } + ++options; + } +*** ../vim-7.3.628/src/ops.c 2012-07-10 16:49:08.000000000 +0200 +--- src/ops.c 2012-08-08 17:34:28.000000000 +0200 +*************** +*** 332,338 **** + { + int count; + int i, j; +! int p_sw = (int)curbuf->b_p_sw; + + count = get_indent(); /* get current indent */ + +--- 332,338 ---- + { + int count; + int i, j; +! int p_sw = (int)get_sw_value(); + + count = get_indent(); /* get current indent */ + +*************** +*** 388,394 **** + int total; + char_u *newp, *oldp; + int oldcol = curwin->w_cursor.col; +! int p_sw = (int)curbuf->b_p_sw; + int p_ts = (int)curbuf->b_p_ts; + struct block_def bd; + int incr; +--- 388,394 ---- + int total; + char_u *newp, *oldp; + int oldcol = curwin->w_cursor.col; +! int p_sw = (int)get_sw_value(); + int p_ts = (int)curbuf->b_p_ts; + struct block_def bd; + int incr; +*** ../vim-7.3.628/src/option.c 2012-07-10 18:31:49.000000000 +0200 +--- src/option.c 2012-08-08 17:45:01.000000000 +0200 +*************** +*** 8125,8131 **** + need_mouse_correct = TRUE; + #endif + +! if (curbuf->b_p_sw <= 0) + { + errmsg = e_positive; + curbuf->b_p_sw = curbuf->b_p_ts; +--- 8125,8131 ---- + need_mouse_correct = TRUE; + #endif + +! if (curbuf->b_p_sw < 0) + { + errmsg = e_positive; + curbuf->b_p_sw = curbuf->b_p_ts; +*************** +*** 11419,11421 **** +--- 11419,11431 ---- + { + return check_opt_strings(p, p_ff_values, FALSE); + } ++ ++ /* ++ * Return the effective shiftwidth value for current buffer, using the ++ * 'tabstop' value when 'shiftwidth' is zero. ++ */ ++ long ++ get_sw_value() ++ { ++ return curbuf->b_p_sw ? curbuf->b_p_sw : curbuf->b_p_ts; ++ } +*** ../vim-7.3.628/src/proto/option.pro 2011-01-22 00:11:42.000000000 +0100 +--- src/proto/option.pro 2012-08-08 17:34:33.000000000 +0200 +*************** +*** 56,59 **** +--- 56,60 ---- + void save_file_ff __ARGS((buf_T *buf)); + int file_ff_differs __ARGS((buf_T *buf, int ignore_empty)); + int check_ff_value __ARGS((char_u *p)); ++ long get_sw_value __ARGS((void)); + /* vim: set ft=c : */ +*** ../vim-7.3.628/src/version.c 2012-08-08 17:31:36.000000000 +0200 +--- src/version.c 2012-08-08 17:57:48.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 629, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +228. You spend Saturday night making the counter on your home page + pass that 2000 mark. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.630 b/source/ap/vim/patches/7.3.630 new file mode 100644 index 00000000..d89cfbfe --- /dev/null +++ b/source/ap/vim/patches/7.3.630 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.630 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.630 +Problem: "|" does not behave correctly when 'virtualedit' is set. +Solution: Call validate_virtcol(). (David Bürgin) +Files: src/normal.c + + +*** ../vim-7.3.629/src/normal.c 2012-07-29 12:55:21.000000000 +0200 +--- src/normal.c 2012-08-15 13:20:13.000000000 +0200 +*************** +*** 7786,7792 **** +--- 7786,7795 ---- + * virtualedit. Recalculate curwin->w_cursor to avoid bad hilighting. + */ + if (c == Ctrl_V && (ve_flags & VE_BLOCK) && gchar_cursor() == TAB) ++ { ++ validate_virtcol(); + coladvance(curwin->w_virtcol); ++ } + #endif + VIsual = curwin->w_cursor; + +*** ../vim-7.3.629/src/version.c 2012-08-08 18:01:00.000000000 +0200 +--- src/version.c 2012-08-15 13:30:30.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 630, + /**/ + +-- +"Marriage is when a man and woman become as one; the trouble starts +when they try to decide which one" + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.631 b/source/ap/vim/patches/7.3.631 new file mode 100644 index 00000000..b7bff4fc --- /dev/null +++ b/source/ap/vim/patches/7.3.631 @@ -0,0 +1,322 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.631 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.631 +Problem: Cannot complete user names. +Solution: Add user name completion. (Dominique Pelle) +Files: runtime/doc/map.txt, src/auto/configure, src/config.h.in, + src/configure.in, src/ex_docmd.c, src/ex_getln.c, + src/misc1.c, src/misc2.c, src/proto/misc1.pro, src/vim.h + + +*** ../vim-7.3.630/runtime/doc/map.txt 2012-04-30 18:48:38.000000000 +0200 +--- runtime/doc/map.txt 2012-08-15 13:46:34.000000000 +0200 +*************** +*** 1227,1232 **** +--- 1244,1250 ---- + -complete=syntax syntax file names |'syntax'| + -complete=tag tags + -complete=tag_listfiles tags, file names are shown when CTRL-D is hit ++ -complete=user user names + -complete=var user variables + -complete=custom,{func} custom completion, defined via {func} + -complete=customlist,{func} custom completion, defined via {func} +*** ../vim-7.3.630/src/auto/configure 2012-07-25 16:32:03.000000000 +0200 +--- src/auto/configure 2012-08-15 13:48:06.000000000 +0200 +*************** +*** 10631,10637 **** + fi + + for ac_func in bcmp fchdir fchown fsync getcwd getpseudotty \ +! getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ + memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ + setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ + sigvec strcasecmp strerror strftime stricmp strncasecmp \ +--- 10631,10637 ---- + fi + + for ac_func in bcmp fchdir fchown fsync getcwd getpseudotty \ +! getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ + memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ + setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ + sigvec strcasecmp strerror strftime stricmp strncasecmp \ +*** ../vim-7.3.630/src/config.h.in 2012-02-05 22:51:27.000000000 +0100 +--- src/config.h.in 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 161,166 **** +--- 161,167 ---- + #undef HAVE_FSYNC + #undef HAVE_GETCWD + #undef HAVE_GETPSEUDOTTY ++ #undef HAVE_GETPWENT + #undef HAVE_GETPWNAM + #undef HAVE_GETPWUID + #undef HAVE_GETRLIMIT +*** ../vim-7.3.630/src/configure.in 2012-07-25 16:32:03.000000000 +0200 +--- src/configure.in 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 2994,3000 **** + dnl Check for functions in one big call, to reduce the size of configure. + dnl Can only be used for functions that do not require any include. + AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \ +! getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ + memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ + setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ + sigvec strcasecmp strerror strftime stricmp strncasecmp \ +--- 2994,3000 ---- + dnl Check for functions in one big call, to reduce the size of configure. + dnl Can only be used for functions that do not require any include. + AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \ +! getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ + memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ + setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ + sigvec strcasecmp strerror strftime stricmp strncasecmp \ +*** ../vim-7.3.630/src/ex_docmd.c 2012-08-02 21:24:38.000000000 +0200 +--- src/ex_docmd.c 2012-08-15 13:54:29.000000000 +0200 +*************** +*** 3515,3520 **** +--- 3515,3537 ---- + #endif + } + } ++ #if defined(FEAT_CMDL_COMPL) ++ /* Check for user names */ ++ if (*xp->xp_pattern == '~') ++ { ++ for (p = xp->xp_pattern + 1; *p != NUL && *p != '/'; ++p) ++ ; ++ /* Complete ~user only if it partially matches a user name. ++ * A full match ~user<Tab> will be replaced by user's home ++ * directory i.e. something like ~user<Tab> -> /home/user/ */ ++ if (*p == NUL && p > xp->xp_pattern + 1 ++ && match_user(xp->xp_pattern + 1) == 1) ++ { ++ xp->xp_context = EXPAND_USER; ++ ++xp->xp_pattern; ++ } ++ } ++ #endif + } + + /* +*************** +*** 5396,5401 **** +--- 5413,5419 ---- + #endif + {EXPAND_TAGS, "tag"}, + {EXPAND_TAGS_LISTFILES, "tag_listfiles"}, ++ {EXPAND_USER, "user"}, + {EXPAND_USER_VARS, "var"}, + {0, NULL} + }; +*** ../vim-7.3.630/src/ex_getln.c 2012-08-08 18:01:00.000000000 +0200 +--- src/ex_getln.c 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 4336,4341 **** +--- 4336,4342 ---- + * EXPAND_EXPRESSION Complete internal or user defined function/variable + * names in expressions, eg :while s^I + * EXPAND_ENV_VARS Complete environment variable names ++ * EXPAND_USER Complete user names + */ + static void + set_expand_context(xp) +*************** +*** 4681,4686 **** +--- 4682,4688 ---- + {EXPAND_LOCALES, get_locales, TRUE, FALSE}, + #endif + {EXPAND_ENV_VARS, get_env_name, TRUE, TRUE}, ++ {EXPAND_USER, get_users, TRUE, FALSE}, + }; + int i; + +*** ../vim-7.3.630/src/misc1.c 2012-08-08 18:01:00.000000000 +0200 +--- src/misc1.c 2012-08-15 13:57:53.000000000 +0200 +*************** +*** 18,23 **** +--- 18,28 ---- + static char_u *remove_tail __ARGS((char_u *p, char_u *pend, char_u *name)); + static int copy_indent __ARGS((int size, char_u *src)); + ++ /* All user names (for ~user completion as done by shell). */ ++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO) ++ static garray_T ga_users; ++ #endif ++ + /* + * Count the size (in window cells) of the indent in the current line. + */ +*************** +*** 3782,3787 **** +--- 3787,3800 ---- + { + vim_free(homedir); + } ++ ++ # ifdef FEAT_CMDL_COMPL ++ void ++ free_users() ++ { ++ ga_clear_strings(&ga_users); ++ } ++ # endif + #endif + + /* +*************** +*** 4451,4456 **** +--- 4464,4543 ---- + return name; + # endif + } ++ ++ /* ++ * Find all user names for user completion. ++ * Done only once and then cached. ++ */ ++ static void ++ init_users() { ++ static int lazy_init_done = FALSE; ++ ++ if (lazy_init_done) ++ return; ++ ++ lazy_init_done = TRUE; ++ ga_init2(&ga_users, sizeof(char_u *), 20); ++ ++ # if defined(HAVE_GETPWENT) && defined(HAVE_PWD_H) ++ { ++ char_u* user; ++ struct passwd* pw; ++ ++ setpwent(); ++ while ((pw = getpwent()) != NULL) ++ /* pw->pw_name shouldn't be NULL but just in case... */ ++ if (pw->pw_name != NULL) ++ { ++ if (ga_grow(&ga_users, 1) == FAIL) ++ break; ++ user = vim_strsave((char_u*)pw->pw_name); ++ if (user == NULL) ++ break; ++ ((char_u **)(ga_users.ga_data))[ga_users.ga_len++] = user; ++ } ++ endpwent(); ++ } ++ # endif ++ } ++ ++ /* ++ * Function given to ExpandGeneric() to obtain an user names. ++ */ ++ char_u* ++ get_users(xp, idx) ++ expand_T *xp UNUSED; ++ int idx; ++ { ++ init_users(); ++ if (idx < ga_users.ga_len) ++ return ((char_u **)ga_users.ga_data)[idx]; ++ return NULL; ++ } ++ ++ /* ++ * Check whether name matches a user name. Return: ++ * 0 if name does not match any user name. ++ * 1 if name partially matches the beginning of a user name. ++ * 2 is name fully matches a user name. ++ */ ++ int match_user(name) ++ char_u* name; ++ { ++ int i; ++ int n = (int)STRLEN(name); ++ int result = 0; ++ ++ init_users(); ++ for (i = 0; i < ga_users.ga_len; i++) ++ { ++ if (STRCMP(((char_u **)ga_users.ga_data)[i], name) == 0) ++ return 2; /* full match */ ++ if (STRNCMP(((char_u **)ga_users.ga_data)[i], name, n) == 0) ++ result = 1; /* partial match */ ++ } ++ return result; ++ } + #endif + + /* +*** ../vim-7.3.630/src/misc2.c 2012-06-29 15:51:26.000000000 +0200 +--- src/misc2.c 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 1110,1115 **** +--- 1110,1118 ---- + free_all_marks(); + alist_clear(&global_alist); + free_homedir(); ++ # if defined(FEAT_CMDL_COMPL) ++ free_users(); ++ # endif + free_search_patterns(); + free_old_sub(); + free_last_insert(); +*** ../vim-7.3.630/src/proto/misc1.pro 2012-06-06 16:12:54.000000000 +0200 +--- src/proto/misc1.pro 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 50,55 **** +--- 50,56 ---- + void vim_beep __ARGS((void)); + void init_homedir __ARGS((void)); + void free_homedir __ARGS((void)); ++ void free_users __ARGS((void)); + char_u *expand_env_save __ARGS((char_u *src)); + char_u *expand_env_save_opt __ARGS((char_u *src, int one)); + void expand_env __ARGS((char_u *src, char_u *dst, int dstlen)); +*************** +*** 57,62 **** +--- 58,65 ---- + char_u *vim_getenv __ARGS((char_u *name, int *mustfree)); + void vim_setenv __ARGS((char_u *name, char_u *val)); + char_u *get_env_name __ARGS((expand_T *xp, int idx)); ++ char_u *get_users __ARGS((expand_T *xp, int idx)); ++ int match_user __ARGS((char_u* name)); + void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one)); + char_u *home_replace_save __ARGS((buf_T *buf, char_u *src)); + int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname)); +*** ../vim-7.3.630/src/vim.h 2012-07-10 17:14:50.000000000 +0200 +--- src/vim.h 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 782,787 **** +--- 782,788 ---- + #define EXPAND_OWNSYNTAX 39 + #define EXPAND_LOCALES 40 + #define EXPAND_HISTORY 41 ++ #define EXPAND_USER 42 + + /* Values for exmode_active (0 is no exmode) */ + #define EXMODE_NORMAL 1 +*** ../vim-7.3.630/src/version.c 2012-08-15 13:30:55.000000000 +0200 +--- src/version.c 2012-08-15 14:01:12.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 631, + /**/ + +-- +"Marriage is the process of finding out what kind of man your wife +would have preferred" + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.632 b/source/ap/vim/patches/7.3.632 new file mode 100644 index 00000000..9e38969e --- /dev/null +++ b/source/ap/vim/patches/7.3.632 @@ -0,0 +1,537 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.632 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.632 +Problem: Cannot select beyond 222 columns with the mouse in xterm. +Solution: Add support for SGR mouse tracking. (Hayaki Saito) +Files: runtime/doc/options.txt, src/feature.h, src/keymap.h, src/misc2.c, + src/option.h, src/os_unix.c, src/term.c, src/version.c + + +*** ../vim-7.3.631/runtime/doc/options.txt 2012-07-10 16:49:08.000000000 +0200 +--- runtime/doc/options.txt 2012-08-15 16:04:26.000000000 +0200 +*************** +*** 7383,7388 **** +--- 7424,7435 ---- + jsbterm JSB term mouse handling. + *pterm-mouse* + pterm QNX pterm mouse handling. ++ *urxvt-mouse* ++ urxvt Mouse handling for the urxvt (rxvt-unicode) terminal. ++ *sgr-mouse* ++ sgr Mouse handling for the terminal that emits SGR-styled ++ mouse reporting. Works with xterm version 277 or ++ later. + + The mouse handling must be enabled at compile time |+mouse_xterm| + |+mouse_dec| |+mouse_netterm|. +*************** +*** 7395,7400 **** +--- 7442,7448 ---- + or "xterm2" already. The main use of this option is to set it to + "xterm", when the terminal name doesn't start with "xterm", but it can + handle xterm mouse codes. ++ The "sgr" value will be set if the xterm version is 277 or later. + The "xterm2" value will be set if the xterm version is reported to be + 95 or higher. This only works when compiled with the |+termresponse| + feature and if |t_RV| is set to the escape sequence to request the +*** ../vim-7.3.631/src/feature.h 2012-04-25 16:50:44.000000000 +0200 +--- src/feature.h 2012-08-15 15:46:07.000000000 +0200 +*************** +*** 1056,1061 **** +--- 1056,1064 ---- + # ifdef FEAT_BIG + # define FEAT_MOUSE_URXVT + # endif ++ # ifdef FEAT_BIG ++ # define FEAT_MOUSE_SGR ++ # endif + # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264)) + # define DOS_MOUSE + # endif +*************** +*** 1077,1082 **** +--- 1080,1090 ---- + # define FEAT_MOUSE_XTERM + #endif + ++ /* sgr is a small variation of mouse_xterm, and shares its code */ ++ #if defined(FEAT_MOUSE_SGR) && !defined(FEAT_MOUSE_XTERM) ++ # define FEAT_MOUSE_XTERM ++ #endif ++ + /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */ + #if !defined(FEAT_MOUSE_TTY) \ + && (defined(FEAT_MOUSE_XTERM) \ +*************** +*** 1087,1093 **** + || defined(FEAT_MOUSE_JSB) \ + || defined(FEAT_MOUSE_PTERM) \ + || defined(FEAT_SYSMOUSE) \ +! || defined(FEAT_MOUSE_URXVT)) + # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ + #endif + #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) +--- 1095,1102 ---- + || defined(FEAT_MOUSE_JSB) \ + || defined(FEAT_MOUSE_PTERM) \ + || defined(FEAT_SYSMOUSE) \ +! || defined(FEAT_MOUSE_URXVT) \ +! || defined(FEAT_MOUSE_SGR)) + # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ + #endif + #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) +*** ../vim-7.3.631/src/keymap.h 2012-01-20 17:15:47.000000000 +0100 +--- src/keymap.h 2012-08-15 15:46:07.000000000 +0200 +*************** +*** 110,115 **** +--- 110,118 ---- + /* Used for the urxvt mouse. */ + #define KS_URXVT_MOUSE 238 + ++ /* Used for the sgr mouse. */ ++ #define KS_SGR_MOUSE 237 ++ + /* + * Filler used after KS_SPECIAL and others + */ +*************** +*** 412,417 **** +--- 415,421 ---- + #define K_JSBTERM_MOUSE TERMCAP2KEY(KS_JSBTERM_MOUSE, KE_FILLER) + #define K_PTERM_MOUSE TERMCAP2KEY(KS_PTERM_MOUSE, KE_FILLER) + #define K_URXVT_MOUSE TERMCAP2KEY(KS_URXVT_MOUSE, KE_FILLER) ++ #define K_SGR_MOUSE TERMCAP2KEY(KS_SGR_MOUSE, KE_FILLER) + + #define K_SELECT TERMCAP2KEY(KS_SELECT, KE_FILLER) + #define K_TEAROFF TERMCAP2KEY(KS_TEAROFF, KE_FILLER) +*** ../vim-7.3.631/src/misc2.c 2012-08-15 14:04:50.000000000 +0200 +--- src/misc2.c 2012-08-15 15:46:07.000000000 +0200 +*************** +*** 2433,2438 **** +--- 2433,2441 ---- + #ifdef FEAT_MOUSE_URXVT + {K_URXVT_MOUSE, (char_u *)"UrxvtMouse"}, + #endif ++ #ifdef FEAT_MOUSE_SGR ++ {K_SGR_MOUSE, (char_u *)"SgrMouse"}, ++ #endif + {K_LEFTMOUSE, (char_u *)"LeftMouse"}, + {K_LEFTMOUSE_NM, (char_u *)"LeftMouseNM"}, + {K_LEFTDRAG, (char_u *)"LeftDrag"}, +*** ../vim-7.3.631/src/option.h 2012-07-10 16:49:08.000000000 +0200 +--- src/option.h 2012-08-15 15:46:07.000000000 +0200 +*************** +*** 822,828 **** + EXTERN char_u *p_ttym; /* 'ttymouse' */ + EXTERN unsigned ttym_flags; + # ifdef IN_OPTION_C +! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", NULL}; + # endif + # define TTYM_XTERM 0x01 + # define TTYM_XTERM2 0x02 +--- 822,828 ---- + EXTERN char_u *p_ttym; /* 'ttymouse' */ + EXTERN unsigned ttym_flags; + # ifdef IN_OPTION_C +! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", "sgr", NULL}; + # endif + # define TTYM_XTERM 0x01 + # define TTYM_XTERM2 0x02 +*************** +*** 831,836 **** +--- 831,837 ---- + # define TTYM_JSBTERM 0x10 + # define TTYM_PTERM 0x20 + # define TTYM_URXVT 0x40 ++ # define TTYM_SGR 0x80 + #endif + EXTERN char_u *p_udir; /* 'undodir' */ + EXTERN long p_ul; /* 'undolevels' */ +*** ../vim-7.3.631/src/os_unix.c 2012-04-20 15:55:10.000000000 +0200 +--- src/os_unix.c 2012-08-15 16:06:54.000000000 +0200 +*************** +*** 2159,2168 **** +--- 2159,2171 ---- + * Return 1 for "xterm". + * Return 2 for "xterm2". + * Return 3 for "urxvt". ++ * Return 4 for "sgr". + */ + int + use_xterm_mouse() + { ++ if (ttym_flags == TTYM_SGR) ++ return 4; + if (ttym_flags == TTYM_URXVT) + return 3; + if (ttym_flags == TTYM_XTERM2) +*************** +*** 3339,3345 **** + xterm_mouse_vers = use_xterm_mouse(); + + # ifdef FEAT_MOUSE_URXVT +! if (ttym_flags == TTYM_URXVT) { + out_str_nf((char_u *) + (on + ? IF_EB("\033[?1015h", ESC_STR "[?1015h") +--- 3342,3349 ---- + xterm_mouse_vers = use_xterm_mouse(); + + # ifdef FEAT_MOUSE_URXVT +! if (ttym_flags == TTYM_URXVT) +! { + out_str_nf((char_u *) + (on + ? IF_EB("\033[?1015h", ESC_STR "[?1015h") +*************** +*** 3348,3353 **** +--- 3352,3368 ---- + } + # endif + ++ # ifdef FEAT_MOUSE_SGR ++ if (ttym_flags == TTYM_SGR) ++ { ++ out_str_nf((char_u *) ++ (on ++ ? IF_EB("\033[?1006h", ESC_STR "[?1006h") ++ : IF_EB("\033[?1006l", ESC_STR "[?1006l"))); ++ ison = on; ++ } ++ # endif ++ + if (xterm_mouse_vers > 0) + { + if (on) /* enable mouse events, use mouse tracking if available */ +*************** +*** 3577,3582 **** +--- 3592,3618 ---- + else + del_mouse_termcode(KS_URXVT_MOUSE); + # endif ++ # ifdef FEAT_MOUSE_SGR ++ /* same as the dec mouse */ ++ if (use_xterm_mouse() == 4 ++ # ifdef FEAT_GUI ++ && !gui.in_use ++ # endif ++ ) ++ { ++ set_mouse_termcode(KS_SGR_MOUSE, (char_u *)(term_is_8bit(T_NAME) ++ ? IF_EB("\233<", CSI_STR "<") ++ : IF_EB("\033[<", ESC_STR "[<"))); ++ ++ if (*p_mouse != NUL) ++ { ++ mch_setmouse(FALSE); ++ setmouse(); ++ } ++ } ++ else ++ del_mouse_termcode(KS_SGR_MOUSE); ++ # endif + } + #endif + +*** ../vim-7.3.631/src/term.c 2012-02-05 22:05:44.000000000 +0100 +--- src/term.c 2012-08-15 16:14:09.000000000 +0200 +*************** +*** 1997,2002 **** +--- 1997,2003 ---- + # define HMT_JSBTERM 8 + # define HMT_PTERM 16 + # define HMT_URXVT 32 ++ # define HMT_SGR 64 + static int has_mouse_termcode = 0; + # endif + +*************** +*** 2037,2042 **** +--- 2038,2048 ---- + has_mouse_termcode |= HMT_URXVT; + else + # endif ++ # ifdef FEAT_MOUSE_SGR ++ if (n == KS_SGR_MOUSE) ++ has_mouse_termcode |= HMT_SGR; ++ else ++ # endif + has_mouse_termcode |= HMT_NORMAL; + # endif + } +*************** +*** 2079,2084 **** +--- 2085,2095 ---- + has_mouse_termcode &= ~HMT_URXVT; + else + # endif ++ # ifdef FEAT_MOUSE_SGR ++ if (n == KS_SGR_MOUSE) ++ has_mouse_termcode &= ~HMT_SGR; ++ else ++ # endif + has_mouse_termcode &= ~HMT_NORMAL; + # endif + } +*************** +*** 4023,4029 **** + #ifdef FEAT_TERMRESPONSE + if (key_name[0] == NUL + /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */ +! || key_name[0] == KS_URXVT_MOUSE) + { + /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also + * eat other possible responses to t_RV, rxvt returns +--- 4034,4041 ---- + #ifdef FEAT_TERMRESPONSE + if (key_name[0] == NUL + /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */ +! || key_name[0] == KS_URXVT_MOUSE +! || key_name[0] == KS_SGR_MOUSE) + { + /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also + * eat other possible responses to t_RV, rxvt returns +*************** +*** 4061,4066 **** +--- 4073,4088 ---- + + if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) + { ++ # ifdef TTYM_SGR ++ if (extra >= 277 ++ # ifdef TTYM_URXVT ++ && ttym_flags != TTYM_URXVT ++ # endif ++ ) ++ set_option_value((char_u *)"ttym", 0L, ++ (char_u *)"sgr", 0); ++ else ++ # endif + /* if xterm version >= 95 use mouse dragging */ + if (extra >= 95 + # ifdef TTYM_URXVT +*************** +*** 4147,4167 **** + /* + * If it is a mouse click, get the coordinates. + */ +! if (key_name[0] == (int)KS_MOUSE + # ifdef FEAT_MOUSE_JSB +! || key_name[0] == (int)KS_JSBTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_NET +! || key_name[0] == (int)KS_NETTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_DEC +! || key_name[0] == (int)KS_DEC_MOUSE + # endif + # ifdef FEAT_MOUSE_PTERM +! || key_name[0] == (int)KS_PTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_URXVT +! || key_name[0] == (int)KS_URXVT_MOUSE + # endif + ) + { +--- 4169,4192 ---- + /* + * If it is a mouse click, get the coordinates. + */ +! if (key_name[0] == KS_MOUSE + # ifdef FEAT_MOUSE_JSB +! || key_name[0] == KS_JSBTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_NET +! || key_name[0] == KS_NETTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_DEC +! || key_name[0] == KS_DEC_MOUSE + # endif + # ifdef FEAT_MOUSE_PTERM +! || key_name[0] == KS_PTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_URXVT +! || key_name[0] == KS_URXVT_MOUSE +! # endif +! # ifdef FEAT_MOUSE_SGR +! || key_name[0] == KS_SGR_MOUSE + # endif + ) + { +*************** +*** 4243,4250 **** + } + } + +! # ifdef FEAT_MOUSE_URXVT +! if (key_name[0] == (int)KS_URXVT_MOUSE) + { + for (;;) + { +--- 4268,4276 ---- + } + } + +! # if defined(FEAT_MOUSE_URXVT) || defined(FEAT_MOUSE_SGR) +! if (key_name[0] == KS_URXVT_MOUSE +! || key_name[0] == KS_SGR_MOUSE) + { + for (;;) + { +*************** +*** 4256,4261 **** +--- 4282,4301 ---- + * ^-- row + * ^----- column + * ^-------- code ++ * ++ * SGR 1006 mouse reporting mode: ++ * Almost identical to xterm mouse mode, except the values ++ * are decimal instead of bytes. ++ * ++ * \033[<%d;%d;%dM ++ * ^-- row ++ * ^----- column ++ * ^-------- code ++ * ++ * \033[<%d;%d;%dm : mouse release event ++ * ^-- row ++ * ^----- column ++ * ^-------- code + */ + p = tp + slen; + +*************** +*** 4263,4294 **** + if (*p++ != ';') + return -1; + + mouse_col = getdigits(&p) - 1; + if (*p++ != ';') + return -1; + + mouse_row = getdigits(&p) - 1; +! if (*p++ != 'M') + return -1; + + slen += (int)(p - (tp + slen)); + + /* skip this one if next one has same code (like xterm + * case) */ + j = termcodes[idx].len; +! if (STRNCMP(tp, tp + slen, (size_t)j) == 0) { +! /* check if the command is complete by looking for the +! * M */ + int slen2; + int cmd_complete = 0; +! for (slen2 = slen; slen2 < len; slen2++) { +! if (tp[slen2] == 'M') { + cmd_complete = 1; + break; + } + } + p += j; +! if (cmd_complete && getdigits(&p) == mouse_code) { + slen += j; /* skip the \033[ */ + continue; + } +--- 4303,4348 ---- + if (*p++ != ';') + return -1; + ++ /* when mouse reporting is SGR, add 32 to mouse code */ ++ if (key_name[0] == KS_SGR_MOUSE) ++ mouse_code += 32; ++ + mouse_col = getdigits(&p) - 1; + if (*p++ != ';') + return -1; + + mouse_row = getdigits(&p) - 1; +! if (key_name[0] == KS_SGR_MOUSE && *p == 'm') +! mouse_code |= MOUSE_RELEASE; +! else if (*p != 'M') + return -1; ++ p++; + + slen += (int)(p - (tp + slen)); + + /* skip this one if next one has same code (like xterm + * case) */ + j = termcodes[idx].len; +! if (STRNCMP(tp, tp + slen, (size_t)j) == 0) +! { + int slen2; + int cmd_complete = 0; +! +! /* check if the command is complete by looking for the +! * 'M' */ +! for (slen2 = slen; slen2 < len; slen2++) +! { +! if (tp[slen2] == 'M' +! || (key_name[0] == KS_SGR_MOUSE +! && tp[slen2] == 'm')) +! { + cmd_complete = 1; + break; + } + } + p += j; +! if (cmd_complete && getdigits(&p) == mouse_code) +! { + slen += j; /* skip the \033[ */ + continue; + } +*************** +*** 4302,4307 **** +--- 4356,4364 ---- + #ifdef FEAT_MOUSE_URXVT + || key_name[0] == (int)KS_URXVT_MOUSE + #endif ++ #ifdef FEAT_MOUSE_SGR ++ || key_name[0] == KS_SGR_MOUSE ++ #endif + ) + { + # if !defined(MSWIN) && !defined(MSDOS) +*** ../vim-7.3.631/src/version.c 2012-08-15 14:04:50.000000000 +0200 +--- src/version.c 2012-08-15 15:47:30.000000000 +0200 +*************** +*** 384,389 **** +--- 384,394 ---- + # else + "-mouse_urxvt", + # endif ++ # ifdef FEAT_MOUSE_SGR ++ "+mouse_sgr", ++ # else ++ "-mouse_sgr", ++ # endif + #endif + #ifdef __QNX__ + # ifdef FEAT_MOUSE_PTERM +*** ../vim-7.3.631/src/version.c 2012-08-15 14:04:50.000000000 +0200 +--- src/version.c 2012-08-15 15:47:30.000000000 +0200 +*************** +*** 716,717 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 632, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +243. You unsuccessfully try to download a pizza from www.dominos.com. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.633 b/source/ap/vim/patches/7.3.633 new file mode 100644 index 00000000..899ccb38 --- /dev/null +++ b/source/ap/vim/patches/7.3.633 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.633 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.633 +Problem: Selection remains displayed as selected after selecting another + text. +Solution: Call xterm_update() before select(). (Andrew Pimlott) +Files: src/os_unix.c + + +*** ../vim-7.3.632/src/os_unix.c 2012-08-15 16:20:59.000000000 +0200 +--- src/os_unix.c 2012-08-15 17:15:58.000000000 +0200 +*************** +*** 5196,5201 **** +--- 5196,5205 ---- + FD_SET(ConnectionNumber(xterm_dpy), &rfds); + if (maxfd < ConnectionNumber(xterm_dpy)) + maxfd = ConnectionNumber(xterm_dpy); ++ ++ /* An event may have already been read but not handled. In ++ * particulary, XFlush may cause this. */ ++ xterm_update(); + } + # endif + # ifdef FEAT_MOUSE_GPM +*************** +*** 5216,5229 **** + maxfd = xsmp_icefd; + } + # endif +! #ifdef FEAT_NETBEANS_INTG + if (nb_fd != -1) + { + FD_SET(nb_fd, &rfds); + if (maxfd < nb_fd) + maxfd = nb_fd; + } +! #endif + + # ifdef OLD_VMS + /* Old VMS as v6.2 and older have broken select(). It waits more than +--- 5220,5233 ---- + maxfd = xsmp_icefd; + } + # endif +! # ifdef FEAT_NETBEANS_INTG + if (nb_fd != -1) + { + FD_SET(nb_fd, &rfds); + if (maxfd < nb_fd) + maxfd = nb_fd; + } +! # endif + + # ifdef OLD_VMS + /* Old VMS as v6.2 and older have broken select(). It waits more than +*** ../vim-7.3.632/src/version.c 2012-08-15 16:20:59.000000000 +0200 +--- src/version.c 2012-08-15 17:22:17.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 633, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +245. You use Real Audio to listen to a radio station from a distant + city rather than turn on your stereo system. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.634 b/source/ap/vim/patches/7.3.634 new file mode 100644 index 00000000..3262bab3 --- /dev/null +++ b/source/ap/vim/patches/7.3.634 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.634 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.634 +Problem: Month/Day format for undo is confusing. (Marcin Szamotulski) +Solution: Always use Year/Month/Day, should work for everybody. +Files: src/undo.c + + +*** ../vim-7.3.633/src/undo.c 2012-06-01 13:46:06.000000000 +0200 +--- src/undo.c 2012-08-23 12:43:24.000000000 +0200 +*************** +*** 2880,2890 **** + if (time(NULL) - tt < (60L * 60L * 12L)) + /* within 12 hours */ + (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime); +- else if (time(NULL) - tt < (60L * 60L * 24L * 180L)) +- /* within 6 months */ +- (void)strftime((char *)buf, buflen, "%m/%d %H:%M:%S", curtime); + else +! /* long ago */ + (void)strftime((char *)buf, buflen, "%Y/%m/%d %H:%M:%S", curtime); + } + else +--- 2880,2887 ---- + if (time(NULL) - tt < (60L * 60L * 12L)) + /* within 12 hours */ + (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime); + else +! /* longer ago */ + (void)strftime((char *)buf, buflen, "%Y/%m/%d %H:%M:%S", curtime); + } + else +*** ../vim-7.3.633/src/version.c 2012-08-15 17:26:53.000000000 +0200 +--- src/version.c 2012-08-23 12:58:36.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 634, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +10E. You start counting in hex. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.635 b/source/ap/vim/patches/7.3.635 new file mode 100644 index 00000000..4a677025 --- /dev/null +++ b/source/ap/vim/patches/7.3.635 @@ -0,0 +1,50 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.635 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.635 +Problem: Issue 21: System call during startup sets 'lines' to a wrong + value. (Karl Yngve) +Solution: Don't set the shell size while the GUI is still starting up. + (Christian Brabandt) +Files: src/ui.c + + +*** ../vim-7.3.634/src/ui.c 2012-07-10 16:49:08.000000000 +0200 +--- src/ui.c 2012-08-23 13:25:26.000000000 +0200 +*************** +*** 298,303 **** +--- 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 +*** ../vim-7.3.634/src/version.c 2012-08-23 12:58:56.000000000 +0200 +--- src/version.c 2012-08-23 13:27:00.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 635, + /**/ + +-- +ARTHUR: This new learning amazes me, Sir Bedevere. Explain again how sheep's + bladders may be employed to prevent earthquakes. + "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 /// diff --git a/source/ap/vim/patches/7.3.636 b/source/ap/vim/patches/7.3.636 new file mode 100644 index 00000000..453a7fc9 --- /dev/null +++ b/source/ap/vim/patches/7.3.636 @@ -0,0 +1,148 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.636 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.636 (after 7.3.625) +Problem: Not all zero-width matches handled correctly for "gn". +Solution: Move zero-width detection to a separate function. (Christian + Brabandt) +Files: src/search.c + + +*** ../vim-7.3.635/src/search.c 2012-08-08 15:27:54.000000000 +0200 +--- src/search.c 2012-08-23 15:52:50.000000000 +0200 +*************** +*** 4526,4531 **** +--- 4526,4533 ---- + #endif /* FEAT_TEXTOBJ */ + + #if defined(FEAT_VISUAL) || defined(PROTO) ++ static int is_zerowidth __ARGS((char_u *pattern)); ++ + /* + * Find next search match under cursor, cursor at end. + * Used while an operator is pending, and in Visual mode. +*************** +*** 4546,4556 **** + int visual_active = FALSE; + int flags = 0; + pos_T save_VIsual; +- regmmatch_T regmatch; +- int nmatched = 0; + int zerowidth = FALSE; + +- + /* wrapping should not occur */ + p_ws = FALSE; + +--- 4548,4555 ---- +*************** +*** 4583,4606 **** + else + orig_pos = pos = start_pos = curwin->w_cursor; + +! /* +! * Check for zero-width pattern. +! */ +! if (search_regcomp(spats[last_idx].pat, RE_SEARCH, RE_SEARCH, +! ((SEARCH_HIS + SEARCH_KEEP)), ®match) == FAIL) + return FAIL; + +- /* 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, +- curwin->w_cursor.lnum, (colnr_T)0, NULL); +- if (called_emsg) +- return FAIL; +- if (nmatched && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum +- && regmatch.endpos[0].col == regmatch.startpos[0].col) +- zerowidth = TRUE; +- vim_free(regmatch.regprog); +- + /* + * The trick is to first search backwards and then search forward again, + * so that a match at the current cursor position will be correctly +--- 4582,4592 ---- + else + orig_pos = pos = start_pos = curwin->w_cursor; + +! /* Is the pattern is zero-width? */ +! zerowidth = is_zerowidth(spats[last_idx].pat); +! if (zerowidth == -1) + return FAIL; + + /* + * The trick is to first search backwards and then search forward again, + * so that a match at the current cursor position will be correctly +*************** +*** 4693,4698 **** +--- 4679,4721 ---- + + return OK; + } ++ ++ /* ++ * Check if the pattern is zero-width. ++ * Returns TRUE, FALSE or -1 for failure. ++ */ ++ static int ++ is_zerowidth(pattern) ++ char_u *pattern; ++ { ++ regmmatch_T regmatch; ++ int nmatched = 0; ++ int result = -1; ++ pos_T pos; ++ ++ if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH, ++ SEARCH_KEEP, ®match) == FAIL) ++ return -1; ++ ++ /* move to match */ ++ clearpos(&pos); ++ if (searchit(curwin, curbuf, &pos, FORWARD, spats[last_idx].pat, 1, ++ SEARCH_KEEP, RE_SEARCH, 0, NULL) != FAIL) ++ { ++ /* 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; ++ } + #endif /* FEAT_VISUAL */ + + #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \ +*** ../vim-7.3.635/src/version.c 2012-08-23 13:28:50.000000000 +0200 +--- src/version.c 2012-08-23 15:25:23.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 636, + /**/ + +-- +Edison's greatest achievement came in 1879, when he invented the +electric company. Edison's design was a brilliant adaptation of the +simple electrical circuit: the electric company sends electricity +through a wire to a customer, then immediately gets the electricity +back through another wire + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.637 b/source/ap/vim/patches/7.3.637 new file mode 100644 index 00000000..f7f1d903 --- /dev/null +++ b/source/ap/vim/patches/7.3.637 @@ -0,0 +1,94 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.637 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.637 +Problem: Cannot catch the error caused by a foldopen when there is no fold. + (ZyX, Issue 48) +Solution: Do not break out of the loop early when inside try/catch. + (Christian Brabandt) Except when there is a syntax error. +Files: src/ex_docmd.c, src/globals.h + + +*** ../vim-7.3.636/src/ex_docmd.c 2012-08-15 14:04:50.000000000 +0200 +--- src/ex_docmd.c 2012-08-23 18:39:08.000000000 +0200 +*************** +*** 1295,1301 **** + && cstack.cs_trylevel == 0 + #endif + ) +! && !(did_emsg && used_getline + && (getline_equal(fgetline, cookie, getexmodeline) + || getline_equal(fgetline, cookie, getexline))) + && (next_cmdline != NULL +--- 1295,1308 ---- + && cstack.cs_trylevel == 0 + #endif + ) +! && !(did_emsg +! #ifdef FEAT_EVAL +! /* Keep going when inside try/catch, so that the error can be +! * dealth with, except when it is a syntax error, it may cause +! * the :endtry to be missed. */ +! && (cstack.cs_trylevel == 0 || did_emsg_syntax) +! #endif +! && used_getline + && (getline_equal(fgetline, cookie, getexmodeline) + || getline_equal(fgetline, cookie, getexline))) + && (next_cmdline != NULL +*************** +*** 1305,1310 **** +--- 1312,1318 ---- + || (flags & DOCMD_REPEAT))); + + vim_free(cmdline_copy); ++ did_emsg_syntax = FALSE; + #ifdef FEAT_EVAL + free_cmdlines(&lines_ga); + ga_clear(&lines_ga); +*************** +*** 2137,2142 **** +--- 2145,2151 ---- + if (!sourcing) + append_command(*cmdlinep); + errormsg = IObuff; ++ did_emsg_syntax = TRUE; + } + goto doend; + } +*** ../vim-7.3.636/src/globals.h 2012-07-10 16:49:08.000000000 +0200 +--- src/globals.h 2012-08-23 18:29:09.000000000 +0200 +*************** +*** 183,188 **** +--- 183,190 ---- + #endif + EXTERN int did_emsg; /* set by emsg() when the message + is displayed or thrown */ ++ EXTERN int did_emsg_syntax; /* did_emsg set because of a ++ syntax error */ + EXTERN int called_emsg; /* always set by emsg() */ + EXTERN int ex_exitval INIT(= 0); /* exit value for ex mode */ + EXTERN int emsg_on_display INIT(= FALSE); /* there is an error message */ +*** ../vim-7.3.636/src/version.c 2012-08-23 15:53:00.000000000 +0200 +--- src/version.c 2012-08-23 17:59:12.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 637, + /**/ + +-- +GOD: That is your purpose Arthur ... the Quest for the Holy Grail ... + "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 /// diff --git a/source/ap/vim/patches/7.3.638 b/source/ap/vim/patches/7.3.638 new file mode 100644 index 00000000..f88a9399 --- /dev/null +++ b/source/ap/vim/patches/7.3.638 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.638 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.638 +Problem: Unecessary redraw of the previous character. +Solution: Check if the character is double-width. (Jon Long) +Files: src/screen.c + + +*** ../vim-7.3.637/src/screen.c 2012-07-10 16:49:08.000000000 +0200 +--- src/screen.c 2012-08-23 18:49:33.000000000 +0200 +*************** +*** 5332,5339 **** + && (ScreenLinesUC[off_from] != ScreenLinesUC[off_to] + || (ScreenLinesUC[off_from] != 0 + && comp_char_differs(off_from, off_to)) +! || (cols > 1 && ScreenLines[off_from + 1] +! != ScreenLines[off_to + 1]))) + #endif + )) + return TRUE; +--- 5332,5340 ---- + && (ScreenLinesUC[off_from] != ScreenLinesUC[off_to] + || (ScreenLinesUC[off_from] != 0 + && comp_char_differs(off_from, off_to)) +! || ((*mb_off2cells)(off_from, off_from + cols) > 1 +! && ScreenLines[off_from + 1] +! != ScreenLines[off_to + 1]))) + #endif + )) + return TRUE; +*** ../vim-7.3.637/src/version.c 2012-08-23 18:43:06.000000000 +0200 +--- src/version.c 2012-08-23 18:47:11.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 638, + /**/ + +-- +There is a fine line between courage and foolishness. +Unfortunately, it's not a fence. + + /// 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 /// diff --git a/source/ap/vim/patches/7.3.639 b/source/ap/vim/patches/7.3.639 new file mode 100644 index 00000000..359dc6d8 --- /dev/null +++ b/source/ap/vim/patches/7.3.639 @@ -0,0 +1,846 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.639 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.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 <malloc.h> ++ # 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 <X11/Xlib.h> ++ # include <X11/Xutil.h> ++ # 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 /// diff --git a/source/ap/vim/patches/7.3.640 b/source/ap/vim/patches/7.3.640 Binary files differnew file mode 100644 index 00000000..984df640 --- /dev/null +++ b/source/ap/vim/patches/7.3.640 diff --git a/source/ap/vim/patches/7.3.641 b/source/ap/vim/patches/7.3.641 new file mode 100644 index 00000000..daacdb4f --- /dev/null +++ b/source/ap/vim/patches/7.3.641 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.641 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.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 /// diff --git a/source/ap/vim/patches/7.3.642 b/source/ap/vim/patches/7.3.642 new file mode 100644 index 00000000..ddc40321 --- /dev/null +++ b/source/ap/vim/patches/7.3.642 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.642 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.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 /// diff --git a/source/ap/vim/patches/7.3.643 b/source/ap/vim/patches/7.3.643 new file mode 100644 index 00000000..c2f700c5 --- /dev/null +++ b/source/ap/vim/patches/7.3.643 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.643 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.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 /// diff --git a/source/ap/vim/patches/7.3.644 b/source/ap/vim/patches/7.3.644 new file mode 100644 index 00000000..6f2630cc --- /dev/null +++ b/source/ap/vim/patches/7.3.644 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.644 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.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 /// diff --git a/source/ap/vim/patches/7.3.645 b/source/ap/vim/patches/7.3.645 new file mode 100644 index 00000000..40d8ee0b --- /dev/null +++ b/source/ap/vim/patches/7.3.645 @@ -0,0 +1,118 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.645 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.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 /// diff --git a/source/ap/zsh/zsh.SlackBuild b/source/ap/zsh/zsh.SlackBuild index dc6dcf2a..7c0a46b3 100755 --- a/source/ap/zsh/zsh.SlackBuild +++ b/source/ap/zsh/zsh.SlackBuild @@ -21,7 +21,7 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PKGNAM=zsh -VERSION=${VERSION:-$(echo ${PKGNAM}-4.*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +VERSION=${VERSION:-$(echo ${PKGNAM}-5.*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: @@ -68,9 +68,6 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -# fix regex crash: -zcat $CWD/zsh.regex.oh.bah.diff.gz | patch -p0 --verbose || exit 1 - CFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ diff --git a/source/ap/zsh/zsh.regex.oh.bah.diff b/source/ap/zsh/zsh.regex.oh.bah.diff deleted file mode 100644 index 15e3d5b4..00000000 --- a/source/ap/zsh/zsh.regex.oh.bah.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- ./Src/text.c.orig 2010-09-14 09:46:26.000000000 -0500 -+++ ./Src/text.c 2011-03-19 18:50:22.270001467 -0500 -@@ -785,8 +785,7 @@ - taddstr(" "); - taddstr(ecgetstr(state, EC_NODUP, NULL)); - if (ctype == COND_STREQ || -- ctype == COND_STRNEQ || -- ctype == COND_REGEX) -+ ctype == COND_STRNEQ) - state->pc++; - } else { - /* Unary test: `-f foo' etc. */ |